c语言考试题及答案补考(c语言考试bug)求c语言试题及答案!急啊!c语言考试题(一) 一、 单项选择题(每题2分,共20分) 1、以下选项中属于C语言的数据类型是( ) A.复数型 B.逻辑型 C.集合型 D.双精度型 2、一个C程序的执行是从( ) A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数结束 3、设有语句int a=3;则执行语句a+=a-=a*a;后,变量a的值是( ) A.3 B.0C.-12 D.9 4、若有 char c[5]={'c','d','\0','e','\0'};则执行语句printf("%s",c);结果是( )。 A.cd\0e B.'c''d' C.cd D.cd e 5、已知:int a[2][3]={1,2,3,4,5,6}, (*p)[3]=a;则下列表达式不是4的是 ( )。 A.*(*p+3) B.*p+3 C.*(*(p+0)+3) D.a[0][3] 6、以下有宏替换不正确的叙述( ). A.宏替换不占用运行时间 B.宏名无类型 C.宏替换只是字符串替换 D.宏名必须用大写字母表示 7、执行char str[10]=”Chnina”; strlen(str)的值是( ) A.5 B.6 C.7 D.9 8、下面程序的输出结果是:( ) #define POWER(x) (x*x) main() {int i=4; printf("%d",POWER(i-2)); } A. -9 B. -7 C. 5 D. -6 9、在定义int a[3][4][2];后,第10个元素是( ) A.a[2][1][2] B.a[1][0][1] C.a[2][0][1] D.a[2][2][1] 10、下面程序的输出结果是:( ) typedef struct {long x[2];brshort y[4];brchar z[8];br}MYTYPE; MYTYPE a; main() { printf("%dn",sizeof(a));} A. 2 B. 8 C. 14 D. 24 二、 填空题(每空1分,共11分) 1、字符串"A"在内存中占用的字节数为 。 2、C语言中的标识符只能由字母、下划线和 组成。 3、若有定义语句“ int a=25,b=14,c=19;",以下语句的执行结果是 if(a++=25b--=2c++) printf("***a=%d,b=%d,c=%dn",a,b,c); else printf("###a=%d,b=%d,c=%dn",a,b,c); 4、有如下定义a[]="B172\'a%%";则执行语句printf("%d",strlen(a));的结果为 。 5、若有定义:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i; for(i=0;i4;i++) p[i]=a[i*3];则*(*(p+1)+2)的值为 ,*p[2]的值为 。若数组的首地址为2000,则p[1]指向的地址为 。 6、设a=2,b=3,x=3.5,y=2.5,则表达式(float)(a+b)/2+(int)x%(int)y 的结果是 。 7、设x、y都是int型变量,初值都为1,则执行表达式:--xy++后,y的值为 。 8、语句for(i=1;i==10;i++)continue;循环的次数是 。 9、以下程序输出 。 main() {enum em {em1=3,em2=1,em3}; char *aa[]={"AA","BB","CC","DD"}; printf("%s%s%sn",aa[em1],aa[em2],aa[em3]); } 三、 写程序结果(每题5分,共35分) 1、#include main() {int x,y,z;brx=1,y=2,z=3; x+=y+=z;brprintf("1:%dn",z+=xy?x++:y++);brx=0x02ff;y=0xff00;brprintf("2:%dn",(xy)4|0x005f);brx=y=z=-1; ++x||++y++z;brprintf("3:%d,%d,%dn",x,y,z);br} 2、#define f(x) x*x main() {int a=6,b=2,c;brc=f(a+b)/f(b);brprintf(“%dn”,c);br} 3、fun(int k) { printf("%d",k); if(k0) fun(k-1); } main( ) { int w=5; fun(w); printf("n"); } 4、#include main() {int x=1,y=0;brswitch(x)br{ case 1:brswitch(y)br{ case 0:printf(“firstn”);break;brcase 1:printf(“secondn”);break;br} case 2:printf(“thirdn”); } } 5、#include main() { int k=4; func(k); func(k); } func(int a) { static int m=0; m+=a; printf("%d",m); } 6、struct st { int x; int *y; }*p; int s[]={30,20}; struct st a[]={1,s[0],2,s[1]}; main() { p=a; printf("%d,",p-x); printf("%dn",++(*(++p)-y)); } 7、假定在当前盘目录下有2个文本文件,其名称和内容如下: 文件名: a1.txt a2.txt 内容: ABCDEF# abcdef# #include "stdio.h" main() {FILE *fp;brvoid fc();brif((fp=fopen("a1.txt","r"))==NULL)br{printf("Can not open file!n"); exit(1);} else{fc(fp);fclose(fp);} if((fp=fopen("a2.txt","r"))==NULL) {printf("Can not open file!n"); exit(1);} else{fc(fp);fclose(fp);} } void fc(fp1) FILE *fp1; {char c;brwhile((c=fgetc(fp1))!='#')putchar(c);br} 四、 程序填空(每空2分,共14分) 1、下面程序求矩阵a的主对角线元素之和,请填空。 main() { int a[3][3]={2,4,6,8,10,12,14,16,18}; int sum=0,i,j; for(i=0;i3; ① ) for(j=0; ② ;j++) if(i= =j) sum=sum+ ③ ; printf("sum=%dn",sum); } 2、下列函数coy把字符数组S2中的全部字符复制到字符数组S1中, 复制时’\0’也要复制过去,’\0’后面的字符不用。 coy(char s1[],char s2[]) { int i; for(i=0;s2[i]!= ① ;i++) s1[i]=s2[i]; ② ; } 3、下面程序的功能是将字符串a中的下标为奇数的元素由小到大排序,其他元素不变,请填空。 main() { char a[]="students",t; int i,j; for(i=1;i7;i+=2) for(j=i+2;j8; ① ) if( ② ) {t=a[i];a[i]=a[j];a[j]=t;} puts(a); } c语言考试题(二) 一. 填空题(每题2分,共20分) 1. C语言基本数据类型有:_______________________________; 构造类型有:_____________________________________。 P.13 2. C语言源程序注注释符号是:________________________________, 为表明层次结构,C语言源程序通常采用_____________________格式编写。P.4 3. 源程序TEST.C经编译产生的目标文件是:________________________; 经连接处理后,产生的可执行文件是:__________________________。 4. strlen(“1234 0xy)的值为:_____________________________; sizeof(float)的值为:____________________________ 5. 二维数组a[10] [50]最后一行的首地址为:_________________________; 最后一个元素的首地址为:____________________________________。 6. C标准库函数中,数学函数的原型在:________________头文件中,自定义头文件D : MYC MY . H应如何包含到源程序文件中:_________________________。P.130 7. 已知函数定义为:int stat(int a,float *p) {……………} 则此函数的两个参数类型分别是_______________ 、 _____________________。 8. 设int x,y,z=4; x=y=++z; x=(yz)?x+2;x++;则x的值是:_________; 设int a=0,b=0,c=0;c=++a | | b++; ,则a、b、c值分别是:_____________。 9. 与if (x=0) 等价的写法是if ( ! x ); 判断两个(float)变量x,z是否相等一般:if ( fabc(x-z)1e-6 )。 10.已知赋值语句zhang.year=1985;可判断zhang是_______________类型的变量; 定义文件指针的C语句是:_________________________________。 二. 单项选择题 (每题1分,共10分) 1. 组成C程序的基本单位是____________________________。 A.函数 B.标识符 C.表达式 D.语句 2. 设int类型的数据长度为2字节,则该类型数据的取值范围是__________________。 A.0至65536 B.0至65535 C.-32767至32768 D.-32768至32767 3. 在C语言中,逻辑值“真”是用_____________________表示的。 A.预定义为真值的宏 B.非零数 C.正数 D.非零整数 4. C语言对于嵌套if语句规定else总是与_____________________匹配。 A.与最外层的if B.与之前最近的if C.与之前最近的不带else的if D.与最近的{ }之前的if 5. 数组定义char a[10]={`a`,`b`,`c`}:包括了几个元素____________________。 A.3 B.9 C.4 D.10 6. 数组名作为实参传给被调用的函数时,形参获得的是_____________________。 A.该数组第一个元素的值 B.该数组所有元素的值 C.该数组第一个元素的首地址 D.该数组所有元素的首地址 7. 为表示关系x ≥ y ≥z,正确的C语言表达式为_________________________。 A.(x=y=z) B.(x=y)AND(y=z) C.(x=y)(y=z) D.(xy)(y=z) 8. 根据定义int a[ ]={1,2,3},i,*p=a; 从语法分析_________________是不正确的。 A. a[p-a] B.*(a) C.p D.*(*(a+i)) 9. 若有语句scanf(“%d%d”,a,b);要使变量a,b分别得到12和34;正确的输入形式为____________________________。 A.12 34 B.12,34 C.1234 D.12:34 10.union uex {int i;float f;char c;}ex;则sizeof(ex)的值是____________________。 A.4 B.5 C.6 D.7 三. 分析程序,写出运行结果。(每题4分,共20分) 1. 源程序如下,运行时假定键盘输入字符串为``2004`` #include void main(void) { int n=0; char c; while( (c=getchar( )) ! =`n` ) /*字符型数字*/ { if (c=`0`c=`9` ) n = n*10 + c- `0` ; /*数字*/ } printf(“value=%d|n” ,n); } 结果为: value=2004 。 2. 源程序如下: #include void main(void) { int num[9]={399,398,397,396,395,299,290,311,301}; int score[9]={81,85,59,77,90,66,89,93,73}; int iMax,iPos,i; iPos=0; iMax=score[iPos]; for(i=1;i9;i++) if(scoreiMax) { iPos=i; iMax=score[iPox]; } printf(“num=%d,score=%d”,num[iPos];score[iPos]); 结果为: num=311, score=93 。 3. 源程序如下,运行时假定键盘输入数据为:1 2 3 4 5 6 7 8 9 10 #include void main(void) { int i,a[10]; int *p; p=a; for(i=0;i10;i++) scanf(“%d“,p++); for(p=a;p SPAN;p++) if (*p%2)printf(“%3d”,*p); } 结果为: 1 3 5 7 9 。 4. 源程序如下,两次运行,分别输入数据13和21 #include #include void main(void) { int n,s; scant (“%d”,n); s=panduan( n); if(s==1)printf(“yesn”); else printf(“non); } int panduan(int n) { int k,j; k=(int)sqrt((double)n); for(j=2;j=k,j++) { if(n%j==0) break; } if(jk) retum(1); else retum(0); } 结果为 yes no 5.源程序如下,运行时假定键盘输入字符为:AxByCz #include #include void main(void) { char str[80]; int i; gets(str); for(i=0;str!=`\0`;i++) if(str=`a`str=`z`) str-=32; else if (str=`A`str=`Z`) str+=32; puts(str); } 结果为: aXbYcZ 。 四. 下列程序中每个划线处有一个错误,改正划线 中的错误,使其实现题目要求。(每体4分,共20分) 1. 求 s=1+2+3+、、、、、、、+100 include 改正为_________________________。 void sum (void) 改正为_________________________。 { int s,i; for (s=0,i=1;i=100;i++) { s=s+ i ++; 改正为__________________________。 } printf (“s=%f”,s) 改正为__________________________。 } 2. 源程序实现求x #include double pow(float . int) 改正为_________________________。 void main(void) { int i, n; float x; scanf (“%f,%d”,x,n); for (i=1; i9;i++) printf(“%d,%en”, i, pow(i,x); } 改正为______________________。 double v v pow(float x, int n) { int i; double p=0; 改正为______________________。 for (i=1; i i++)改正为_______________________。 p*=x; retum(p); } 3. 源程序实现排升序。 #include void main(void) { int i, j, iMin, a[10]={4,3,5,1,10,12,2,6,7,9}, iTemp; for (i=0; i9; i++) { iMin=0; 改正为_______________________。 for (j=i+1; j10;j++) if(a[iMin] iMin="j;"改正为_______________________。 if (iMin==i) 改正为_________________________。 { iTemp=a; a[iMin]=a; 改正为_________________________。 a[iMin]=iTemp; } } for(i=0; i10; i++) printf(“%4d”, a): } 4. 源程序为求平均值。 #include void main(void) { int i, sum; 改正为____________________。 float avg; int sc[10], *p=sc; for (i=0, i10; i++) 改正为____________________。 { scanf(“%d”, p++); sum+= *p; 改正为____________________。 } avg = sum/ 10; 改正为___________________。 printf(“avg=%f”, avg); } 5. 源程序求 eX=1+x+x2/2!+……+xn/n!前n+1项之和 #include void main(void { float exp , x , t; int i, n; scanf(“%f, %d”,x, n); t=0; 改正为___________________。 exp=1.0; for(i=1 ; i=n; i++) { if(t1e-6) loop; 改正为__________________。 t+=x/i; 改正为___________________。 exp*=t; 改正为___________________。 } printf(“n%15.6f”, exp); } 五. 编程题 (每题6分,共30分) 1. 根据以下程序框架,编写子函数,实现交换两个整型变量x和y的值。 #include void swap (int *, int *); void main (void) { int x, y; scanf(“%d, %d”, x, y); swap( x, y); printf(“%d, %d”, x, y); } void swap( ) { } 2. 设某班人数36人,参加C语言考试,用一维数组score[36]存放考试成绩,已给出一部分程序,完善以下程序,使其实现统计并输出不及格人数及百分比。 #include void main (void) { int i; float scoer[36], precent; int count=0; for (i=0; i36; i++) { scanf(“%f”, score); } 3. 完善以下程序使其实现由键盘任意输入一串字符,统计其中大写字母个数iA、小写字母个数ia、其他字符个数iother。 #include #include void main (void) { char str [80]; int i, iA=0, ia=0, iother=0; } 4. 完善以下程序使其实现求方阵主和辅对角线元素之和及其转置矩阵,设方阵用二维数组a表示,转置矩阵用t表示,sl和s2表示主和辅对角线元素之和。 #include void main(void) { int a[3] [3]={1,3,5,7,9,11,13,15,11}; int i, j, s1, s2; int t[3] [3]; printf(“%d, %d,n”,s1, s2); for(i=0; i3; i++) for(j=0; j3; j++) printf(“%3d”, t [j]); } 5. 已知字符数组str[80],编写返回指针的子函数,实现在其中查找字符ch首次出现的位置。 #include #include #include char *lstrchar(char*, char); void main(void) { char c, *p, str[80]; gets (str); scanf(“%c”, c); p=lstrchar(str,c); if(p==NULL) printf(“char %c not foundn”c); else printf(“The position is %d”, p-str); char “lstrchar( ) { } 历年全国计算机二级考试c语言真题及答案 求一份大一c语言考试试卷,加答案附件上传失败... C语言期末考试题及答案(1) 1、构成C语言的基本单位是___B____。 过程? 函数? 语句? 命令? 2、设x为整型变量,不能正确表达数学关系:5x10的c语言表达式是__B___。 5 x5x10? x==6||x==7||x==8||x==9? !(x=5)(x10)? 3、在C语言中,逻辑运算符的优先级从高到低的排列顺序为__D___。 、||、!? ||、、!? 、!、||? !、、||? 4、下面语句中,正确的是__D___。 printf("%cn","student");? printf("%cn","c");? printf("%sn",a);? printf("%sn","hello");? 5、对于for(表达式1;;表达式3)可以理解为__B___。 for(表达式1;0;表达式3)? for(表达式1;1;表达式3)? for(表达式1;表达式1;表达式3)? for(表达式1;表达式3;表达式3)? 6、执行下面程序段的结果是__B___。 main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d",a,b); } a=1,b=1? a=2,b=1? a=1,b=0? a=2,b=2? 7、执行下面程序段的结果是__D___。 int x=0; do { printf(“%2d”,x--); }while(x); 打印出321? 打印出23? 不打印任何结果? 陷入死循环? 8、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___。 If(xy) if(yz)x=y; else z=y; 7? 6? 5? 4? 9、如果一个函数被说明为static,那么__B___。 该函数只能被main函数调用? 该函数能被当前文件的函数调用,但不能被其他文件的函数调用? 该函数不能被当前文件的函数调用,可以被其他文件的函数调用? 任何文件的函数都可以调用该函数? 10、下面关于局部变量的描述中,错误的是__D___。 函数的局部变量的有效范围只能在本函数? 函数的形式参数也是局部变量? 局部变量的名称不能和函数同名称? 不同的函数中不能定义相同名称的局部变量? 11、下列初始化字符数组的语句中,错误的是__A___。 char str[5]="hello";? char str[]={'h','e','l','l','o','\0'};? char str[5]={"hi"};? char str[100]="";? 12、引用数组元素时,数组下标可以是__D___。 整型常量? 整型变量? 整型表达式? 以上均可? 13、 已知:char str[10],*p=str; 下面的语句中正确的是__B___。 str="ABC";? p="ABC";? *str="ABC";? *p="ABC";? 14、下面语句中,错误的是___D__。 int i;int *p;p=i;? int i,*p;p=a;? int i,*p=a;? int i,*p;*p=i;? 15、下面对于结构体类型的描述正确的是__A___。 结构体类型的大小为各成员变量所占内存的总和? 结构体类型变量与简单数据类型变量的引用规则一致。? 结构体类型的大小为其成员中所占内存空间最大的变量的大小? 结构体类型的大小为其最后一个成员中所占内存空间的大小? 16、C语言规定:在一个源程序中,main函数的位置____C____。 必须在最开始? 必须在系统调用的库函数的后面? 可以任意? 必须在最后? 17、表达式18/4*sqrt(4.0)/8值的数据类型是 ___C____。 int? float? double? 不确定? 18、在c语言中,char型数据在内存中的存储形式是 ___D___。 补码? 反码? 原码? ASCII码? 19、阅读以下程序,当输入的数据形式为:25,13,10CR时,正确的输出结果为___D___。 main() { int x,y,z; scanf("%d%d%d",x,y,z); printf("x+y+z=%dn",x+y+z); } x+y+z=48? x+y+z=35? x+z=35? 不能确定? 20、有如下程序 void main() { float x=2.0,y; if(x0.0) y=0.0; else if(x10.0) y=1.0/x; else y=1.0; printf(“%fn”,y); } 该程序的输出结果是( C )。 0.000000? 0.250000? 0.500000? 1.000000? 21、判断char型变量s是否为小写字母的正确表达式是__C____。 'a'=s='z'? (s='a')(s='z')? (s='a')(s='z')? ('a'=s)and('z'=s)? 22、执行以下语句后,y 的值为___A___。 int x,y,z; x=y=z=0; ++x || ++y ++z; 0? 1? 2? 不确定值? 23、有如下程序段: int number=0; while(number++=3) printf(“%dn”,number++); 则正确的执行结果是___C___。 2 3 4? 0 1 2? 1 3? 2 4? 24、有如下程序 void main() { int n=9; while(n6) { n--; printf(“%d”,n); } } 该程序段的输出结果是__B___。 987? 876? 8765? 9876? 25、要使以下程序段输出10个整数,请在空格中填入一个整数。 for(i=0;i=___B___;printf("%dn",i+=2)); 15? 18? 20? 10? 26、设函数fun的定义形式为: fun(char ch,float x){…} 则以下对函数fun的调用语句中正确的是___B___。 fun(“abc”,3)? t=fun(‘D’,5)? fun(‘ab’,3)? fun(‘78’,1)? 27、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 Main() { printf("The sum=%dn",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。 s=s+n;return s;? s=s+i;return s;? return s;? return s+=I;? 28、设函数fun的定义形式为 int fun(int a[],int n) { int s=0,i=0; for(i=0;in;i++)s+=a[i]; return s; } main() { int a[10]={1,2,3,4,5}; printf("sum=%d", fun(a[2],2)); } 则程序的运行结果为___C___。 3? 5? 7? 9? 29、若有说明:int a[10];则对数组元素的正确引用是___D____。 a[10]? a[3,5]? a(5)? a[10-10]? 30、以下不正确的定义语句是___B___。 double x[5]={2.0,4,0,6,0,8,0,10.0};? int y[5]={0,1,3,5,7,9};? char c1[]={'1','2','3','4','5'};? char c2[]={'x10','xa','x8'};? 31、下面程序的运行结果是___B____。 #include "stdio.h" main() { char str[]="SWLIA",c; int k; for(k=0;(c=str[k])!='\0';k++) { switch(c) { case 'I':++k;break; c SWA? SW*? SW*A? SW? 32、以下能正确进行字符串赋值操作的是___D___。 char s[5]={"12345"};? char s[5]={'1','2','3','4','5',‘6’};? char *s;*s="12345";? char *s="12345";? 33、以下程序段的运行结果是___C___。 Char a[ ]="program", *p; p=a; while (*p!='g') { printf("%c", *p-32); p++; } PROgram? PROGRAM? PRO? proGRAM? 34、若有说明:char *pc[ ]={"aaa", "bbb", "ccc", "ddd"};,则以下叙述正确的是__C____。 *pc[0]代表的是字符串"aaa"的首地址? *pc[0]代表的是字符'a'的首地址? pc[0]代表的是字符串"aaa"的首地址? pc[0]代表的是字符'a'的首地址? 35、下列程序的运行结果是___B___。 #include stdio.h #include string.h void f (char *s, int n) { char a,*q1,*q2; q1=s;q2=s+n-1; while(q1q2) { a=*q1++; *q1=*q2--; *q2=a;} } main() { char b[]="ABCDEFG"; f(b, s GAGGAGA? AGAAGAG? GFEDCBA? AGADAGA? 36、定义如下的结构体描述同学信息 struct Student { unsigned long id; char name[30]; char class[30]; }s; 假设此同学的序号为1002,姓名为黎明,班级为冶金3班,则描述正确的为___C__。 id=1002; name=黎明; class=冶金3班;? id=1002; name=”黎明”; class=”冶金3班”;? s.id=1002; s.name=”黎明”; s.class=”冶金3班”;? s.id=1002; s.name=黎明; s.class=冶金3班;? 37、用来描述C程序中注释的是__C___。 //? ? **? 38、下列变量中合法的定义是__A___。 short _a=2-1? long if=0xabcL? double 1_d=1.5e2? float a=1.5e2.7? 39、当c的值不为0时,能够将c的值赋给变量a和b的是__C___ c=b=a? (a=c)||(b=c)? (a=c)(b=c)? a=c=b? 40、设有以下程序段,执行后的输出结果是___B__ int x=100,y=200; printf("%d",(x,y)); 100? 200? 100,200? 编译出错 C语言期末考试题及答案(2) 1、若执行下面的程序时从键盘输入10,则输出是__B__ main( ) { int a; scanf(“%d”,a); if(a++10) printf(“%dn”,++a); else printf("%dn",a--); } 12? 11? 10? 9? 2、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x); 打印出321? 打印出23? 不打印任何结果? 陷入死循环? 3、执行与句:for(n=0;n++4; ); 后,变量n的值是__C__。 3? 4? 5? 不定? 4、以下关于循环的描述中,错误的是__D___。 可以用for语句实现的循环一定可以用while语句实现? 可以用while语句实现的循环一定可以用for语句实现? 可以用do…while语句实现的循环一定可以用while语句实现? do…while语句与while语句的区别仅仅是关键字while的位置不同? 5、下面的描述错误的是__C__。 函数可以有多个形式参数? 函数可以没有返回值? 函数内可以嵌套定义函数? 函数可以被其他函数调用? 6、函数返回值的类型是由__A__决定的。 定义函数时指定的返回类型? 函数中return语句的表达式类型? 主调函数的实际参数类型? 主调函数的返回值类型? 7、定义了一维int型数组a[10]后,下面错误的引用是__B__。 a[0]=1;? a[10]=2;? a[0]=5*2;? a[1]=a[2]*a[0];? 8、定义了int型二维数组a[6][7]后,数组元素a[3][4]前的数组元素个数为__B__。 24? 25? 18? 17? 9、下面语句中,错误的是__D__。 int i; int *p; p=i;? int i,*p; p=a;? int i,*p=a;? int i,*p; *p=i;? 10、 已知int型二维数组a[3][4],数组元素a[1][2]的地址不能表达为__C__。 a[1][2]? a[1]+2? *a[1]+2? *(a+1)+2? 11、C语言中,5种基本数据类型的存储空间长度的排列顺序为___A___。 char char=int char char=int=long int=float 12、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是 ___B___。 7? 8? 6? 2? 13、若有说明语句:char c='72';则变量c ___A___。 包含1个字符? 包含2个字符? 包含3个字符? 说明不合法,c的值不确定? 14、若x,y均定义为整型,z定义为double型,以下不合法的scanf函数调用语句是___C___。 scanf("%d%lx,%le",x,y,z);? scanf("%2d * %d%lf",x,y,z);? scanf("%x%*d%o",x,y,z);? scanf("%x%o%6.2f",x,y,z);? 15、若输入字符串:abcde回车,则以下while循环体将执行___A___次。 while((ch=getchar())=='e') printf("*"); 1次? 死循环? 0次? 5次? 16、执行下面的程序段后,k的值是___C___。 k=1;n=263; do{k*=n%10;n/=10;}while(n); 3? 63? 36? 2? 17、下面程序段中循环的执行次数是___B___。 a=10;b=0; do{b+=2;a-=2+b;}while(a=0); 10? 3? 5? 4? 18、下面程序段的运行结果是__D____。 x=2; do{printf("*");x--;}while(!x==0); *? ***? 没有输出? **? 19、下面程序段的运行结果是___B___。 i=1;s=1;a=0; do{a=a+s*i;s=-s;i++;}while(i=10); printf("%d",a); 2? -2? 3? 0? 20、有如下程序 void main() { int a=2,b=-1,c=2; if(a) if(b0) c=0; else c++; printf("%dn",c); } 该程序的输出结果是___A___。 0? 1? 2? 3? 21、程序中对fun函数有如下说明 void fun(); 下面说明是错误的是___B___。 fun函数无返回值? fun函数的返回值可以是任意的数据类型? fun函数没有形式参数? void 可以省略? 22、函数求sum(int n)的功能是计算自然数1到n的和,即1+2+…+n。 main() { printf("The sum=%dn",sum (10)); } int sum(int n){ int s=0,i; for(i=0;i=n;i++) _____B_____ } 请从备选答案中选择一答案,补全程序。 s=s+n; return s;? s=s+i; return s;? return s;? return s+=i;? 23、 有以下程序 int f1(int x,int y){return xy?x:y;} int f2(int x,int y){return xy?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf()__A___ 4,3,7? 3,4,7? 5,2,7? 2,5,7? 24、若有说明:int a[][3]={1,2,3,4,5,6,7};则数组a第一维的大小是___B___。 2? 3? 4? 无确定值? 25、判断字符串s1是否大于字符串s2,应当使用___D____。 if(s1s2)? if(strcmp(s1,s2))? if(strcmp(s2,s1)0)? if(strcmp(s1,s2)0)? 26、当运行以下程序时,从键盘输入:AhaMA AhaCR CR表示回车,则下面程序的运行结果是___A____。 #include "stdio.h" main() { char s[80],c='a'; int i=0; scanf("%s",s); while(s[i]!='\0') { if(s[i]==c) ahAMa? AhAMa? AhAMa ahA? ahAMa ahA? 27、以下程序执行后a的值为___C____。main( ) { int a,m=2, k=1, *p=k; a=p!=m; printf("%dn",a); } -1? 0? 1? 2? 28、以下能正确读入字符串的程序段是____C___。 char *p;scanf("%s", p);? char str[10];scanf("%s", str);? char str[10], *p;p=str; scanf("%s", p);? char str[10], *p=str;scanf("%s", p[1]);? 29、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是___B___。 i=x[1][1] ? i=*(*(x+1))? i=*(*(x+1)+1)? i=*(x[1]+1)? 30、下面程序的运行结果是____A___。 # include stdio.h # include string.h fun(char *s) { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++z--) { t=*a++; *a=*z--; *z=t;} } main() { char *p; p="a abdddfg? afcdebg? gbedcfa? gfedcba? 31、用来描述C程序中注释的是__C___ / /? ? * *? 32、对于"xyn102\'"字符串的长度是__B___ 7? 6? 12? 13? 33、已知:int x=10;执行语句x-=x+x;后x的值是__A___ -10? 10? -20? 20? 34、下列描述中,正确的是__A___ 所有的输入/输出都是通过调用库函数处理的? 所有的输入/输出都是通过输入/输出语句实现的? getchar和putchar可以省略#include? 在输入/输出格式中的*表示跳过数据的含义? 35、设x=10,y=5;z=15,执行下面一段程序后z的结果是__C___ if(xy) if(yz)x=y; else z=y; 7? 6? 5? 4? 36、执行下面程序段的结果是__D___ int x=0; do { printf(“%2d”,x--); }while(x); 打印出321? 打印出23? 不打印任何结果? 陷入死循环? 37、以下关于switch语句和break语句的描述正确的是__D___ 在switch语句中必须使用break语句? break语句只能用于switch语句体中? break语句只能用于循环语句中? 在switch语句中可以使用break语句? 38、与语句while(!x)等价的语句是__A___ while(x==0)? while(x!=0)? while(x!=1)? while(~x)? 39、下面的描述错误的是__C___ ?函数可以有多个形式参数? ?函数可以没有返回值? ?函数内可以嵌套定义函数? ?函数可以被其他函数调用? 40、 下面关于局部变量的描述中,错误的是__D___ ?函数的局部变量的有效范围只能在本函数? ?函数的形式参数也是局部变量? ?局部变量的名称不能和函数同名称? ?不同的函数中不能定义相同名称的局部变 c语言的四道题目,明天补考...1. main() { int n,sum,i; scanf("%d",n); sum=2; for(i=1;in;i++) { sum=sum+3 } printf("%dn",sum); } 2. main() { int c; printf("*****TIME*****n"); printf("1 morningn"); printf("2 afternoonn"); printf("3 nightn"); printf("please enter your choice:"); scanf("%d",c); switch(c) { case 1: printf("Good morningn"); break; case 2: printf("Good afternoonn"); break; case 3: printf("Good nightn"); break; default: printf("Selection error!n"); break; } } 3. main() { int n,x; scanf("%d",n); switch(n) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: x=31;break; case 2: x=28;break; case 4: case 6: case 9: case 11: x=30;break; default: printf("Errorn"); } printf("the month %d has %d days.n",n,x); } 4. main() { int a[10]={12,36,72,36,36,99,87,12,35,36},b[10]; int i,n=0; for(i=0;i10;i++) { if(a[i]==36) {n+=1; printf("%d",i+1); } printf("the 36:%d",n); } |