一选择题(每题2分,共2*20=40分) 1以下叙述中错误的是 A)C语言是一种结构化程序设计语言 B)结构化程序有顺序、分支、循环三种基本结构组成 C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡模块化的设计方法 2以下叙述中错误的是 A)用户所定义的标识符允许使用关键字 B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大、小写字母代表不同标识 3设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是。 A)6.500000B)6C)5.500000D)6.000000 4若变量均己正确定义并赋值,以下合法的C语言赋值语句是 A)x=y==5 B)x=n%2.5C)x+n=ID)x=5=4+1: 5以下叙述中错误的是 A)C语句必须以分号结束B)复合语句在语法上被看作一条语句 C)空语句出现在任何位置都不会影响程序运行 D)赋值表达式末尾加分号就构成赋值语句 6以下定义语句中,错误的是 A)int a[]={1,2}B)char *a[3]C)char s[10]="test";D)int n=5,a[n]; 7当把以下四个表达式用作f语句的控制表达式时,有一个选项与其它三个选项含义不 同,这个选项是 A)k%2B)k%2=1 C)(k%2)1=0D)Ik%2==1 8若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是。 A)pb=&x B)pb=x;C)*pb=&x D)*pb=*x 9有以下程序,程序的运行结果是 void main(void) {int i,j,m=55; for(i=1:i=3:i+) for(j=3;j<=i;j++)m=m%j; printf ("%d\n",m) } A)0 B)1 C)2 D)3 10以下选项中,与k=++完全等价的表达式是。 A)k=n,n=n+1 B)n=n+1,k=n C)k=++n D)k+=n+1 11以下语句或语句组中,能正确进行字符串赋值的是 A)char *sp;*sp="right!" B)char s[10];s="right!"; C)char s[10];*s="right!" D)char *sp="right!"; 12有以下程序,程序运行后的输出结果是 共4页第1页
共4页 第1页 一 选择题(每题 2 分,共 2*20=40 分) 1 以下叙述中错误的是 A)C 语言是一种结构化程序设计语言 B)结构化程序有顺序、分支、循环三种基本结构组成 C)使用三种基本结构构成的程序只能解决简单问题 D)结构化程序设计提倡模块化的设计方法 2 以下叙述中错误的是 A)用户所定义的标识符允许使用关键字 B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大、小写字母代表不同标识 3 设 a 和 b 均为 double 型常量,且 a=5.5、b=2.5,则表达式(int)a+b/b 的值是。 A) 6.500000 B) 6 C) 5.500000 D) 6.000000 4 若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是 A)x=y==5 B)x=n%2.5 C)x+n=I D)x=5=4+1; 5 以下叙述中错误的是 A)C 语句必须以分号结束 B)复合语句在语法上被看作一条语句 C)空语句出现在任何位置都不会影响程序运行 D)赋值表达式末尾加分号就构成赋值语句 6 以下定义语句中,错误的是 A) int a[]={1,2} B)char *a[3] C)char s[10]="test"; D)int n=5,a[n]; 7 当把以下四个表达式用作 if 语句的控制表达式时,有一个选项与其它三个选项含义不 同,这个选项是 A)k%2 B)k%2==1 C)(k%2)!=0 D)!k%2==1 8 若 x 是整型变量,pb 是基类型为整型的指针变量,则正确的赋值表达式是。 A)pb=&x B)pb=x; C)*pb=&x D)*pb=*x 9 有以下程序,程序的运行结果是 void main(void) {int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf("%d\n",m); } A)0 B)1 C)2 D)3 10 以下选项中,与 k=n++完全等价的表达式是。 A)k=n,n=n+1 B)n=n+1,k=n C)k=++n D)k+=n+1 11 以下语句或语句组中,能正确进行字符串赋值的是 A)char *sp;*sp="right!" B)char s[10];s="right!"; C)char s[10];*s="right!" D)char *sp="right!"; 12 有以下程序,程序运行后的输出结果是
void main(void) {char ch[门=“uvwxyz”,*pc: pc=ch; printf(“%cn”,*(pc+5):} A)zB)0C)元素ch[5]地址 D)字符y的地址 13已有定义:char a[门="xyz",b[]={'x’,’y’,’z’}:,以下叙述中正确的是 A)数组a和b的长度相同 B)a数组长度小于b数组长度 C)a数组长度大于b数组长度 D)上述说法都不对 14t为int类型,进入下面的循环之前,t的值为0。则以下叙述中正确的是() while(t=1) {....} A)循环控制表达式的值为O B)循环控制表达式的值为1 C)循环控制表达式不合法 D)以上说法都不对 15以下关于字符串的叙述中正确的是 A)C语言中有字符串类型的常量和变量 B)两个字符串中的字符个数相同时才能进行字符串大小的比较 C)可以用关系运算符对字符串的大小进行比较 D)空串一定比空格打头的字符串小 16以下程序的输出结果是。 void main(void) 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 17有以下程序,程序运行后的输出结果是 void point (char *p){p+=3; void main(void {char b[4]='a’,’b',’c’,’d'},*p=b: point (p); printf ("%c\n",*p) A)a B)b C)c D)d 18有以下程序,程序运行后的输出结果是 void main(void) {inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2; printf ("%d\n",*p *q);} A)16B)10 C)8 D)6 19设有定义:int nl=0,n2,p=&n2,q=&nl;,以下赋值语句中与n2=nl;语句等价的是 A)*p=*q B)p=q C)*p=&n1 D)p=*q; 20以下叙述中正确的是 A)break语句只能用于switch语句题中 B)continue语句的作用是:使程序的执行流程跳出包含它的所有循环 共4页第2页
共4页 第2页 void main(void) {char ch[]=“uvwxyz”,*pc; pc=ch; printf(“%c\n”,*(pc+5));} A)z B)0 C)元素 ch[5]地址 D)字符 y 的地址 13 已有定义:char a[]="xyz",b[]={’x’,’y’,’z’};,以下叙述中正确的是 A)数组 a 和 b 的长度相同 B)a 数组长度小于 b 数组长度 C)a 数组长度大于 b 数组长度 D)上述说法都不对 14 t 为 int 类型,进入下面的循环之前,t 的值为 0。则以下叙述中正确的是() while(t=1) { ......} A)循环控制表达式的值为 0 B)循环控制表达式的值为 1 C)循环控制表达式不合法 D)以上说法都不对 15 以下关于字符串的叙述中正确的是 A)C 语言中有字符串类型的常量和变量 B)两个字符串中的字符个数相同时才能进行字符串大小的比较 C)可以用关系运算符对字符串的大小进行比较 D)空串一定比空格打头的字符串小 16 以下程序的输出结果是。 void main(void) { 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 17 有以下程序,程序运行后的输出结果是 void point(char *p) {p+=3;} void main(void ) {char b[4]={’a’,’b’,’c’,’d’},*p=b; point(p); printf("%c\n",*p); } A)a B)b C)c D)d 18 有以下程序,程序运行后的输出结果是 void main(void) { int a[10] ={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2; printf("%d\n", *p + *q);} A)16 B)10 C)8 D)6 19 设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与 n2=n1;语句等价的是 A)*p=*q B)p=q C)*p=&n1 D)p=*q; 20 以下叙述中正确的是 A)break 语句只能用于 switch 语句题中 B)continue 语句的作用是:使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内 D)在循环体内使用break语句和continue语句的作用相同 二写出下面程序的输出结果(每题3分,共3*10=30分) 21以下程序的输出结果是 void main(void) {intn=12345,d; while(n!=0) {d=n%10: printf("%d",d); n/=10:} 22以下程序的输出结果是 void main(void {char al]={\1',’2',’3',’14',’0'}: printf(“%d%d\n”,sizeof(a),strlen(a)): 23以下程序的输出结果是 若执行下面的程序时从键盘上输入3和4, void main(void) int a,b,s; scanf("%d %d",&a,&b) s=a; if(a<b)s=b; S=S*S; printf("%d\n",s); } 24设有定义语句:inta[][3]={0},{1},{2}}:,则数组元素a[1][2]的值为 25以下程序运行后的输出结果是 void swap(int x,int y) int t; t=x;x=y:y=t;printf("%d %d "x,y) } void main(void) int a=3,b=4; swap(a,b); printf ("%d %d\n",a,b); } 26执行以下程序的输出结果是 void main(void {inti,n[4]={1}: for(i=1;i=3:i+) {n[i]=n[i-1]*2+1: 共4页第3页
共4页 第3页 C)break 语句只能用在循环体内和 switch 语句体内 D)在循环体内使用 break 语句和 continue 语句的作用相同 二 写出下面程序的输出结果(每题 3 分,共 3*10=30 分) 21 以下程序的输出结果是________. void main(void) { int n=12345,d; while(n!=0) { d=n%10; printf("%d",d); n/=10;}} 22 以下程序的输出结果是 _____ void main(void ) { char a[]={‘\1’,’\2’,’\3’,’\4’,’\0’}; printf(“%d %d\n”,sizeof(a) ,strlen(a) ); } 23 以下程序的输出结果是________. 若执行下面的程序时从键盘上输入 3 和 4, void main(void) { int a,b,s; scanf("%d %d",&a,&b); s=a; if(a<b) s=b; s=s*s; printf("%d\n",s); } 24 设有定义语句:int a[][3]={{0},{1},{2}};,则数组元素 a[1][2]的值为 ________ 25 以下程序运行后的输出结果是 ____ void swap(int x,int y) { int t; t=x;x=y;y=t;printf("%d %d ",x,y); } void main(void) { int a=3,b=4; swap(a,b); printf("%d %d\n",a,b); } 26 执行以下程序的输出结果是______. void main(void ) { int i,n[4]={1}; for(i=1;i<=3;i++) { n[i]=n[i-1]*2+1;
printf("%d "n[i]); 27执行以下程序的输出结果是 int sub(int n){return (n/10);} void main(void) int x,y; X=1234: y=sub (sub (sub (x))) printf("%d\n",y);} 。 28以下程序运行后的输出结果是。 void main(void) {inta=10,b=20,c=30: if (c=a)printf("%d\n",c) else printf("%d\n",b);} 29有以下程序,输出结果是 void f(int *q) (int i=0; for(:i<5:i+)(*q)+:} void main(void) {inta[5]={1,2,3,4,5},i: f(a): for(i=0;i<5:i++) printf(“%d,”,a[i]):} 30以下程序输出结果是 main() {inta=3,b=4,t=0: if(a<b)t=a;a=b;b=t; printf ("%d %d %d\n",a,b); 三编程题目(每题15分,共15*2=30分) 31编写完整程序,求2+4+6++100的和 32从键盘输入10个整数,存放在数组中,求这10个整数的最大值 共4页第4页
共4页 第4页 printf("%d ",n[i]);} } 27 执行以下程序的输出结果是______. int sub(int n) { return (n/10); } void main(void) { int x,y; X= 1234; y=sub(sub(sub(x))); printf("%d\n",y);} 。 28 以下程序运行后的输出结果是 。 void main(void) { int a=10,b=20,c=30; if(c=a) printf("%d\n",c); else printf("%d\n",b);} 29 有以下程序,输出结果是 void f(int *q) {int i=0; for(; i<5;i++)(*q)++;} void main(void) {int a[5]={1,2,3,4,5},i; f(a); for(i=0;i<5;i++) printf(“%d,”,a[ i ]);} 30 以下程序输出结果是__ __。 main() { int a=3,b=4, t=0; if(a<b)t=a;a=b;b=t; printf("%d %d %d\n",a,b);} 三 编程题目(每题 15 分,共 15*2 = 30 分) 31 编写完整程序,求 2+4+6+…+100 的和 32 从键盘输入 10 个整数,存放在数组中, 求这 10 个整数的最大值