C程序设计复习题附答案.docx
- 文档编号:27740093
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:37
- 大小:41.79KB
C程序设计复习题附答案.docx
《C程序设计复习题附答案.docx》由会员分享,可在线阅读,更多相关《C程序设计复习题附答案.docx(37页珍藏版)》请在冰豆网上搜索。
C程序设计复习题附答案
C程序练习题
一.单项选择题
⑴“a”在内存中占B字节。
A.1个B.2个C.3个D.4个
⑵a=b+=c+5,若b=1,c=2,则a的值是C。
A.1B.7C.8D.出错
⑶下列合法的变量名是B。
A.123B.nextC.intD.*x
⑷字符型数据在微机内存中的存储形式是D。
A.反码B.补码C.EBCDIC码D.ASCII码
⑸请选出可作为C语言用户标示符的一组标示符B。
A.voidB.a3_b3C.ForD.Za
Define_123_abcDO
WORDIFcasesizeof
⑹若变量已正确定义并赋值,不符合C语言语法的表达方式是D。
A.a=a+7B.a=7+b+c,a++C.(int)(12.3)%4D.a=a+7=c+b
⑺TURBOC中int类型变量所占字节数是B。
A.1B.2C.3D.4
⑻执行scanf(“a=%d,b=%d”,&a,&b)语句,若要使变量a和b的值分别为3和4,则正确的输入方法为C。
A.3,4B.a:
3b:
4C.a=3,b=4D.34
⑼下列程序的执行结果是B。
A.5,0,-10B.0,0,5C.–10,5,-10D.5,0,5
main()
{inta=0,b=0,c=0;
c=(a-=a-5),(a=b,b+5);
printf(“%d,%d,%d\n”,a,b,c);}
⑽若输入2.50,下列程序的执行结果是D。
A.0B.3.125C.3.13D.程序有错
main()
{floatr,area;
scanf(“%5.2f”,&r);
printf(“area=%f\n”,area=1/2*r*r);}
⑾设a,b均是int型变量,则以下不正确的函数调用为D。
A.getchar()B.putchar(‘\106’);C.scanf(“%d,%2d”,&a,&b);D.putchar(‘\’);
⑿设a为整形变量,不能正确表达数学关系:
10 A.1010&&a<15D.! (a<=10)&&! (a>=15) ⒀在以下一组运行符中,优先级最高的是C。 A.<=B.=C.%D.&& ⒁在以下运算符中,优先级最高的运算符是B。 A.<=B./C.! =D.&& ⒂假设所有变量均为整形,表达式(a=2,b=5,a>b? a++: b++,a+b)的值是B。 A.7B.8C.9D.2 ⒃在以下运算符中,优先级最高的运算符是A。 A.! B.=C.+D.‖ ⒄执行下列程序段后,变量的正确结果,供选择的答案是D。 A.10B.11C.12D.13 inti=10,j=0; do{switch(i) {case9: i++; case10: i++; case11: i++; defaut: i++;} }while(j); ⒅以下程序执行C次。 A.5B.6C.8D.9 #include“stdio.h” #defineN2 #defineMN+1 #defineNUM(M+1)*M/2 main() {inti,n=0; for(i=1;i<=NUM;i++){n++;printf(“%d”,n);} printf(“\n”);} ⒆对两个静态数组A和B进行如下初始化: staticcharA[]=“ABCDEF”; staticcharB[]={‘A’,‘B’,‘C’,‘D’,‘E’,‘F’}; 则下列叙述正确的是D。 A.A和B完全相同B.A和B只是长度相同C.A数组长度比B数组短D.A数组长度比B数组长 ⒇下列对C语言字符数组的描述中错误的是C。 A.字符数组可以存放字符串B。 字符数组中的字符串可以整体输入、输出 C。 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D。 不可以用关系运算符对字符数组中的字符串进行比较 ⑴不能把字符串: Hello! 赋给数组b的语句是B。 A.charb[10]={‘H’,‘e’,‘l’,‘l’,‘o’,‘! ’,‘\0’};B。 charb[10];b=“Hello! ”; C。 charb[10];strcpy(b,“Hello! ”);D。 charb[10]=“Hello! ”; ⑵若有以下说明: inta[12]={1,2,3,4,5,6,7,8,9,10,11,12}; charc=‘a’,d,g; 则数值为4的表达式是D。 A.a[g-c]B.a[4]C.a[‘d’-‘c’]D.a[‘d’-c] ⑶合法的数组定义是B。 A.inta[]=“string”B.inta[5]={1,2,3,4,5}C.chara=“string”D.chara[]={1,2,3,4,5} ⑷若有定义和语句: staticchars1[]=“abcd”; chars2[10];s2=s1; printf(“%s\n”,s2); 则结果是(以下□代表空格)D。 A.输出abcdB.输出aC.输出abcd□□□□D.编译不通过 ⑸以下程序段给数组所有元素输入数据,应在下划线处填入的是B。 A.a+(++i)B.&a[i++]C.a+iD.&a[++i] main() {inta[10],i=0; while(i<10)scanf(“%d”,); ……;} ⑹变量的指针,其含义为指该变量的B。 A.值B.地址C.名D.一个标志 ⑺设ptr1和ptr2均为指向同一个int型一维数组的指针变量,k为int型变量,则下面不能正确执行的赋值语句是B。 A.k=*ptr1+*ptr2;B.ptr2=k;C.ptr1=ptr2;D.k=*ptr1*(*ptr2); ⑻设char*s=“\ta\017bc”,则指针变量s指向的字符串所占的字节数是C。 A.9B.5C.6D.7 ⑼以下程序有错,错误原因是D。 main() {int*p,i;char*q,ch; p=&i;q=&ch;*p=40;*p=*q; ……;} A.p和q的类型不一致,不能执行*p=*q;语句B。 *q中存放的是地址值,因此不能执行*p=40;语句 C。 q无具体指向,所以*q无实际意义D。 q虽然指向了具体的存储单元,但该单元无确定值,故不能执行*p=*q ⑽有四组对指针变量操作的语句,以下判断正确的是D。 ①int*p,*q;q=p;inta,*p,*q;p=q=&a②inta,*p,*q;q=&a;p=*q;inta=20,*p;*p=a ③inta=b=0,*p;p=&a;b=*p;inta=20,*p,*q=&a;*p=*q;④inta=20,*p,*q=&a;p=q;a=*p; A.正确: ①不正确②③④B.正确: ①④不正确②③C.正确: ③不正确①②④D.正确: ④不正确①②③ ⑾设程序段chars[]=“china”;char*p;p=s;则下列叙述正确的是CD。 A.s和p完全相等B。 数组s中的内容和指针变量p中的内容完全相等 C.s数组长度和p所指向的字符串长度完全相等Ds[0]和*p相等 ⑿若a、b,、c均为int型变量,则执行以下语句后的a、c值分别为(B)。 a=b=c=-1;++a||++b&&++c; A)不正确B)0和-1C)0和0D)-1和0 ⒀若a、b均为int型变量且a=100,则以下关于for循环语句的正确判断为(A)。 for(b=100;a! =b;++a,++b)printf(“--------”); A)循环体一次也不执行B)死循环C)循环体只执行一次D)输出-------- ⒁一个C程序总是从(A)开始执行的。 A)主函数B)主过程C)子函数D)子过程 ⒂在C语言中,int、char和short三种类型数据所占用的内存(C)。 A)均为两个字节B)均由用户自己定义C)由所用机器的机器字长决定D)是任意的 ⒃以下哪一个不是正确的转义符(B)。 A)‘\\’B)‘\’C)‘108’D)‘\0’ ⒄以下关于switch语句和break语句的描述中,只有(C)是正确的。 A)在switch语句中必须使用break语句B。 break语句只能用于switch语句 C。 在switch语句中可以根据需要使用或不使用break语句D。 break语句是switch语句的一部分 ⒅为了判断两个字符串s1和s2是否相等,应当使用(D)。 A)if(s1==s2)B)if(s1=s2)C)if(strcpy(s1,s2))D)if(strcmp(s1,s2)==0) ⒅函数定义的缺省类型为C。 A.voidB.doubleC.intD.char ⒆在C语言程序中,说法正确的是B。 A.函数的定义可以嵌套,但函数的调用不可以嵌套B。 函数的定义可以不嵌套,但函数的调用可以嵌套 C。 函数的定义和函数的调用都不可以嵌套D。 函数的定义和函数的调用都可以嵌套 ⒇C语言规定,函数返回值的类型是由D。 A.return语句中的表达式类型所决定B。 调用该函数时的主调函数所决定 C。 调用该函数时系统临时决定D.在定义该函数时所指定的函数类型所决定 1、一个C语言程序是由[A]组成。 A、主程序 B、子程序 C、函数 D、过程 2、下面标识符中,不合法的用户标识符为[D]。 A、PAd B、a_10C、CHAR D、a#b 3、在C语言中,int、char和short三种类型数据所占用的内存[C]。 A、均为2个字节 B、由用户自己定义 C、由所用机器的机器字长决定 D、是任意的 4、若w=1,x=2,y=3,z=4,则条件表达式w w: y y: z的结束为[D]。 A、4 B、3 C、2 D1 5、设x和y均为int型变量,则执行以下语句后的输出为[A]。 A、0 B、1 C、6 D、12 x=15;y=5; Printf(“%d\n”,x%=(y%=2)); 6、下列程序正确的运行结果为[B]。 A、9.800000B、9.300000 C、8.500000 D、8.000000 #include main() {inta=1,b=4,c=2; floatx=5.5,y=9.0,z; z=(a+b)/c+sqrt((double)y)*1.2/c+x; printf(“%f\n”,z)} 7、运行下面程序后的w值为[A]。 A、20 B、7 C、28 D、13 main() {intw=2,k; for(k=0;k<3;k++) {w=f(w); printf(“%d\n”,w);} f(x) intx; {inty=0; staticz=3; y++;z++; return(x+y+z);} 8、若有说明语句inti,j,且i的值为6,执行语句j=(++i)+(i++)后,j的值是[B]。 A、4 B、14 C、13 D、15 9、若a、b为int型变量,则执行以下语句后,a,b的值为[]。 A、2,9 B、4,2 C、3,-1 D、2、8 a=1;b=10; do{b-=a; a++; }while(b--<0); 10、若a为int型变量,则执行以下语句后的结果为[A]。 A、5 B、不打印任何内容 C、4 D、陷入死循环 a=5; do{printf(“%2d\n”,a--); }while(! a); 11、若x、y的int型变量,则执行以下语句后的x,y值是[A]。 A、10,6 B、6,4 C、7,8 D、10,2 for(y=1,x=1;y<=50;y++) {if(x>=10)break; if(x%2==1) {x+=5; continue;} x-=3;} 12、下列程序正确的运行结果为[B]。 A、8,20 B、8,8 C、8,17 D、8,16 #include main() {intj=4,m=1,k; k=fun(j,m); printf(“%d\n”,k);} fun(x,y) intx,y; {staticintm=0,i=2; i+=m+1; m=i+x+y; return(m);} 13、下列程序正确的运行结果为[A]。 A、12,2 B、5,20 C、2,12 D、不确定 #include intx,y; num() {inta=15,b=10; intx,y; x=a-b; y=a+b; retrun;} main() {inta=7,b=5; x=a+b; y=a-b; num(); printf(“%d,%d\n”,x,y);} ⒁C语言规定,简单变量做实参时,它和形参之间的数据传递方式是D。 A.地址传递B.单向值传递C.有实参传给形参,再由形参传回给实参D.由用户指定传递方式 ⒂若用数组名作为函数调用的实参,传递给形参的是A。 A.数组的首地址B.数组第一个元素的值C.数组中全部元素的值D.数组元素的个数 ⒃如果函数的类型和return语句中表达式的值的类型不一致,则A。 A.返回值的类型以函数类型为准B.返回值的类型不能确定 C.返回值的类型以return语句中表达式的类型为准D.编译不通过 ⒄如果在一个函数中的复合语句中定义了一个变量,则该变量A。 A.指在该复合语句中有效B.在该函数中有效C.在本程序范围内均有效D.为非法变量 ⒅以下不正确的描述为(B)。 A)在函数之外定义的变量为外部变量,外部变量是全局变量 B)在一个函数中既可以使用本函数中的局部变量,又可以使用别的函数中的局部变量 C)外部变量定义和外部变量说明的含义不同 D)同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。 ⒆下面写法错误的数字是(A)。 A)123E3B)4.3-6EC)E7D)2.9+3e ⒇已知x=’P’,y=’A’,P与A的ASCII码值分别为80和64,则表达式a=x>y? ‘a’: 1.5的值是(B)。 A)1.5B)97C)TD)97.0 1.面向算法的计算机语言是(B)A.可视化语言B.高级语言C.汇编语言D.机器语言 2.以下运算符使用错误的是(B)A.--kB.(a+b)--C.++jD.i++ 3.关于C语言程序的正确叙述是(D) A.main()所在行的末尾必须要有分号(;)B.主函数的函数体不一定用花括号({})括起来 C.一个完整的C程序可以没有任何函数D.C语言程序的简单语句必须用分号(;)作为语句的结束符 4.已知: inti=5,a;当a=i++;语句执行后,变量i和a的值分别是(C)A.55B.56C.65D.66 5.用C语言表示算式 ,错误的表达式是(C)A.a/(c*d)*bB.a*b/c/dC.a*b/c*dD.a*b/(c*d) 6.下列程序的运行结果是(C)A.0B.1C.3D.3.3 #include main() {intx=10,y=3; printf("%d\n",y=x/y);} 7.下列程序的运行结果是(A)A.18B.19C.22D.23 #include main() {intx=023; printf("%d\n",--x);} 8.C语言中,关于scanf()函数正确的叙述是(A) A.利用scanf()函数可以给变量提供数据B.scanf()函数具有计算功能C.scanf()函数就是输入语句D.scanf()函数只能用在主函数中 9.C语言中,已知a的ASCII码为97,A的ASCII码为65。 又已知,int,c;chari;scanf("%c,%d",&c,&i);语句执行后,若要使c的值为101,i的值为正确的数据输入为(注: ↙为回车符号)(C)A.101,68↙B.101,D↙C.e,68↙D.e,D↙ 10.已知: intx=100,y;y=x>80? 60: 70; 则y的值是(A)A.60B.70C.80D.100 11.C语言中,已知intb=2;则下列表达式值为1的是(A)A.b>1B.b>bC.b<1D.! (b=1) 12.C语言中,下列语句运算符的执行次序是(C)x=! a==b; A.先执行=,再执行! ,再执行==B.先执行==,再执行! ,再执行=C.先执行! ,再执行==,再执行=D.执行次序是随机的 13.下列程序的功能是(B) #include main() {charc; c=getchar(); if(c>='a'&&c<='z')c=c-32; putchar(c);} A.将大写字母转换成小写字母B.将小写字母转换成大写字母C.将大小写字母互换D.以上均错误 14.C语言中,关于while与do-while语句正确的叙述是(D) A.允许从do-while外部转到循环体内B.do-while的循环体不能是复合语句 C.while的循环控制条件比do-while的循环控制条件严格D.do-while的循环体至少无条件执行一次 15.下列程序段执行后,k的值是(C)A.9B.10C.11D.不定 intk=1;while(k++<10); 16.下列C语言程序运行时输入2473↙,则输出结果是(B)A.668966B.668977C.6677877D.6688766 (注: ↙为回车符号) #include main() {intcx; while((cx=getchar())! ='\n') {switch(cx-'2') {case0: case1: putchar(cx+4); case2: putchar(cx+4);break; case3: putchar(cx+3); default: putchar(cx+2);}}} 17.下列程序的运行结果是(C)A.x=4B.x=6C.x=8D.x=12 #include main() {inti,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2)continue; x++;} x++;} printf("x=%d\n",x);} 18.已知: inti=5,s;则s=i--;等价于(A)A.s=i;i=i-1;B.i=i-1;s=i;C.s=i;s=s-1D.s=i;s=i-1; 19.C语言中关于数组的正确叙述是(C) A.数组名代表数组中的全部元素B.若有定义inta[10],说明该数组元素的最大下标是10 C.定义数组时可以同时初始化该数组D.初始化数组时必须使所赋初值的个数与数组长度相等 20.已知: 主函数中,inta[3]={4};数组元素a[1]的值是(A)A.0B.1C.4D.不确定 21.下列程序的运行结果是(B)A.EB.FC.EFGHD.FGH #include main() {char*b="ABCDEFGH"; printf("%c",b[5]);} 22.下列程序的运行结果是(B)A.44B.8C.95D.以上结果均不正确 #include intd=1; fun(p) intp; {intd=5; d+=p++; printf("%d",d);} main() {inta=3; fun(a); d+=a++; printf("%d\n",d);} 23.函数strcat(strcpy(str1,str2),str3)的功能是(C) A.将串str1复制到串str2中后,再连接到串str3后B.将串str1连接到串str2中后,再复制到串str3后 C.将串str2复制到串str1中后,再将str3连接到串str1之后D.将串str2复制到串str1中后,再将str1连接到串str3之后 24.对C语言函数的正确描述是(D) A.C语言程序总是从第一个定义的函数开始执行B.C语言程序中,要调用的函数必须放在main()函数中定义 C.C语言程序中的main()函数必须放在程序的开始部分D.C语言程序总是从main()函数开始执行 25.已知: inta,*p;如果p指向a,则(D) A.a与p存储单元的地址相同B.a与p的值相同C.a的值是p的地址D.p的值是a的地址 26.指针变量作为形参时,下列叙述正确的是(A) A.实参可以是同类型的指针变量B.实参可以是同类型的常数C.实参可以是关系表达式D.实参可以是算术表达式 27.已知: inta[]={1,3,5,7,9},*ip=a;表达式*ip+2的值是(B) A.1B.3C.5D.7 28.下列程序段的输出结果是(B)A.-3B.-2C.-1D.3 inta[]={1,-2,3,-4},*ip=a;ip++; printf"%d",(*ip)++); 29.C语言中,能够将数据写入磁盘文件的函数是(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 复习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)