C语言程序设计练习题.docx
- 文档编号:27536109
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:24
- 大小:23.47KB
C语言程序设计练习题.docx
《C语言程序设计练习题.docx》由会员分享,可在线阅读,更多相关《C语言程序设计练习题.docx(24页珍藏版)》请在冰豆网上搜索。
C语言程序设计练习题
《C语言程序设计》练习题
一、单项选择题
单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。
本类习题主要检查对C语言基本概念的掌握情况。
在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。
对于掌握不准的问题,应该通过上机实验来检验。
1.下列四组字符串中都可以用作C语言程序标识符的一组是____。
A)printB)i\amC)PxqD)str_l
_3done_halfMy->bookCpp
oodbstart$itline#pow
aBc3paiHis.agewhile
2.C语言程序从main()函数开始执行,所以这个函数要写在____。
A)程序文件的开始B)程序文件的最后
C)它所调用的函数的前面D)程序文件的任何位置
3.下列关于C语言的叙述错误的是____。
A)大写字母和小写字母的意义相同
B)不同类型的变量可以在一个表达式中
C)在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型
D)同一个运算符号在不同的场合可以有不同的含义
4.在C语言中,错误的int类型的常数是____。
A)32768B)0C)037D)0xAF
5.已知longi=65539;执行语句printf("%d",i);屏幕显示____。
A)65539B)-3C)3D)程序不能执行
6.在C语言中,整数-8在内存中的存储形式是____。
A)1111111111111000B)1000000000001000
C)0000000000001000D)1111111111110111
7.C语言中字符型(char)数据在内存中的存储形式是____。
A)原码B)补码C)反码D)ASCII码
8.将字符g赋给字符变量c,正确的表达式是____。
A)c=\147B)c="\147"C)c='\147'D)c='0147'
9.已知:
chara;intb;floatc;doubled;执行语句"c=a+b+c+d;"后,变量c的数据类型是____。
A)intB)charC)floatD)double
10.温度华氏和摄氏的关系是:
C=-(F-32)。
已知:
floatC,F;由华氏求摄氏的正确的赋值表达式是____。
A)C=5/9(F-32)B)C=5*(F-32)/9
C)C=5/9*(F-32)D)三个表达式都正确
11.逗号表达式"(a=3*5,a*4),a+15"的值是____。
A)15B)60C)30D)不确定
12.如果inta=1,b=2,c=3,d=4;则条件表达式"a
a:
c c: d"的值是____。 A)1B)2C)3D)4 13.已知inti=10;表达式"20-0<=i<=9"的值是____。 A)0B)1C)19D)20 14.使用语句scanf("x=%f,y=%f",&x,&y);输入变量x、y的值(□代表空格),正确的输入是____。 A)1.25,2.4B)1.25□2.4C)x=1.25,y=2.4D)x=1.25□y=2.4 15.已知intx=(1,2,3,4);变量x的值是____。 A)1B)2C)3D)4 16.已知inti=1,j=0;执行下面语句后j的值是____。 while(i) switch(i) {case1: i+=1;j++;break; case2: i+=2;j++;break; case3: i+=3;j++;break; default: i--;j++;break; } A)1B)2C)3D)死循环 17.求取满足式12+22+32+……+n2≤1000的n,正确的语句是____。 A)for(i=1,s=0;(s=s+i*i)<=1000;n=i++); B)for(i=1,s=0;(s=s+i*i)<=1000;n=++i); C)for(i=1,s=0;(s=s+i*++i)<=1000;n=i); D)for(i=1,s=0;(s=s+i*i++)<=1000;n=i); 18.下面的for语句____。 for(x=0,y=10;(y>0)&&(x<4);x++,y--); A)是无限循环B)循环次数不定C)循环执行4次D)循环执行3次 19.已知chara[][20]={"Beijing","shanghai","tianjin","chongqing"};语句printf("%c",a[30]);的输出是____。 A)<空格>B)nC)不定D)数组定义有误 20.对二维数组的正确说明是____。 A)inta[][]={1,2,3,4,5,6};B)inta[2][]={1,2,3,4,5,6}; C)inta[][3]={1,2,3,4,5,6};D)inta[2,3]={1,2,3,4,5,6}; 21.对字符数组str赋初值,str不能作为字符串使用的一个是____。 A)charstr[]="shanghai"; B)charstr[]={"shanghai"}; C)charstr[9]={'s','h','a','n','g','h','a','i'}; D)charstr[8]={'s','h','a','n','g','h','a','i'}; 22.如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,这个变量的存储类型应该被说明为____。 A)静态变量B)动态变量C)外部变量D)内部变量 23.在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要使用的存储类别是____。 A)externB)registerC)autoD)static 24.定义一个函数实现交换x和y的值,并将结果正确返回。 能够实现此功能的是____。 A)swapa(intx,inty)B)swapb(int*x,int*y) {inttemp;{inttemp; temp=x;x=y;y=temp;temp=x;x=y;y=temp; }} C)swapc(int*x,int*y)D)swapd(int*x,int*y) {inttemp;{int*temp; temp=*x;*x=*y;*y=temp;temp=x;x=y;y=temp; }} 25.在下列结论中,只有一个是错误的,它是____。 A)C语言允许函数的递归调用 B)C语言中的continue语句,可以通过改变程序的结构而省略 C)有些递归程序是不能用非递归算法实现的 D)C语言中不允许在函数中再定义函数 26.说明语句"int(*p)();"的含义是____。 A)p是一个指向一维数组的指针变量 B)p是指针变量,指向一个整型数据 C)p是一个指向函数的指针,该函数的返回值是一个整型 D)以上都不对 27.设有说明int(*p)[4];其中的标识符p是____。 A)4个指向整型变量的指针变量 B)指向4个整型变量的函数指针 C)一个指向具有4个整型元素的一维数组的指针 D)具有4个指向整型变量的指针元素的一维指针数组 28.已知: chars[10],*p=s,则在下列语句中,错误的语句是____。 A)p=s+5;B)s=p+s;C)s[2]=p[4];D)*p=s[0]; 29.已知: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*ptr)[3]=a,*p=a[0]; 则以下能够正确表示数组元素a[1][2]的表达式是____。 A)*(*(a+1)+2)B)*(*(p+5))C)(*ptr+1)+2D)*((ptr+1)[2]) 30.已知: inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是____。 A)p+=2,*(p++)B)p+=2,*++pC)p+=2,*p++D)p+=2,++*p 32.函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。 能正确执行此功能的函数是____。 A)funa(int*x,int*y)B)funb(intx,inty) {int*p;{intt; p=x;*x=*y;*y=*p;t=x;x=y;y=t; }} C)func(int*x,int*y)D)func(int*x,int*y) {*x=*y;*y=*x;{*x=*x+*y;*y=*x-*y;*x=*x-*y; }} 33.有定义如下: structsk {inta; floatb; }data,*p; 如果p=&data;则对于结构变量data的成员a的正确引用是____。 A)(*).data.aB)(*p).aC)p->data.aD)p.data.a 34.已知: structst {intn; structst*next; }; staticstructsta[3]={1,&a[1],3,&a[2],5,&a[0]},*p; 如果下述语句的显示是2,则对p的赋值是____。 printf("%d",++(p->next->n)); A)p=&a[0];B)p=&a[1];C)p=&a[2];D)p=&a[3]; 35.fscanf函数的正确调用形式是____。 A)fscanf(文件指针,格式字符串,输出列表); B)fscanf(格式字符串,输出列表,文件指针); C)fscanf(格式字符串,文件指针,输出列表); D)fscanf(文件指针,格式字符串,输入列表); 36.使用fgetc函数,则打开文件的方式必须是____。 A)只写B)追加C)读或读/写D)参考答案B和C都正确 37.已知宏定义 #defineN3 #defineY(n)((N+1)*n) 执行语句z=2*(N+Y(5+1));后,变量z的值是____。 A)42B)48C)52D)出错 38.已知宏定义#defineSQ(x)x*x,执行语句printf("%d",10/SQ(3));后的输出结果是____。 A)1B)3C)9D)10 二、阅读程序题 阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读别人写好的程序来打开自己的思路,就所谓见多识广。 通过阅读理解程序,从给出的四个备选参考答案中,选择程序的正确输出。 如果选择有误,就要认真分析原因,是概念方面的错误还是对程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。 程序设计语言是开发程序的一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备选答案,增强动手能力。 1.下面程序的输出结果是____。 #include main() {intx=10; {intx=20; printf("%d,",x); } printf("%d\n",x); } A)10,20B)20,10C)10,10D)20,20 2.以下程序的输出结果是____。 main() {intx=10,y=10;printf("%d%d\n",x――,――y); } A)1010B)99C)910D)109 3.下面程序可能的输出结果是____。 main() {inta,b; scanf("%2d%3d",&a,&b); printf("a=%db=%d\n",a,b); } A)a=12b=34B)a=123b=45C)a=12b=345D)语句右错误 4.以下程序段的输出结果是____。 inta=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%db=%dc=%d\n",a,b,c); A)a=10b=50c=10B)a=10b=30c=10 C)a=50b=30c=10D)a=50b=30c=50 5.以下程序的输出结果是____。 main() {inta=0,b=1,c=0,d=20; if(a)d=d-10; elseif(! b) if(! c)d=15; elsed=25; printf("d=%d\n",d); } A)d=10B)d=15C)d=20D)d=25 6.下面程序的输出结果为____。 main() {inta=1,b=0; switch(a) {case1: switch(b) {case0: printf("**0**");break; case1: printf("**1**");break; } case2: printf("**2**");break; } } A)**0**B)**0****2**C)**0****1****2**D)有语法错误 7.以下程序的输出结果是____。 main() {char*s="12134211"; intv1=0,v2=0,v3=0,v4=0,k; for(k=0;s[k];k++) switch(s[k]) {case'1': v1++; case'3': v3++; case'2': v2++; default: v4++; } printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); } A)v1=4,v2=2,v3=1,v4=1B)v1=4,v2=9,v3=3,v4=1 C)v1=5,v2=8,v3=6,v4=1D)v1=4,v2=7,v3=5,v4=8 8.下面程序的输出是____。 main() {intnum=0; while(num<=2) {num++; printf("%d\n",num); } } A)1B)1C)1D)1 222 33 4 9.从键盘上输入"446755"时,下面程序的输出是____。 #include main() {intc; while((c=getchar())! ='\n') switch(c-'2') {case0: case1: putchar(c+4); case2: putchar(c+4);break; case3: putchar(c+3); default: putchar(c+2);break; } printf("\n"); } A)888988B)668966C)88898787D)66898787 10.下面程序的输出结果是____。 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); } A)x=4B)x=8C)x=6D)x=12 11.下面程序的输出结果是____。 #include main() {intn[3][3],i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) n[i][j]=i+j; for(i=0;i<2;i++) for(j=0;j<2;j++) n[i+1][j+1]+=n[i][j]; printf("%d\n",n[i][j]); } A)14B)0C)6D)不确定 12.下面程序的输出结果是____。 #include main() {inta[4][5]={1,2,4,-4,5,-9,3,6,-3,2,7,8,4}; inti,j,n; n=9; i=n/5; j=n-i*5-1; printf("a[%d][%d]=%d\n",i,j,a[i][j]); } A)6B)-3C)2D)不确定 13.下面程序的输出结果是____。 #include main() {chars1[50]={"somestring*"},s2[]={"test"}; printf("%s\n",strcat(s1,s2)); } A)somestring*B)test C)somestritestD)somestring*test 14.下面程序的输出结果是____。 #include f(char*s) {char*p=s; while(*p! ='\0') p++; return(p-s); } main() {printf("%d\n",f("ABCDEF")); } A)3B)6C)8D)0 15.下面程序的输出结果是____。 #include #include main() {charstr[100]="Howdoyoudo"; strcpy(str+strlen(str)/2,"esshe"); printf("%s\n",str); } A)HowdoyoudoB)esshe C)HowareyouD)Howdoesshe 16.下面程序的输出结果是____。 #include func(inta,intb) {intc; c=a+b; return(c); } main() {intx=6,y=7,z=8,r; r=func((x--,y++,x+y),z--); printf("%d\n",r); } A)11B)20C)21D)31 17.下面程序的输出结果是____。 main() {inta[]={1,2,3,4,5,6}; int*p; p=a; printf("%d",*p); printf("%d",*(++p)); printf("%d",*++p); printf("%d",*(p--)); p+=3; printf("%d%d",*p,*(a+3)); } A)123354B)123456C)122345D)123445 18.下面程序的输出结果是____。 #include main() {inta[]={1,2,3,4,5}; intx,y,*p; p=&a[0]; x=*(p+2); y=*(p+4); printf("%d,%d,%d\n",*p,x,y); } A)1,3,5B)1,2,3C)1,2,4D)1,4,5 19.下面程序的输出结果是____。 #include"string.h" fun(char*w,intn) {chart,*s1,*s2; s1=w;s2=w+n-1; while(s1 {t=*s1++; *s1=*s2--; *s2=t; } } main() {staticchar*p="1234567"; fun(p,strlen(p)); printf("%s",p); } A)7654321B)1717171C)7171717D)1711717 20.下面程序的输出结果是____。 #include char*p="abcdefghijklmnopq"; main() {inti=0; while(*p++! ='e'); printf("%c\n",*p); } A)cB)dC)eD)f 21.下面程序的输出结果是____。 #include"stdio.h" structstr1 {charc[5]; char*s; }; main() {structstr1s1[2]={{"ABCD""EFGH"},{"IJK","LMN"}}; structstr2 {structstr1sr; intd; }s2={"OPQ","RST",32767}; structstr1*p[2]; p[0]=&s1[0]; p[1]=&s1[1]; printf("%s",++p[1]->s);/*①*/ printf("%c",s2.sr.c[2]);/*②*/ } ①A)LMNB)MNC)ND)IJK ②A)OB)PC)QD)R 22.以下程序的输出结果是____。 structst {intx,*y; }*p; ints[]={10,20,30,40}; structsta[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]}; main() {p=a; printf("%d\n",++(*(++p)->y)); } A)10B)11C)20D)21 三、程序填空题 在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。 这类习题的设计就是要引导读者逐步掌握编程的方法。 本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。 1.下面程序的功能是不用第三个变量,实现两个数的对调操作。 #include main() {inta,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a=①; b=②; a=③; printf("a=%d,b=%d\n",a,b); } 2.下面的程序的功能是求一维数组中的最小元素。 findmin(int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 练习题