专升本C语言历年考试题及答案 .doc
专升本C语言历年考试题及答案一、单项选择题1. C语言源程序文件经过C编译程序编译连接之后生成一个后缀为_C_的文件。 A、”.c” B、“.obj” C、“.exe” D、“.bas”2. 以下选项中不正确的整型常量是_C_。 A、 12L B、 -10 C、 1,900 D、 123U3. 表达式_C_的值是0。A、3%5 B、3/5.0 C、3/5 D、3<54. 表达式 !(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. 若变量已正确定义,执行语句scanf("%d%d%d ",&k1,&k2,&k3);时,_B_是正确的输入。 A、2030,40 B、20 30 40 C、20, 30 40 D、20, 30,407. 执行语句 printf(” _D_”, 2); 将得到出错信息。A、%d B、%o C、%x D、%f8. 设变量定义为“int s ="hellonworldn"”,则数组s中有_B_个元素。A、12 B、13 C、14 D、159. 设变量定义为“int a2=1,3, *p=&a0+1;”,则*p的值是_B_。A、2 B、3 C、4 D、&a0+110. 若变量已正确定义并赋值,表达式 -k+ 等价于_A_。A、-(k+) B、(-k)+ C、-(k+1) D、-(+k)11. 在C 语言程序中,在函数内部定义的变量称为_D_。 A、全局变量 B、全程变量 C、外部变量 D、内部变量12. 若x是整型变量,表达式 (x=10.0/4.0) 的值是_D_ 。A、2.5 B、 2.0 C、 3 D、213. 对于以下的变量定义,表达式_A_是正确的。 struct node char s10; int k; p4;A、p->k=2 B、p0.s=“abc” C、p0->k=2 D、p->s=a14. 下列运算符中,优先级从高到低依次为_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、1116 以下各选项企图说明一种新的类型名,其中正确的是水量 (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) xaa18. 以下程序的输出结果是 (C)main() int i, a10;for(i=9;i>=0;i-) ai=10-i;printf(“%d%d%d”,a2,a5,a8);A) 258 B) 741 C) 852 D) 36919. 以下程序的输出结果是(B)main() char st20= “hello0t”;printf(%d %d n”,strlen(st),sizeof(st);A) 9 9 B) 5 20 C) 13 20 D) 20 2020. 以下程序的输出结果是 (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(“%dn”,a);A) 101 B) 6 C) 5 D) 421. 以下程序的输出结果是 (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(%dn”,a.u.x);A) 4 B) 5 C) 6 D) 022. 以下程序段的输出结果是 (A)char s="141141abct"printf ("%dn",strlen(s);A) 9 B) 12 C) 13 D) 1423. 以下程序的输出结果是 (B)main() char ch35="AAAA","BBB","CC"printf(""%s"n",ch1);A) "AAAA" B) "BBB" C) "BBBCC" D) "CC"24. 不合法的main函数命令行参数表示形式是 (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=s1; printf("%c,%sn",*(p+1),s0);执行后输出结果是 (C)A) n,two B) t,one C)w,one D) o,two26. 设有如下说明typedef struct int n; char c; double x;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是 (A)A) STD tt2=1,'A',62,2, 'B',75;B) STD tt2=1,"A",62,2, "B",75;C) struct tt2=1,'A',2, 'B'D)structtt2=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. 计算下列分段函数的 if 语句是_ if(x>0)y=1;else if(x=0)y=0;else y=-1;_。 1 x>0y= 0 x=0 -1 x<03. 表达式 !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 %dn", s1, s2);9. 下列程序段的输出结果是_ fgh _。 char *st ="abcd","efgh","ijkl","mnop"printf("%s", *(st+1)+1);10. 用typedef定义一个含10个元素的整型数组ARR。 typedef int ARR10; 11以下程序调用findmax函数返回数组中的最大值,请填空。findmax(int *a,int n) int *p,*s;for(p=a,s=a; p-aif ( *p>*s ) s=p;return(*s);main() int x5=12,21,13,6,18;printf("%dn",findmax(x,5); 三、程序(段)填空题1设变量x, y, z已正确定义和赋值,请仔细阅读程序段,然后在程序段中填入正确的内容,使程序段和程序段有相同的功能。程序段A 程序段B x=x+y;y=x-y;x=x-y;z=x+y; z=x ; x=y ;y=z; z=x+y; 2请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。char *f1(char s , char t) int k; for(k=0; tk!=' ' k+) sk=tk; sk=' ' return s;