努力了,就無怨無悔!有道是:天道籌勤!相信自己吧!你是最棒的!我會永遠支持你的!祝你考試取得好成績!以下是為大家整理的《專升本考試C語言模擬試題及參考答案【三篇】》希望對大家考試有幫助。
一.單項選擇題
1. 以下定義語句中正確的是 (C)
A)char a='A'b='B'; B)float a=b=10.0;
C)int a=10,*b= &a; D)float *a,b=&a;
2. 下列運算符中,優(yōu)先級的是 (A) 。
A. -> B. ++ C. && D. =
3. 表達式!(x>0&&y>0)等價于 (A) 。
A. ! (x>0) || ! (y>0) B. !x>0 || !y>0 C. !x>0 && !y>0 D. !(x>0) && ! (y>0)
4. 有以下程序
main()
{ int a=666,b=888;
printf( "%d\n",a,b);
}
程序運行后的輸出結果是(B)
A) 錯誤信息 B)666 C)888 D)666,888
5. 有以下程序
main()
{ int i;
for(i=0;i <3;i++)
switch(i)
{
case 0:printf( "%d",i);
case 2:printf( "%d",i);
default:printf( "%d",i);
}
}
程序運行后的輸出結果是 (C)
A)022111 B)021021 C)000122 D)012
6. 若x和y代表整型數(shù),以下表達式中不能正確表示數(shù)學關系|x-y|<10的是 (C)
A)abs(x-y)<10 B)x-y>-10&& x-y<10
C)!(x-y) <-10||!(y-x)>10 D)(x-y)*(x-y)<100
7. 數(shù)組定義為,int a[11][11]; 則數(shù)組a 的元素個數(shù)為: (D)
A. 12 B. 144 C. 100 D. 121
8. 對于以下的變量定義,不正確的表達式是:(D) 。
struct node {
int j , k ;
}x,*p=&x;
A. p->k=2; B. (*p).k=2; C. x . k=2 D. x->k=2
9. 不正確的賦值或賦初值的方式是 (B) 。
A. char str[ ]=”string”; B. char str[10]; str=”string”;
C. char *p=”string”; D. char *p; p=”string”;
10. 設程序中不再定義新的變量,寫出在函數(shù)main中可以使用的所有變量為:(B)
#include
int z;
int p(int x)
{ static int y;
return (x+y);
}
void main( )
{ int a,b;
printf(“%dn”, p(a));
………
}
A. a,b B. a,b,z C. a,b,y,z D. a,b,x,y,z
11.有以下程序
main()
{ int i=0,x=0;
for (;;)
{
if(i==3||i==5) continue;
if (i==6) break;
i++;
s+=i;
};
printf( "%d\n",s);
}
程序運行后的輸出結果是 (D)
A)10 B)13 C)21 D) 程序進入死循環(huán)
12.有以下程序
main()
{ char a,b,c,d;
scanf( "%c,%c,%d,%d",&a,&b,&c,&d);
printf( "c,%c,%c,%c\n",a,b,c,d);
}
若運行時從鍵盤上輸入:6,5,65,66<回車>。則輸出結果是(A)
A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6
13.s12和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句S;則以下選項中正確的是 (D)
A)if(s1 >s2)S; B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1) >0)S; D)if(strcmp(s1,s2)>0)S;
14.有以下定義和語句
int a[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
則*p[0]+1)所代表的數(shù)組元素是 (C)
A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]
15.程序中對fun函數(shù)有如下說明
void *fun();
此說明的含義是:(C)
A)fun 了數(shù)無返回值
B)fun 函數(shù)的返回值可以是任意的數(shù)據(jù)類型
C)fun 函數(shù)的返回值是無值型的指針類型
D) 指針fun指向一個函數(shù),該函數(shù)無返回值
16.有以下程序
void fun(int *a,int i,int j)
{ int t;
if(i { t=a;a=a[j];a[j]=t;
i++; j--;
fun(a,i,j);
}
}
main()
{ int x[]={2,6,18},i;
fun(x,0,3);
for(i=0;i <4;i++) printf("%2d",x);
printf( "\n");
}
程序運行后的輸出結果是 (C)
A)1 2 6 8 B) 8 6 2 1 C) 8 1 6 2 D)8 6 1 2
17. 有以下說明和定義語句
struct student
{ int age; char num[8];};
struct student stu[3]={{20, "200401"},{21,"200402"},{10\9,"200403"}};
struct student *p=stu;
以下選項中引用結構體變量成員的表達式錯誤的是 (D)
A) (p++)- >num B)p->num C)(*p).num D)stu[3].age
18.已定義ch為字符型變量,以下賦值語句中錯誤的是 (A)
A )ch='\'; B)ch=62+3; C)ch=NULL; D)ch='\xaa';
19.以下選項中不能正確把cl定義成結構體變量的是 (B)
A )typedef struct B)struct color cl
{ int red; { int red;
int green; int green;
int blue; int blue;
} COLOR; };
COLOR cl;
C )struct color D)struct
{ int red; { int red;
int green; int green;
int blue; int blue;
} cl; } cl;
20.有以下程序
fun(int a, int b)
{ if(a >b) return(a);
else return(b);
}
main()
{ int x=3, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf( "%d\n", r);
}
程序運行后的輸出結果是 (D)
A )3 B)6 C)8 D)12
21.有以下程序段
main()
{ int a=5,*b,**c;
c= &b; b=&a;
……
}
程序在執(zhí)行了c=&b;b=&a;語句后,表達式:**c的值是 (C)
A )變量a的地址 B)變量b中的值 C)變量a中的值 D)變量b的地址
22. 設有 int x=11; 則表達式 (x++ * 1/3) 的值是 (A)
A) 3 B) 4 C) 11 D) 12
23. 下列程序的輸出結果是 (C)
A) 3 B) 3.2 C) 0 D) 3.07
main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf( "%d \n", d*y);
}
24. 下列變量定義中合法的是 (A)
A) short _a=1-.le-1; B) double b=1+5e2.5;
C) long do=0xfdaL; D) float 2_and=1-e-3;
25. 以下循環(huán)體的執(zhí)行次數(shù)是 (C)
A) 3 B) 2 C) 1 D) 0
main()
{ int i,j;
for(i=0,j=1; i <=j+1; i+=2, j--)printf("%d \n",i);
}
26. 以下敘述正確的是 (D)
A) do-while 語句構成的循環(huán)不能用其它語句構成的循環(huán)來代替。
B) do-while 語句構成的循環(huán)只能用break語句退出。
C) 用do-while語句構成的循環(huán),在while后的表達式為非零時結束循環(huán)。
D) 用do-while語句構成的循環(huán),在while后的表達式為零時結束循環(huán)。
27. 下列程序執(zhí)行后的輸出結果是(A)
A) G B) H C) I D) J
main()
{ int x='f'; printf( "%c \n",'A'+(x-'a'+1)); }
28. 下列程序執(zhí)行后的輸出結果是 (A)
A) 6 B) 7 C) 8 D) 9
void func(int *a,int b[])
{ b[0]=*a+6; }
main()
{ int a,b[5];
a=0; b[0]=3;
func( &a,b); printf("%d \n,b[0]);
}
29. 下列程序的運行結果是 (B)
A) a=%2,b=%5 B) a=2,b=5
C) a=d, b=d D) a=%d,b=%d
#include
main()
{ int a=2,c=5;
printf( "a=%d,b=%d\n",a,c); }
30. 設有數(shù)組定義: char array [ ]="China"; 則數(shù)組 array所占的空間為 (C)
A) 4 個字節(jié) B) 5個字節(jié) C) 6個字節(jié) D) 7個字節(jié)
31. 下列程序的輸出結果是 (B)
A) 5 B) 6 C) 7 D) 8
struct abc
{ int a, b, c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0],a+s[1],b;
printf( "%d \n",t);
}
32. 若有以下調用語句,則不正確的fun函數(shù)的首部是 (C)
A) void fun(int m, int x[]) B) void fun(int s, int h[41])
C) void fun(int p, int *s) D) void fun(int n, int a)
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
}
33. 設已有定義: char *st="how are you"; 下列程序段中正確的是 (A)
A) char a[11], *p; strcpy(p=a+1, &st[4]);
B) char a[11]; strcpy(++a, st);
C) char a[11]; strcpy(a, st);
D) char a[], *p; strcpy(p= &a[1],st+2);
34. 下列程序執(zhí)行后的輸出結果是 (A)
A) you &ne B) you C) me D) err
mai()
{ char arr[2][4];
strcpy(arr, "you"); strcpy(arr[1],"me");
arr[0][3]=' &';
printf( "%s \n",arr);
}
35. 下列程序執(zhí)行后的輸出結果是 (B)
A) 6 B) 8 C) 10 D) 12
#define MA(x) x*(x-1)
main()
{ int a=1,b=2; printf( "%d \n",MA(1+a+b));}
36. 變量a所占內存字節(jié)數(shù)是 (C)
A) 4 B) 5 C) 6 D) 8
union U
{ char st[4];
int i;
long l;
};
struct A
{ int c;
union U u;
}a;
二、填空題
1. 表達式1<0<5的值是 1 。
3. 表達式 ~(10>>1^~5) 的值是 0 。
2. 設變量已正確定義,在程序段B中填入正確的內容,使程序段 A 和程序段B等價。
程序段 A
for(k=s=0;k<=10;s+=a[k++])
if(a[k]<0) break;
程序段B
for(k=0,s=0; ; s+=a[k++])
if( a[k]<0 || k>10 ) break;
3. 下列程序的輸出結果是 100 。
#define T 10
#define MD 3*T
printf(“%d”,30/MD);
4. 下列程序的輸出結果是 k=5, s=15 。
int k,s;
for(k=s=0;k<10&&s<=10;s+=k)
k++;
printf(“k=%d,s=%d”,k,s);
5. 下列程序的輸出結果是 5,9 。
#include
int f(int m)
{ static int k=2;
k++;
return k+m;
}
void main( )
{ int s;
s=f(2);
printf(“%d,%dn”,s,f(s));
}
6. 對于以下遞歸函數(shù)f,條用f(3)的返回值是 -2 。
f(int n)
{
return((n<=0)?n:f(n-1)+f(n-2));
}
7. 下列程序的輸出結果是 -10 。
int c[ ]={10,0,-10};
int *k=c+2;
printf(“%d”,*k--);
8. 下列程序的輸出結果是 2 1 。
int k=1,j=2,*p=&k,*q=p;
p=&j;
printf(“%d %d”,*p,*q);
9. 下列程序的輸出結果是 un, g 。
#include
char *f(char *str)
{ return str=”fun”;
}
void main( )
{ char *str=”one”;
printf(“%s,%cn”, f(str)+1,*f(str)+1);
}
10. 下列程序的輸出結果是 1,3 。
#include
void p(int *x,int y)
{ ++*x; y--; }
void main( )
{ int x=0,y=3;
p(&x,y);
printf(“%d,%d”x,y);
}
11. 下列程序的輸出結果是 1 0 0 1 。
#include
{ int j,k,a[2][2];
for(k=1;k<3;k++)
for(j=1;j<3;j++)
a[k-1][j-1]=(k/j)*(j/k);
for(k=0;k<2;k++)
for(j=0;j<2;j++)
printf(”%d”,a[k][j]);
}
12. 下面程序的功能是:計算1到10之間奇數(shù)之和及偶數(shù)之和,請?zhí)羁铡?BR> #include
main()
{ int a, b, c, i;
a=c=0;
for(i=0;i <10;i+=2)
{ a+=i;
b = i + 1 ;
c+=b;
}
printf( "偶數(shù)之和=%d\n",a);
printf( "奇數(shù)之和=%d\n",c-11);
}
13. 下面程序的功能是:輸出100以內能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?BR> #include
main()
{ int i, j;
for(i=0; i<10 ; i++)
{ j=i*10+6;
if( i % 3 != 0 ) continue;
printf( "%d",j);
}
}
一、單項選擇題
1. C語言源程序文件經(jīng)過C編譯程序編譯連接之后生成一個后綴為__C____的文件。
A、”.c” B、“.obj” C、“.exe” D、“.bas”
2. 以下選項中不正確的整型常量是_C____。
A、 12L B、 -10 C、 1,900 D、 123U
3. 表達式___C___的值是0。
A、3%5 B、3/5.0 C、3/5 D、3<5
4. 表達式 !(x>0||y>0) 等價于__D___。
A、!x>0||!y>0 B、!(x>0)||!(y>0) C、!x>0&&!y>0 D、!(x>0)&&!(y>0)
5. 若變量已正確定義并賦值,表達式__D____不符合C語言語法。
A、4&&3 B、+a C、a=b=5 D、int(3.14)
6. 若變量已正確定義,執(zhí)行語句scanf("%d%d%d ",&k1,&k2,&k3);時,___B___是正確的輸入。
A、2030,40 B、20 30 40 C、20, 30 40 D、20, 30,40
7. 執(zhí)行語句 printf(” __D____”, 2); 將得到出錯信息。
A、%d B、%o C、%x D、%f
8. 設變量定義為“int s[ ]="hello\nworld\n";”,則數(shù)組s中有__B____個元素。
A、12 B、13 C、14 D、15
9. 設變量定義為“int a[2]={1,3}, *p=&a[0]+1;”,則*p的值是___B__。
A、2 B、3 C、4 D、&a[0]+1
10. 若變量已正確定義并賦值,表達式 -k++ 等價于__A____。
A、-(k++) B、(-k)++ C、-(k+1) D、-(++k)
11. 在C 語言程序中,在函數(shù)內部定義的變量稱為__D____。
A、全局變量 B、全程變量 C、外部變量 D、內部變量
12. 若x是整型變量,表達式 (x=10.0/4.0) 的值是__D___ 。
A、2.5 B、 2.0 C、 3 D、2
13. 對于以下的變量定義,表達式__A____是正確的。
struct node {
char s[10];
int k;
} p[4];
A、p->k=2 B、p[0].s=“abc” C、p[0]->k=2 D、p->s=‘a’
14. 下列運算符中,優(yōu)先級從高到低依次為__D___。
A、&&,!,|| B、||,&&,! C、&&,||,! D、 !,&&,||
15. 下列程序段的輸出結果是__B___。
int *p, *q, k = 1, j=10 ;
p=&j; q = &k ; p = q ; (*p)++;
printf("%d",*q);
A、1 B、2 C、10 D、11
16. 以下各選項企圖說明一種新的類型名,其中正確的是水量 (C)
A) typedef v1 int; B) typedef v2=int;
C) typedefv1 int v3; D) typedef v4: int;
17. 以下選項中,非法的字符常量是 (C)
A) ‘\t’ B) ‘\17’ C )“n” D) ‘\xaa’
18. 以下程序的輸出結果是 (C)
main()
{ int i, a[10];
for(i=9;i >=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
19. 以下程序的輸出結果是(B)
main()
{ char st[20]= “hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
20. 以下程序的輸出結果是 (D)
main()
{ int a, b;
for(a=1, b=1; a <=100; a++)
{ if(b >=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf(“%d\n”,a);
}
A) 101 B) 6 C) 5 D) 4
21. 以下程序的輸出結果是 (D)
union myun
{ struct
{ int x, y, z; } u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(%d\n”,a.u.x);
}
A) 4 B) 5 C) 6 D) 0
22. 以下程序段的輸出結果是 (A)
char s[]= "\\141\141abc\t";
printf ( "%d\n",strlen(s));
A) 9 B) 12 C) 13 D) 14
23. 以下程序的輸出結果是 (B)
main()
{ char ch[3][5]={ "AAAA","BBB","CC"};
printf( "\"%s\"\n",ch[1]);
}
A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"
24. 不合法的main函數(shù)命令行參數(shù)表示形式是 (C)
A) main(int a,char *c[]) B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
25. 有以下程序
main()
{ char *s[]={ "one","two","three"},*p;
p=s[1];
printf( "%c,%s\n",*(p+1),s[0]);
}
執(zhí)行后輸出結果是 (C)
A) n,two B) t,one C)w,one D) o,two
26. 設有如下說明
typedef struct
{ int n; char c; double x;}STD;
則以下選項中,能正確定義結構體數(shù)組并賦初值的語句是 (A)
A) STD tt[2]={{1,'A',62},{2, 'B',75}};
B) STD tt[2]={1, "A",62},2, "B",75};
C) struct tt[2]={{1,'A'},{2, 'B'}};
D)structtt[2]={{1, "A",62.5},{2, "B",75.0}};
27. 若變量c為char類型,則能正確判斷出c為小寫字母的表達式是( D )。
A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')
C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')
二、填空題
1. 設ch是字符型變量,判斷ch為英文字母的表達式是:
(ch>=’A’&&ch,=’Z’)||(ch>=’a’&&ch<=’z’) __。
2. 計算下列分段函數(shù)的 if 語句是_ if(x>0)y=1;else if(x=0)y=0;else y=-1;___。
1 x>0
y= 0 x=0
-1 x<0
3. 表達式 !!5的值是__1____。
4. 下列程序段的輸出結果是___12___。
printf("%xn", (0x19 <<1) & 0x17);
5. 下列程序段的輸出結果是__ k=4 s=6___。
int k, s;
for(k=0, s=0; k<10; k++)
if (s>k) break ;
else s += k;
printf("k=%d s=%d", k, s);
6. 下列程序段的輸出結果是__15___。
#define MIN(x,y) (x)<(y)?(x) : (y)
printf("%d",10*MIN(10,15));
7. 下列程序在運行時可能會出錯,原因是__指針變量s未賦初值____。
# include
void main( )
{ char *s;
gets(s);
puts(s);
}
8. 下列程序段的輸出是___6 0__。
# include
int f(int m)
{ static int k=0;
int s=0;
for(; k<=m; k++) s++;
return s;
}
void main( )
{ int s1, s2;
s1=f(5);
s2=f(3);
printf("%d %d\n", s1, s2);
}
9. 下列程序段的輸出結果是__ fgh ___。
char *st[ ]={"abcd","efgh","ijkl","mnop"};
printf("%s", *(st+1)+1);
10. 用typedef定義一個含10個元素的整型數(shù)組ARR。
typedef int ARR[10];
11.以下程序調用findmax函數(shù)返回數(shù)組中的值,請?zhí)羁铡?BR> findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a
if ( *p>*s ) s=p;
return(*s);
}
main()
{ int x[5]={12,21,13,6,18};
printf( "%d\n",findmax(x,5));
}
三、程序(段)填空題
1.設變量x, y, z已正確定義和賦值,請仔細閱讀程序段A,然后在程序段B中填入正確的內容,使程序段A和程序段B有相同的功能。
程序段A
程序段B
x=x+y;
y=x-y;
x=x-y;
z=x+y;
z=x ;
x=y ;
y=z;
z=x+y;
2.請仔細閱讀函數(shù)f1,然后在函數(shù)f2中填入正確的內容,使函數(shù)f1和函數(shù)f2有相同的功能。
char *f1(char s[ ], char t[])
{ int k;
for(k=0; t[k]!=' '; k++)
s[k]=t[k];
s[k]=' ';
return s;
}
一、選擇題(1-30每小題1分,31-45每小題2分,共60分)
下列各題 A),B),C),D)四個選項,只有一個選項是正確的,請將正確的選項在答題卡相應位置上涂黑。答在試卷上不得分。
二進制數(shù)101110轉換為等值的八進制數(shù)是 【1】 。
【1】 A) 45 B) 56 C) 67 D) 78
CPU是由 【2】 組成的。
【2】 A) 內存儲器和控制器 B) 控制器和運算器
C) 內存儲器和運算器 D) 內存儲器、控制器和運算器
DOS是為IBM PC系列微型計算機及其兼容機所配置的 【3】 磁盤操作系統(tǒng)。
【3】 A) 多用戶多任務 B) 單用戶單任務 C) 分時 D) 分布式
啟動MS-DOS操作系統(tǒng)后, 【4】 已駐留內存。
【4】 A) COMMAND.COM B) DISKCOPY.COM C) FORMAT.COM D) CCCC.EXE
設驅動器B中軟盤上的目錄結構如下圖所示。
設當前目錄為F2,則把A盤根目錄下的PROG.BAS文件復制到B盤F3子目錄中的命令是 【5】 。
【5】 A) COPY PROG.BAS B: B) COPY A:PROG.BAS B:\
C) COPY A:\PROG.BAS B:\F3 D) COPY A:PROG.BAS B:\F3\
下面四組DOS命令中,意義完全相同的一組是 【6】 。
【6】 A) COPY和DISKCOPY B) COMP和DISKCOMP
C) DEL和RD D) RENAME和REN
防止軟盤感染病毒的有效方法是 【7】 。
【7】 A) 不要把軟盤和有毒軟盤放在一起 B) 在寫保護缺口上貼上膠條
C) 保持機房清潔 D) 定期對軟盤格式化
雙面高密度5英寸軟磁盤的容量是 【8】 。
【8】 A) 360KB B) 720KB C) 1.2MB D) 1.44MB
在FOXBASE中,可以使用的兩類變量是 【9】 。
【9】 A) 內存變量和字段變量 B) 全局變量和局部變量
C) 字段變量和簡單變量 D) 內存變量和自動變量
建立一個新子目錄的DOS命令是 【10】 。
【10】 A) CREATE B) RD C) MD D) CD
在C語言中,如果下面的變量都是int類型,則輸出的結果是 【11】 。
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
【11】 A) 7 B) 6 C) 5 D) 4
以下程序的輸出結果是 【12】 。
# include
main()
{ int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -); }
【12】 A) 11,10 B) 9,10 C) 010,9 D) 10,9
已知在ASCII代碼中,字母A的序號為65,以下程序的輸出的結果是 【13】 。
# include
main()
{ char c1='A', c2='Y';
printf( "%d,%d\n",c1,c2); }
【13】A) 因輸出格式不合法,輸出錯誤信息 B)65,90 C)A,Y D)65,89
指針s所指字符串的長度為 【14】 。
char *s="\\"Name\\Address\n";
【14】 A) 19 B) 15 C) 18 D) 說明不合法
設有說明int(*ptr)[m];其中的標識符ptr是 【15】 。
【15】 A)M個指向整型變量的指針
B)指向M個整型變量的函數(shù)指針
C)一個指向具有M個整型元素的一維數(shù)組的指針
D)具有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型量
語句while(!E);中的條件!E等價于 【16】 。
【16】 A)E = = 0 B)E!=1 C)E!=0 D)~E
以下程序的輸出結果是 【17】 。
# include
main()
{ printf( "%d\n",NULL); }
【17】 A) 不確定的(因變量無定義) B)0 C)-1 D)1
以下函數(shù)調用語句中含有 【18】 個實參。
func((exp1,exp2),(exp3,exp4,exp5));
【18】 A) 1 B) 2 C) 4 D) 5
設有以下語句:
char a=3,b=6,c;
c=a^b<<2;
則c的二進制值是 【19】 。
【19】 A) 00011011 B)00010100 C)00011100 D)00011000
下面的程序中 【20】 有錯誤(每行程序前面的數(shù)字是行號)。
1 #include
2 main()
3 {
4 float a[3]={0,0};
5 int i;
6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);
7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
【20】 A) 沒有 B)第4行 C)第6行 D)第8行
設有語句int a=3;則執(zhí)行了語句a+=a-=a*a;后,變量a的值是 【21】 。
【21】 A)3 B)0 C)9 D)-12
以下的for循環(huán) 【22】 。
for(x=0,y=0; (y!=123) &&(x<4); x + + );
【22】A) 是無限循環(huán) B)循環(huán)次數(shù)不定 C)執(zhí)行4次 D)執(zhí)行3次
設有語句char a='\72';則變量a 【23】 。
【23】A)包含1個字符 B)包含2個字符 C)包含3個字符 D)說明不合法
以下程序的輸出結果是 【24】 。
# include
# include
main()
{ int a=1,b=4,c=2;
float x=10..5 , y=4.0 , z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
pritnf( "%f\n",z); }
【24】A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000
sizeof(double)是 【25】 。
【25】 A)一種函數(shù)調用 B)一個雙精度型表達式
C)一個整型表達式 D)一個不合法的表達式
C語言中 【26】 。
【26】 A)不能使用do-while語句構成的循環(huán)
B)do-while語句構成的循環(huán)必須用break語句才能退出
C)do-while語句構成的循環(huán),當while語句中的表達式值為非零時結束循環(huán)
D)do-while語句構成的循環(huán),當while語句中的表達式值為零時結束循環(huán)
以下程序的輸出結果是 【27】 。
# include
# include
main()
{ char str[12]={'s','t','r','i','n','g'};
printf( "%d\n",strlen(str)); }
【27】 A) 6 B) 7 C) 11 D) 12
以下程序的輸出結果是 【28】 。
# include
main()
{ int a=2,c=5;
printf( "a=%%d,b=%%d\n",a,c); }
【28】A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
以下程序的輸出結果是 【29】 。
# include
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1) &&(-1);
printf( "%d,%d\n",a,b); }
【29】 A) 6,1 B) 2,1 C) 6,0 D) 2,0
以下程序的輸出結果是 【30】 。
# include
main()
{ int i;
for ( i=1;i <=5;i + + ) {if ( i%2 ) printf("*");
else continue; printf( "#");}
printf( "$\n"); }
【30】 A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
以下for語句構成的循環(huán)執(zhí)行了 【31】 次。
# include
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{ int i , n=0;
for ( i=1;i <=NUM;i + + );
{n + + ; printf( "%d",n); }
printf( "\n"); }
【31】 A) 5 B) 6 C) 8 D) 9
設有以下語句,則 【32】 不是對a數(shù)組元素的正確引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
【32】 A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
有以下程序:
# include
# define N 6
main()
{ char c[N]; int i=0;
for ( ;i for ( i=0 ; i 輸入以下三行,每行輸入都是在第一列上 開始,代表一個回車符:
a
b
cdef
程序的輸出結果是 【33】 。
【33】 A) abcdef B) a C) a D) a
b b b
c cd cdef
d
e
f
以下程序調用findmax函數(shù)求數(shù)組中值的元素在數(shù)組中的下標,請選擇填空。
# include
findmax ( s , t , k )
int *s , t , *k;
{ int p; for(p=0,*k=p;p if ( s[p] > s[*k] )_________; }
main()
{ int a[10] , i , k ;
for ( i=0 ; i <10 ; i + + ) scanf("%d",&a[i]);
findmax ( a,10, &k );
printf ( "%d,%d\n" , k , a[k] ); }
【34】 A) k=p B) *k=p-s C) k=p-s D) *k=p
有以下程序:
#include
union pw
{ int i; char ch[2]; } a;
main()
{ a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }
程序的輸出結果是 【35】 。(注意: ch[0]在低字節(jié),ch[1]在高字節(jié)。)
【35】 A) 13 B) 14 C) 208 D) 209
有以下程序:
# include
main()
{ int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
case 4: putchar(c+2);break; } }
printf( "\n"); }
從第一列開始輸入以下數(shù)據(jù),代表一個回車符。
2743
程序的輸出結果是 【36】 。
【36】 A) 668977 B) 668966 C) 6677877 D) 6688766
以下程序的輸出結果為 【37】 。
main()
{ char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};
char **p; int i;
p=alpha;
for(i=0;i <4;i + + ) printf("%s",p[i]); printf("\n"); }
【37】A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM
以下程序的輸出結果是 【38】 。
# include
# define FUDGE(y) 2.84+y
# define PR(a) printf("%d",(int)(a))
# define PRINT1(a) PR(a);putchar('\n')
main()
{int x=2; PRINT1(FUDGE(5)*x); }
【38】 A) 11 B) 12 C) 13 D) 15
以下程序的輸出結果是 【39】 。
# include
main()
{ int i=1,j=3;
printf( "%d",i + + );
{ int i=0; i+=j*2; printf( "%d,%d",i,j); }
printf( "%d,%d\n",i,j); }
【39】 A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3
以下程序的輸出結果是 【40】 。
# include
main()
{ int k=4,m=1,p;
p=func(k,m); printf( "%d,",p); p=func(k,m); printf("%d\n",p);}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1; m=i+a+b; return(m); }
【40】 A) 8,17 B) 8,16 C) 8,20 D) 8,8
設有以下語句:
char str[4][12]={"aaa","bbbb","ccccc","dddddd"},
*strp[4];
int i;
for(i=0;i<4;i + + )strp[i]=str[i];
【41】 不是對字符串的正確引用,其中0≤k <4。
【41】 A) strp B) str[k] C) strp[k] D) *strp
設有以下語句:
char str1[]="string",str2[8],*str3,*str4="string";
則 【42】 不是對庫函數(shù)strcpy的正確調用,此庫函數(shù)用業(yè)復制字符串。
【42】 A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3, "HELLO3"); D) strcpy(str4,"HELLO4");
C語言中形參的缺省存儲類別是 【43】 。
【43】A)自動(auto) B)靜態(tài)(static) C)寄存器(register) D)外部(extern)
設有以下語句:
struct st {int n; struct st *next;};
static struct st a[3]={5, &a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
則表達式 【44】 的值是6。
【44】 A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n
以下四個程序中, 【45】 不能對兩個整型變量的值進行交換。
【45】A)# include
main()
{ int a=10,b=20; swap(&a,&b);
printf( "%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int *t;
t=(int )malloc(sizeof(int));
t=p;*p=*q;*q=*t; }
B) # include
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d %d\n",a,b);
}
swap(p,q)
int p,q;
{
int *t;
t=*p;*p=*q;*q=t;
}
C) # include
main()
{
int *a,*b;
*a=10,*b=20;
swap(a,b);
printf("%d %d\n",*a,*b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}
D) # include
main()
{
int a=10,b=20;
int x=&a,y=&b;
swap(x,y);
printf("%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}
二、填空題(每空2分,共40分)
請將每空的正確答案寫在答題卡1-20序號后的橫線上,答在試卷上不得分。
結構化程序設計所規(guī)定的三種基本控制結構是 【1】 結構.選擇結構和循環(huán)結構。
在七位ASCII碼中,除了表示數(shù)字、英文大小寫字母外,還有 【2】 個其它符號。
把B盤BAS子目錄下第三個字符為A,且沒有擴展名的全部文件拷貝到C盤ABC子目錄下的命令是 【3】 。
微機中ROM的中文意義是 【4】 存儲器。
啟動MS-DOS系統(tǒng)后,能自動執(zhí)行的批處理文件是 【5】 .BAT。
設當前盤為C盤,刪除B盤FOX子目錄中擴展名為.TXT的所有文件的命令是 【6】 。
十進制數(shù)53轉換為十六進制數(shù)為 【7】 。
數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次、網(wǎng)狀和 【8】 三種。
買來一張新盤后,在存入文件前,必須進行 【9】 處理。
在微機中,字符的比較就是對它們的 【10】 碼進行比較。
以下C語言程序將磁盤中的一個文件復制到另一個文件中,兩個文件名在命令行中給出。
#include
main(argc,argv)
int argc; char *argv[];
{ FILE *f1,*f2; char ch;
if(argc < 【11】 )
{ printf("Parameters missing!\n"); exit(0); }
if( ((f1=fopen(argv[1], "r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL))
{ printf("Can not open file!\n"); exit(0);}
while( 【12】 )fputc(fgetc(f1),f2);
fclose(f1); fclose(f2); }
以下程序中的trap函數(shù)是一個用梯形法求定積分的通用函數(shù)。梯形法求定積分的公式為:
n-1 a-b
s=((f(a)+f(b))/2+∑ f(a+i*h))*h , h=|----|
i=1 n
其中,n為積分小區(qū)間數(shù)。以下程序調用trap函數(shù)求定積分,被積函數(shù)是:
f(x)=x*x+3*x+2,且n=1000,a=0,b=4。
#include
3include
double trap(fun,a,b)
double (*fun)(),a,b;
{ double t,h;
int i,n=1000;
t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n);
for(i=1;i <=n-1;i + + ) t=t+ 【13】 ;
t=t*h; return(t); }
double mypoly(x)
double x;
{ return(x*x+3.0*x+2.0); }
main()
{ double y,(*pf)(); pf= 【14】 ;
y=trap(pf,0.0,4.0); printf("%f\n",y); }
以下程序求a數(shù)組中的所有素數(shù)的和,函數(shù)isprime用來判斷自變量是否為素數(shù)。素數(shù)是只能被1和本身整除且大于1的自然數(shù)。
#include
main()
{ int i,a[10],*p=a,sum=0;
printf( "Enter 10 num:\n");
for(i=0;i <10;i + + ) scanf("%d",&a[i]);
for(i=0;i <10;i + + )
if(isprime(*(p+ 【15】 )) = = 1){ printf( "%d",*(a+i)); sum+=*(a+i); }
printf("\nThe sum=%d\n",sum); }
isprime(x)
int x;
{ int i; for(i=2;i<=x/2;i + + )
if(x%i = = 0) return (0); 【16】 ; }
以下程序調用invert函數(shù)按逆序重新放置a數(shù)組中元素的值。a數(shù)組中的值在main函數(shù)中讀入。
#include
#define N 10
invert(s,i,j)
int *s,i,j;
{ int t; if(i main()
{ int a[N],i;
for(i=0;i invert(a,0,N-1);
for(i=0;i printf( "\n"); }
以下程序建立了一個帶有頭結點的單向鏈表,鏈表結點中的數(shù)據(jù)通過鍵盤輸入,當輸入數(shù)據(jù)為-1時,表示輸入結束(鏈表頭結點的data 域不放數(shù)據(jù),表空的條件是ph->next = = NULL).
#include
struct list { int data;struct list *next;};
【19】 creatlist()
{ struct list *p,*q,*ph; int a;
ph=(struct list *) malloc(sizeof(struct list));
p=q=ph; printf( "Input an integer number,enter –1 to end:\n");
scanf( "%d",&a):
while(a!=-1)
{ p=(struct list *)malloc(sizeof(struct list));
p- >data=a; q->next=p; 【20】 =p; scanf("%d",&a); }
p->next='\0'; return(ph); }
main()
{ struct list *head; head=creatlist();}
[完]
C語言參考答案
選擇題([1]——[30]每個選項1分,[31]——[45]每個選項2分,共60分)
(1)B (2)B (3)B (4)A (5)C (6)D (7)B (8)C (9)A (10)C
(11)C (12)B (13)D (14)B (15)C (16)A (17)B (18)B (19)A (20)C
(21)D (22)C (23)A (24)C (25)C (26)D (27)A (28)D (29)B (30)A
(31)C (32)D (33)C (34)D (35)A (36)A (37)C (38)B (39)B (40)A
(41)A (42)C (43)A (44)D (45)C
二` 填空題(每空2分,共40分)
(1)順序
(2)66
(3) COPY B:\BAS\??A*.C:\ABC(或COPY B:\BAS\??A*.,C:\ABC)
(4)只讀
(5)AUTOEXEC
(6)DEL B:\FOX\*.TXT
(7)35
(8)關系
(9)格式化(或初始化、FORMAT)
(10)ASCII
(11)3
(12)!feof(f1)或feof(f1)==0
(13)(*fun)(a+i*h)
(14) mypoly
(15)I
(16)return 1 或 return (1)
(17)i+1
(18) I
(19) struct list *
(20) q
一.單項選擇題
1. 以下定義語句中正確的是 (C)
A)char a='A'b='B'; B)float a=b=10.0;
C)int a=10,*b= &a; D)float *a,b=&a;
2. 下列運算符中,優(yōu)先級的是 (A) 。
A. -> B. ++ C. && D. =
3. 表達式!(x>0&&y>0)等價于 (A) 。
A. ! (x>0) || ! (y>0) B. !x>0 || !y>0 C. !x>0 && !y>0 D. !(x>0) && ! (y>0)
4. 有以下程序
main()
{ int a=666,b=888;
printf( "%d\n",a,b);
}
程序運行后的輸出結果是(B)
A) 錯誤信息 B)666 C)888 D)666,888
5. 有以下程序
main()
{ int i;
for(i=0;i <3;i++)
switch(i)
{
case 0:printf( "%d",i);
case 2:printf( "%d",i);
default:printf( "%d",i);
}
}
程序運行后的輸出結果是 (C)
A)022111 B)021021 C)000122 D)012
6. 若x和y代表整型數(shù),以下表達式中不能正確表示數(shù)學關系|x-y|<10的是 (C)
A)abs(x-y)<10 B)x-y>-10&& x-y<10
C)!(x-y) <-10||!(y-x)>10 D)(x-y)*(x-y)<100
7. 數(shù)組定義為,int a[11][11]; 則數(shù)組a 的元素個數(shù)為: (D)
A. 12 B. 144 C. 100 D. 121
8. 對于以下的變量定義,不正確的表達式是:(D) 。
struct node {
int j , k ;
}x,*p=&x;
A. p->k=2; B. (*p).k=2; C. x . k=2 D. x->k=2
9. 不正確的賦值或賦初值的方式是 (B) 。
A. char str[ ]=”string”; B. char str[10]; str=”string”;
C. char *p=”string”; D. char *p; p=”string”;
10. 設程序中不再定義新的變量,寫出在函數(shù)main中可以使用的所有變量為:(B)
#include
int z;
int p(int x)
{ static int y;
return (x+y);
}
void main( )
{ int a,b;
printf(“%dn”, p(a));
………
}
A. a,b B. a,b,z C. a,b,y,z D. a,b,x,y,z
11.有以下程序
main()
{ int i=0,x=0;
for (;;)
{
if(i==3||i==5) continue;
if (i==6) break;
i++;
s+=i;
};
printf( "%d\n",s);
}
程序運行后的輸出結果是 (D)
A)10 B)13 C)21 D) 程序進入死循環(huán)
12.有以下程序
main()
{ char a,b,c,d;
scanf( "%c,%c,%d,%d",&a,&b,&c,&d);
printf( "c,%c,%c,%c\n",a,b,c,d);
}
若運行時從鍵盤上輸入:6,5,65,66<回車>。則輸出結果是(A)
A)6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6
13.s12和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句S;則以下選項中正確的是 (D)
A)if(s1 >s2)S; B)if(strcmp(s1,s2))S;
C)if(strcmp(s2,s1) >0)S; D)if(strcmp(s1,s2)>0)S;
14.有以下定義和語句
int a[3][2]={1,2,3,4,5,6,},*p[3];
p[0]=a[1];
則*p[0]+1)所代表的數(shù)組元素是 (C)
A)a[0][1] B)a[1][0] C)a[1][1] D)a[1][2]
15.程序中對fun函數(shù)有如下說明
void *fun();
此說明的含義是:(C)
A)fun 了數(shù)無返回值
B)fun 函數(shù)的返回值可以是任意的數(shù)據(jù)類型
C)fun 函數(shù)的返回值是無值型的指針類型
D) 指針fun指向一個函數(shù),該函數(shù)無返回值
16.有以下程序
void fun(int *a,int i,int j)
{ int t;
if(i
i++; j--;
fun(a,i,j);
}
}
main()
{ int x[]={2,6,18},i;
fun(x,0,3);
for(i=0;i <4;i++) printf("%2d",x);
printf( "\n");
}
程序運行后的輸出結果是 (C)
A)1 2 6 8 B) 8 6 2 1 C) 8 1 6 2 D)8 6 1 2
17. 有以下說明和定義語句
struct student
{ int age; char num[8];};
struct student stu[3]={{20, "200401"},{21,"200402"},{10\9,"200403"}};
struct student *p=stu;
以下選項中引用結構體變量成員的表達式錯誤的是 (D)
A) (p++)- >num B)p->num C)(*p).num D)stu[3].age
18.已定義ch為字符型變量,以下賦值語句中錯誤的是 (A)
A )ch='\'; B)ch=62+3; C)ch=NULL; D)ch='\xaa';
19.以下選項中不能正確把cl定義成結構體變量的是 (B)
A )typedef struct B)struct color cl
{ int red; { int red;
int green; int green;
int blue; int blue;
} COLOR; };
COLOR cl;
C )struct color D)struct
{ int red; { int red;
int green; int green;
int blue; int blue;
} cl; } cl;
20.有以下程序
fun(int a, int b)
{ if(a >b) return(a);
else return(b);
}
main()
{ int x=3, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf( "%d\n", r);
}
程序運行后的輸出結果是 (D)
A )3 B)6 C)8 D)12
21.有以下程序段
main()
{ int a=5,*b,**c;
c= &b; b=&a;
……
}
程序在執(zhí)行了c=&b;b=&a;語句后,表達式:**c的值是 (C)
A )變量a的地址 B)變量b中的值 C)變量a中的值 D)變量b的地址
22. 設有 int x=11; 則表達式 (x++ * 1/3) 的值是 (A)
A) 3 B) 4 C) 11 D) 12
23. 下列程序的輸出結果是 (C)
A) 3 B) 3.2 C) 0 D) 3.07
main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf( "%d \n", d*y);
}
24. 下列變量定義中合法的是 (A)
A) short _a=1-.le-1; B) double b=1+5e2.5;
C) long do=0xfdaL; D) float 2_and=1-e-3;
25. 以下循環(huán)體的執(zhí)行次數(shù)是 (C)
A) 3 B) 2 C) 1 D) 0
main()
{ int i,j;
for(i=0,j=1; i <=j+1; i+=2, j--)printf("%d \n",i);
}
26. 以下敘述正確的是 (D)
A) do-while 語句構成的循環(huán)不能用其它語句構成的循環(huán)來代替。
B) do-while 語句構成的循環(huán)只能用break語句退出。
C) 用do-while語句構成的循環(huán),在while后的表達式為非零時結束循環(huán)。
D) 用do-while語句構成的循環(huán),在while后的表達式為零時結束循環(huán)。
27. 下列程序執(zhí)行后的輸出結果是(A)
A) G B) H C) I D) J
main()
{ int x='f'; printf( "%c \n",'A'+(x-'a'+1)); }
28. 下列程序執(zhí)行后的輸出結果是 (A)
A) 6 B) 7 C) 8 D) 9
void func(int *a,int b[])
{ b[0]=*a+6; }
main()
{ int a,b[5];
a=0; b[0]=3;
func( &a,b); printf("%d \n,b[0]);
}
29. 下列程序的運行結果是 (B)
A) a=%2,b=%5 B) a=2,b=5
C) a=d, b=d D) a=%d,b=%d
#include
main()
{ int a=2,c=5;
printf( "a=%d,b=%d\n",a,c); }
30. 設有數(shù)組定義: char array [ ]="China"; 則數(shù)組 array所占的空間為 (C)
A) 4 個字節(jié) B) 5個字節(jié) C) 6個字節(jié) D) 7個字節(jié)
31. 下列程序的輸出結果是 (B)
A) 5 B) 6 C) 7 D) 8
struct abc
{ int a, b, c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0],a+s[1],b;
printf( "%d \n",t);
}
32. 若有以下調用語句,則不正確的fun函數(shù)的首部是 (C)
A) void fun(int m, int x[]) B) void fun(int s, int h[41])
C) void fun(int p, int *s) D) void fun(int n, int a)
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
}
33. 設已有定義: char *st="how are you"; 下列程序段中正確的是 (A)
A) char a[11], *p; strcpy(p=a+1, &st[4]);
B) char a[11]; strcpy(++a, st);
C) char a[11]; strcpy(a, st);
D) char a[], *p; strcpy(p= &a[1],st+2);
34. 下列程序執(zhí)行后的輸出結果是 (A)
A) you &ne B) you C) me D) err
mai()
{ char arr[2][4];
strcpy(arr, "you"); strcpy(arr[1],"me");
arr[0][3]=' &';
printf( "%s \n",arr);
}
35. 下列程序執(zhí)行后的輸出結果是 (B)
A) 6 B) 8 C) 10 D) 12
#define MA(x) x*(x-1)
main()
{ int a=1,b=2; printf( "%d \n",MA(1+a+b));}
36. 變量a所占內存字節(jié)數(shù)是 (C)
A) 4 B) 5 C) 6 D) 8
union U
{ char st[4];
int i;
long l;
};
struct A
{ int c;
union U u;
}a;
二、填空題
1. 表達式1<0<5的值是 1 。
3. 表達式 ~(10>>1^~5) 的值是 0 。
2. 設變量已正確定義,在程序段B中填入正確的內容,使程序段 A 和程序段B等價。
程序段 A
for(k=s=0;k<=10;s+=a[k++])
if(a[k]<0) break;
程序段B
for(k=0,s=0; ; s+=a[k++])
if( a[k]<0 || k>10 ) break;
3. 下列程序的輸出結果是 100 。
#define T 10
#define MD 3*T
printf(“%d”,30/MD);
4. 下列程序的輸出結果是 k=5, s=15 。
int k,s;
for(k=s=0;k<10&&s<=10;s+=k)
k++;
printf(“k=%d,s=%d”,k,s);
5. 下列程序的輸出結果是 5,9 。
#include
int f(int m)
{ static int k=2;
k++;
return k+m;
}
void main( )
{ int s;
s=f(2);
printf(“%d,%dn”,s,f(s));
}
6. 對于以下遞歸函數(shù)f,條用f(3)的返回值是 -2 。
f(int n)
{
return((n<=0)?n:f(n-1)+f(n-2));
}
7. 下列程序的輸出結果是 -10 。
int c[ ]={10,0,-10};
int *k=c+2;
printf(“%d”,*k--);
8. 下列程序的輸出結果是 2 1 。
int k=1,j=2,*p=&k,*q=p;
p=&j;
printf(“%d %d”,*p,*q);
9. 下列程序的輸出結果是 un, g 。
#include
char *f(char *str)
{ return str=”fun”;
}
void main( )
{ char *str=”one”;
printf(“%s,%cn”, f(str)+1,*f(str)+1);
}
10. 下列程序的輸出結果是 1,3 。
#include
void p(int *x,int y)
{ ++*x; y--; }
void main( )
{ int x=0,y=3;
p(&x,y);
printf(“%d,%d”x,y);
}
11. 下列程序的輸出結果是 1 0 0 1 。
#include
{ int j,k,a[2][2];
for(k=1;k<3;k++)
for(j=1;j<3;j++)
a[k-1][j-1]=(k/j)*(j/k);
for(k=0;k<2;k++)
for(j=0;j<2;j++)
printf(”%d”,a[k][j]);
}
12. 下面程序的功能是:計算1到10之間奇數(shù)之和及偶數(shù)之和,請?zhí)羁铡?BR> #include
main()
{ int a, b, c, i;
a=c=0;
for(i=0;i <10;i+=2)
{ a+=i;
b = i + 1 ;
c+=b;
}
printf( "偶數(shù)之和=%d\n",a);
printf( "奇數(shù)之和=%d\n",c-11);
}
13. 下面程序的功能是:輸出100以內能被3整除且個位數(shù)為6的所有整數(shù),請?zhí)羁铡?BR> #include
main()
{ int i, j;
for(i=0; i<10 ; i++)
{ j=i*10+6;
if( i % 3 != 0 ) continue;
printf( "%d",j);
}
}
一、單項選擇題
1. C語言源程序文件經(jīng)過C編譯程序編譯連接之后生成一個后綴為__C____的文件。
A、”.c” B、“.obj” C、“.exe” D、“.bas”
2. 以下選項中不正確的整型常量是_C____。
A、 12L B、 -10 C、 1,900 D、 123U
3. 表達式___C___的值是0。
A、3%5 B、3/5.0 C、3/5 D、3<5
4. 表達式 !(x>0||y>0) 等價于__D___。
A、!x>0||!y>0 B、!(x>0)||!(y>0) C、!x>0&&!y>0 D、!(x>0)&&!(y>0)
5. 若變量已正確定義并賦值,表達式__D____不符合C語言語法。
A、4&&3 B、+a C、a=b=5 D、int(3.14)
6. 若變量已正確定義,執(zhí)行語句scanf("%d%d%d ",&k1,&k2,&k3);時,___B___是正確的輸入。
A、2030,40 B、20 30 40 C、20, 30 40 D、20, 30,40
7. 執(zhí)行語句 printf(” __D____”, 2); 將得到出錯信息。
A、%d B、%o C、%x D、%f
8. 設變量定義為“int s[ ]="hello\nworld\n";”,則數(shù)組s中有__B____個元素。
A、12 B、13 C、14 D、15
9. 設變量定義為“int a[2]={1,3}, *p=&a[0]+1;”,則*p的值是___B__。
A、2 B、3 C、4 D、&a[0]+1
10. 若變量已正確定義并賦值,表達式 -k++ 等價于__A____。
A、-(k++) B、(-k)++ C、-(k+1) D、-(++k)
11. 在C 語言程序中,在函數(shù)內部定義的變量稱為__D____。
A、全局變量 B、全程變量 C、外部變量 D、內部變量
12. 若x是整型變量,表達式 (x=10.0/4.0) 的值是__D___ 。
A、2.5 B、 2.0 C、 3 D、2
13. 對于以下的變量定義,表達式__A____是正確的。
struct node {
char s[10];
int k;
} p[4];
A、p->k=2 B、p[0].s=“abc” C、p[0]->k=2 D、p->s=‘a’
14. 下列運算符中,優(yōu)先級從高到低依次為__D___。
A、&&,!,|| B、||,&&,! C、&&,||,! D、 !,&&,||
15. 下列程序段的輸出結果是__B___。
int *p, *q, k = 1, j=10 ;
p=&j; q = &k ; p = q ; (*p)++;
printf("%d",*q);
A、1 B、2 C、10 D、11
16. 以下各選項企圖說明一種新的類型名,其中正確的是水量 (C)
A) typedef v1 int; B) typedef v2=int;
C) typedefv1 int v3; D) typedef v4: int;
17. 以下選項中,非法的字符常量是 (C)
A) ‘\t’ B) ‘\17’ C )“n” D) ‘\xaa’
18. 以下程序的輸出結果是 (C)
main()
{ int i, a[10];
for(i=9;i >=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A) 258 B) 741 C) 852 D) 369
19. 以下程序的輸出結果是(B)
main()
{ char st[20]= “hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A) 9 9 B) 5 20 C) 13 20 D) 20 20
20. 以下程序的輸出結果是 (D)
main()
{ int a, b;
for(a=1, b=1; a <=100; a++)
{ if(b >=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf(“%d\n”,a);
}
A) 101 B) 6 C) 5 D) 4
21. 以下程序的輸出結果是 (D)
union myun
{ struct
{ int x, y, z; } u;
int k;
} a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(%d\n”,a.u.x);
}
A) 4 B) 5 C) 6 D) 0
22. 以下程序段的輸出結果是 (A)
char s[]= "\\141\141abc\t";
printf ( "%d\n",strlen(s));
A) 9 B) 12 C) 13 D) 14
23. 以下程序的輸出結果是 (B)
main()
{ char ch[3][5]={ "AAAA","BBB","CC"};
printf( "\"%s\"\n",ch[1]);
}
A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"
24. 不合法的main函數(shù)命令行參數(shù)表示形式是 (C)
A) main(int a,char *c[]) B) main(int arc,char **arv)
C) main(int argc,char *argv) D) main(int argv,char *argc[])
25. 有以下程序
main()
{ char *s[]={ "one","two","three"},*p;
p=s[1];
printf( "%c,%s\n",*(p+1),s[0]);
}
執(zhí)行后輸出結果是 (C)
A) n,two B) t,one C)w,one D) o,two
26. 設有如下說明
typedef struct
{ int n; char c; double x;}STD;
則以下選項中,能正確定義結構體數(shù)組并賦初值的語句是 (A)
A) STD tt[2]={{1,'A',62},{2, 'B',75}};
B) STD tt[2]={1, "A",62},2, "B",75};
C) struct tt[2]={{1,'A'},{2, 'B'}};
D)structtt[2]={{1, "A",62.5},{2, "B",75.0}};
27. 若變量c為char類型,則能正確判斷出c為小寫字母的表達式是( D )。
A) 'a'<=c<= 'z' B) (c>= 'a')||(c<= 'z')
C) ('a'<=c)and ('z'>=c) D) (c>= 'a')&&(c<= 'z')
二、填空題
1. 設ch是字符型變量,判斷ch為英文字母的表達式是:
(ch>=’A’&&ch,=’Z’)||(ch>=’a’&&ch<=’z’) __。
2. 計算下列分段函數(shù)的 if 語句是_ if(x>0)y=1;else if(x=0)y=0;else y=-1;___。
1 x>0
y= 0 x=0
-1 x<0
3. 表達式 !!5的值是__1____。
4. 下列程序段的輸出結果是___12___。
printf("%xn", (0x19 <<1) & 0x17);
5. 下列程序段的輸出結果是__ k=4 s=6___。
int k, s;
for(k=0, s=0; k<10; k++)
if (s>k) break ;
else s += k;
printf("k=%d s=%d", k, s);
6. 下列程序段的輸出結果是__15___。
#define MIN(x,y) (x)<(y)?(x) : (y)
printf("%d",10*MIN(10,15));
7. 下列程序在運行時可能會出錯,原因是__指針變量s未賦初值____。
# include
void main( )
{ char *s;
gets(s);
puts(s);
}
8. 下列程序段的輸出是___6 0__。
# include
int f(int m)
{ static int k=0;
int s=0;
for(; k<=m; k++) s++;
return s;
}
void main( )
{ int s1, s2;
s1=f(5);
s2=f(3);
printf("%d %d\n", s1, s2);
}
9. 下列程序段的輸出結果是__ fgh ___。
char *st[ ]={"abcd","efgh","ijkl","mnop"};
printf("%s", *(st+1)+1);
10. 用typedef定義一個含10個元素的整型數(shù)組ARR。
typedef int ARR[10];
11.以下程序調用findmax函數(shù)返回數(shù)組中的值,請?zhí)羁铡?BR> findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a
if ( *p>*s ) s=p;
return(*s);
}
main()
{ int x[5]={12,21,13,6,18};
printf( "%d\n",findmax(x,5));
}
三、程序(段)填空題
1.設變量x, y, z已正確定義和賦值,請仔細閱讀程序段A,然后在程序段B中填入正確的內容,使程序段A和程序段B有相同的功能。
程序段A
程序段B
x=x+y;
y=x-y;
x=x-y;
z=x+y;
z=x ;
x=y ;
y=z;
z=x+y;
2.請仔細閱讀函數(shù)f1,然后在函數(shù)f2中填入正確的內容,使函數(shù)f1和函數(shù)f2有相同的功能。
char *f1(char s[ ], char t[])
{ int k;
for(k=0; t[k]!=' '; k++)
s[k]=t[k];
s[k]=' ';
return s;
}
一、選擇題(1-30每小題1分,31-45每小題2分,共60分)
下列各題 A),B),C),D)四個選項,只有一個選項是正確的,請將正確的選項在答題卡相應位置上涂黑。答在試卷上不得分。
二進制數(shù)101110轉換為等值的八進制數(shù)是 【1】 。
【1】 A) 45 B) 56 C) 67 D) 78
CPU是由 【2】 組成的。
【2】 A) 內存儲器和控制器 B) 控制器和運算器
C) 內存儲器和運算器 D) 內存儲器、控制器和運算器
DOS是為IBM PC系列微型計算機及其兼容機所配置的 【3】 磁盤操作系統(tǒng)。
【3】 A) 多用戶多任務 B) 單用戶單任務 C) 分時 D) 分布式
啟動MS-DOS操作系統(tǒng)后, 【4】 已駐留內存。
【4】 A) COMMAND.COM B) DISKCOPY.COM C) FORMAT.COM D) CCCC.EXE
設驅動器B中軟盤上的目錄結構如下圖所示。
設當前目錄為F2,則把A盤根目錄下的PROG.BAS文件復制到B盤F3子目錄中的命令是 【5】 。
【5】 A) COPY PROG.BAS B: B) COPY A:PROG.BAS B:\
C) COPY A:\PROG.BAS B:\F3 D) COPY A:PROG.BAS B:\F3\
下面四組DOS命令中,意義完全相同的一組是 【6】 。
【6】 A) COPY和DISKCOPY B) COMP和DISKCOMP
C) DEL和RD D) RENAME和REN
防止軟盤感染病毒的有效方法是 【7】 。
【7】 A) 不要把軟盤和有毒軟盤放在一起 B) 在寫保護缺口上貼上膠條
C) 保持機房清潔 D) 定期對軟盤格式化
雙面高密度5英寸軟磁盤的容量是 【8】 。
【8】 A) 360KB B) 720KB C) 1.2MB D) 1.44MB
在FOXBASE中,可以使用的兩類變量是 【9】 。
【9】 A) 內存變量和字段變量 B) 全局變量和局部變量
C) 字段變量和簡單變量 D) 內存變量和自動變量
建立一個新子目錄的DOS命令是 【10】 。
【10】 A) CREATE B) RD C) MD D) CD
在C語言中,如果下面的變量都是int類型,則輸出的結果是 【11】 。
sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;
printf("%d\n",pad);
【11】 A) 7 B) 6 C) 5 D) 4
以下程序的輸出結果是 【12】 。
# include
main()
{ int i=010 , j = 10;
printf("%d,%d\n",+ +i , j - -); }
【12】 A) 11,10 B) 9,10 C) 010,9 D) 10,9
已知在ASCII代碼中,字母A的序號為65,以下程序的輸出的結果是 【13】 。
# include
main()
{ char c1='A', c2='Y';
printf( "%d,%d\n",c1,c2); }
【13】A) 因輸出格式不合法,輸出錯誤信息 B)65,90 C)A,Y D)65,89
指針s所指字符串的長度為 【14】 。
char *s="\\"Name\\Address\n";
【14】 A) 19 B) 15 C) 18 D) 說明不合法
設有說明int(*ptr)[m];其中的標識符ptr是 【15】 。
【15】 A)M個指向整型變量的指針
B)指向M個整型變量的函數(shù)指針
C)一個指向具有M個整型元素的一維數(shù)組的指針
D)具有M個指針元素的一維指針數(shù)組,每個元素都只能指向整型量
語句while(!E);中的條件!E等價于 【16】 。
【16】 A)E = = 0 B)E!=1 C)E!=0 D)~E
以下程序的輸出結果是 【17】 。
# include
main()
{ printf( "%d\n",NULL); }
【17】 A) 不確定的(因變量無定義) B)0 C)-1 D)1
以下函數(shù)調用語句中含有 【18】 個實參。
func((exp1,exp2),(exp3,exp4,exp5));
【18】 A) 1 B) 2 C) 4 D) 5
設有以下語句:
char a=3,b=6,c;
c=a^b<<2;
則c的二進制值是 【19】 。
【19】 A) 00011011 B)00010100 C)00011100 D)00011000
下面的程序中 【20】 有錯誤(每行程序前面的數(shù)字是行號)。
1 #include
2 main()
3 {
4 float a[3]={0,0};
5 int i;
6 for(i=0;i<3;i + + ) scanf("%d",&a[i]);
7 for(i=1;i<3;i + + ) a[0]=a[0]+a[i];
8 printf("%f\n",a[0]);
9 }
【20】 A) 沒有 B)第4行 C)第6行 D)第8行
設有語句int a=3;則執(zhí)行了語句a+=a-=a*a;后,變量a的值是 【21】 。
【21】 A)3 B)0 C)9 D)-12
以下的for循環(huán) 【22】 。
for(x=0,y=0; (y!=123) &&(x<4); x + + );
【22】A) 是無限循環(huán) B)循環(huán)次數(shù)不定 C)執(zhí)行4次 D)執(zhí)行3次
設有語句char a='\72';則變量a 【23】 。
【23】A)包含1個字符 B)包含2個字符 C)包含3個字符 D)說明不合法
以下程序的輸出結果是 【24】 。
# include
# include
main()
{ int a=1,b=4,c=2;
float x=10..5 , y=4.0 , z;
z=(a+b)/c+sqrt((double)y)*1.2/c+x;
pritnf( "%f\n",z); }
【24】A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000
sizeof(double)是 【25】 。
【25】 A)一種函數(shù)調用 B)一個雙精度型表達式
C)一個整型表達式 D)一個不合法的表達式
C語言中 【26】 。
【26】 A)不能使用do-while語句構成的循環(huán)
B)do-while語句構成的循環(huán)必須用break語句才能退出
C)do-while語句構成的循環(huán),當while語句中的表達式值為非零時結束循環(huán)
D)do-while語句構成的循環(huán),當while語句中的表達式值為零時結束循環(huán)
以下程序的輸出結果是 【27】 。
# include
# include
main()
{ char str[12]={'s','t','r','i','n','g'};
printf( "%d\n",strlen(str)); }
【27】 A) 6 B) 7 C) 11 D) 12
以下程序的輸出結果是 【28】 。
# include
main()
{ int a=2,c=5;
printf( "a=%%d,b=%%d\n",a,c); }
【28】A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d
以下程序的輸出結果是 【29】 。
# include
main()
{ int a ,b,d=241;
a=d/100%9;
b=(-1) &&(-1);
printf( "%d,%d\n",a,b); }
【29】 A) 6,1 B) 2,1 C) 6,0 D) 2,0
以下程序的輸出結果是 【30】 。
# include
main()
{ int i;
for ( i=1;i <=5;i + + ) {if ( i%2 ) printf("*");
else continue; printf( "#");}
printf( "$\n"); }
【30】 A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$
以下for語句構成的循環(huán)執(zhí)行了 【31】 次。
# include
# define N 2
# define M N+1
# define NUM (M+1)*M/2
main()
{ int i , n=0;
for ( i=1;i <=NUM;i + + );
{n + + ; printf( "%d",n); }
printf( "\n"); }
【31】 A) 5 B) 6 C) 8 D) 9
設有以下語句,則 【32】 不是對a數(shù)組元素的正確引用,其中0≤i<10。
int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;
【32】 A) a[p-a] B) *(&a[i]) C) p[i] D) *(*(a+i))
有以下程序:
# include
# define N 6
main()
{ char c[N]; int i=0;
for ( ;i
a
b
cdef
程序的輸出結果是 【33】 。
【33】 A) abcdef B) a C) a D) a
b b b
c cd cdef
d
e
f
以下程序調用findmax函數(shù)求數(shù)組中值的元素在數(shù)組中的下標,請選擇填空。
# include
findmax ( s , t , k )
int *s , t , *k;
{ int p; for(p=0,*k=p;p
main()
{ int a[10] , i , k ;
for ( i=0 ; i <10 ; i + + ) scanf("%d",&a[i]);
findmax ( a,10, &k );
printf ( "%d,%d\n" , k , a[k] ); }
【34】 A) k=p B) *k=p-s C) k=p-s D) *k=p
有以下程序:
#include
union pw
{ int i; char ch[2]; } a;
main()
{ a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }
程序的輸出結果是 【35】 。(注意: ch[0]在低字節(jié),ch[1]在高字節(jié)。)
【35】 A) 13 B) 14 C) 208 D) 209
有以下程序:
# include
main()
{ int c;
while((c=getchar())!='\n')
{ switch(c-'2')
{ case 0:
case 1: putchar(c+4);
case 2: putchar(c+4);break;
case 3: putchar(c+3);
case 4: putchar(c+2);break; } }
printf( "\n"); }
從第一列開始輸入以下數(shù)據(jù),
2743
程序的輸出結果是 【36】 。
【36】 A) 668977 B) 668966 C) 6677877 D) 6688766
以下程序的輸出結果為 【37】 。
main()
{ char *alpha[6]={"ABCD","IJKL","MNOP","QRST","UVWX"};
char **p; int i;
p=alpha;
for(i=0;i <4;i + + ) printf("%s",p[i]); printf("\n"); }
【37】A) ABCDEFGHIJKL B) ABCD C) ABCDEFGHIJKLMNOP D) AEIM
以下程序的輸出結果是 【38】 。
# include
# define FUDGE(y) 2.84+y
# define PR(a) printf("%d",(int)(a))
# define PRINT1(a) PR(a);putchar('\n')
main()
{int x=2; PRINT1(FUDGE(5)*x); }
【38】 A) 11 B) 12 C) 13 D) 15
以下程序的輸出結果是 【39】 。
# include
main()
{ int i=1,j=3;
printf( "%d",i + + );
{ int i=0; i+=j*2; printf( "%d,%d",i,j); }
printf( "%d,%d\n",i,j); }
【39】 A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 D) 1,7,3,2,3
以下程序的輸出結果是 【40】 。
# include
main()
{ int k=4,m=1,p;
p=func(k,m); printf( "%d,",p); p=func(k,m); printf("%d\n",p);}
func(a,b)
int a,b;
{ static int m=0,i=2;
i+=m+1; m=i+a+b; return(m); }
【40】 A) 8,17 B) 8,16 C) 8,20 D) 8,8
設有以下語句:
char str[4][12]={"aaa","bbbb","ccccc","dddddd"},
*strp[4];
int i;
for(i=0;i<4;i + + )strp[i]=str[i];
【41】 不是對字符串的正確引用,其中0≤k <4。
【41】 A) strp B) str[k] C) strp[k] D) *strp
設有以下語句:
char str1[]="string",str2[8],*str3,*str4="string";
則 【42】 不是對庫函數(shù)strcpy的正確調用,此庫函數(shù)用業(yè)復制字符串。
【42】 A) strcpy(str1,"HELLO1"); B) strcpy(str2,"HELLO2");
C) strcpy(str3, "HELLO3"); D) strcpy(str4,"HELLO4");
C語言中形參的缺省存儲類別是 【43】 。
【43】A)自動(auto) B)靜態(tài)(static) C)寄存器(register) D)外部(extern)
設有以下語句:
struct st {int n; struct st *next;};
static struct st a[3]={5, &a[1],7,&a[2],9,'\0'},*p;
p=&a[0];
則表達式 【44】 的值是6。
【44】 A)p + + ->n B) p->n + + C) (*p).n + + D) + + p->n
以下四個程序中, 【45】 不能對兩個整型變量的值進行交換。
【45】A)# include
main()
{ int a=10,b=20; swap(&a,&b);
printf( "%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int *t;
t=(int )malloc(sizeof(int));
t=p;*p=*q;*q=*t; }
B) # include
main()
{
int a=10,b=20;
swap(&a,&b);
printf("%d %d\n",a,b);
}
swap(p,q)
int p,q;
{
int *t;
t=*p;*p=*q;*q=t;
}
C) # include
main()
{
int *a,*b;
*a=10,*b=20;
swap(a,b);
printf("%d %d\n",*a,*b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}
D) # include
main()
{
int a=10,b=20;
int x=&a,y=&b;
swap(x,y);
printf("%d %d\n",a,b);
}
swap(p,q)
int *p,*q;
{
int t;
t=*p;*p=*q;*q=t;
}
二、填空題(每空2分,共40分)
請將每空的正確答案寫在答題卡1-20序號后的橫線上,答在試卷上不得分。
結構化程序設計所規(guī)定的三種基本控制結構是 【1】 結構.選擇結構和循環(huán)結構。
在七位ASCII碼中,除了表示數(shù)字、英文大小寫字母外,還有 【2】 個其它符號。
把B盤BAS子目錄下第三個字符為A,且沒有擴展名的全部文件拷貝到C盤ABC子目錄下的命令是 【3】 。
微機中ROM的中文意義是 【4】 存儲器。
啟動MS-DOS系統(tǒng)后,能自動執(zhí)行的批處理文件是 【5】 .BAT。
設當前盤為C盤,刪除B盤FOX子目錄中擴展名為.TXT的所有文件的命令是 【6】 。
十進制數(shù)53轉換為十六進制數(shù)為 【7】 。
數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次、網(wǎng)狀和 【8】 三種。
買來一張新盤后,在存入文件前,必須進行 【9】 處理。
在微機中,字符的比較就是對它們的 【10】 碼進行比較。
以下C語言程序將磁盤中的一個文件復制到另一個文件中,兩個文件名在命令行中給出。
#include
main(argc,argv)
int argc; char *argv[];
{ FILE *f1,*f2; char ch;
if(argc < 【11】 )
{ printf("Parameters missing!\n"); exit(0); }
if( ((f1=fopen(argv[1], "r")) = = NULL)||((f2=fopen(argv[2],"w")) = = NULL))
{ printf("Can not open file!\n"); exit(0);}
while( 【12】 )fputc(fgetc(f1),f2);
fclose(f1); fclose(f2); }
以下程序中的trap函數(shù)是一個用梯形法求定積分的通用函數(shù)。梯形法求定積分的公式為:
n-1 a-b
s=((f(a)+f(b))/2+∑ f(a+i*h))*h , h=|----|
i=1 n
其中,n為積分小區(qū)間數(shù)。以下程序調用trap函數(shù)求定積分,被積函數(shù)是:
f(x)=x*x+3*x+2,且n=1000,a=0,b=4。
#include
3include
double trap(fun,a,b)
double (*fun)(),a,b;
{ double t,h;
int i,n=1000;
t=0.5*((*fun)(a)+(*fun)(b)); h=fabs(a-b)/(double)(n);
for(i=1;i <=n-1;i + + ) t=t+ 【13】 ;
t=t*h; return(t); }
double mypoly(x)
double x;
{ return(x*x+3.0*x+2.0); }
main()
{ double y,(*pf)(); pf= 【14】 ;
y=trap(pf,0.0,4.0); printf("%f\n",y); }
以下程序求a數(shù)組中的所有素數(shù)的和,函數(shù)isprime用來判斷自變量是否為素數(shù)。素數(shù)是只能被1和本身整除且大于1的自然數(shù)。
#include
main()
{ int i,a[10],*p=a,sum=0;
printf( "Enter 10 num:\n");
for(i=0;i <10;i + + ) scanf("%d",&a[i]);
for(i=0;i <10;i + + )
if(isprime(*(p+ 【15】 )) = = 1){ printf( "%d",*(a+i)); sum+=*(a+i); }
printf("\nThe sum=%d\n",sum); }
isprime(x)
int x;
{ int i; for(i=2;i<=x/2;i + + )
if(x%i = = 0) return (0); 【16】 ; }
以下程序調用invert函數(shù)按逆序重新放置a數(shù)組中元素的值。a數(shù)組中的值在main函數(shù)中讀入。
#include
#define N 10
invert(s,i,j)
int *s,i,j;
{ int t; if(i
{ int a[N],i;
for(i=0;i
for(i=0;i
以下程序建立了一個帶有頭結點的單向鏈表,鏈表結點中的數(shù)據(jù)通過鍵盤輸入,當輸入數(shù)據(jù)為-1時,表示輸入結束(鏈表頭結點的data 域不放數(shù)據(jù),表空的條件是ph->next = = NULL).
#include
struct list { int data;struct list *next;};
【19】 creatlist()
{ struct list *p,*q,*ph; int a;
ph=(struct list *) malloc(sizeof(struct list));
p=q=ph; printf( "Input an integer number,enter –1 to end:\n");
scanf( "%d",&a):
while(a!=-1)
{ p=(struct list *)malloc(sizeof(struct list));
p- >data=a; q->next=p; 【20】 =p; scanf("%d",&a); }
p->next='\0'; return(ph); }
main()
{ struct list *head; head=creatlist();}
[完]
C語言參考答案
選擇題([1]——[30]每個選項1分,[31]——[45]每個選項2分,共60分)
(1)B (2)B (3)B (4)A (5)C (6)D (7)B (8)C (9)A (10)C
(11)C (12)B (13)D (14)B (15)C (16)A (17)B (18)B (19)A (20)C
(21)D (22)C (23)A (24)C (25)C (26)D (27)A (28)D (29)B (30)A
(31)C (32)D (33)C (34)D (35)A (36)A (37)C (38)B (39)B (40)A
(41)A (42)C (43)A (44)D (45)C
二` 填空題(每空2分,共40分)
(1)順序
(2)66
(3) COPY B:\BAS\??A*.C:\ABC(或COPY B:\BAS\??A*.,C:\ABC)
(4)只讀
(5)AUTOEXEC
(6)DEL B:\FOX\*.TXT
(7)35
(8)關系
(9)格式化(或初始化、FORMAT)
(10)ASCII
(11)3
(12)!feof(f1)或feof(f1)==0
(13)(*fun)(a+i*h)
(14) mypoly
(15)I
(16)return 1 或 return (1)
(17)i+1
(18) I
(19) struct list *
(20) q