C程序设计习题解答.docx
- 文档编号:11170606
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:36
- 大小:35.82KB
C程序设计习题解答.docx
《C程序设计习题解答.docx》由会员分享,可在线阅读,更多相关《C程序设计习题解答.docx(36页珍藏版)》请在冰豆网上搜索。
C程序设计习题解答
一、选择题(蓝色加粗为正确选项)
在C语言中,合法的字符常量是()。
A.'字'B."A"C."ABC"D.'\x41'
在C语言中,用户能使用的合法标识符是()。
A.姓名B._xyzC.5iD.for
在C语言中,不合法的实型常量是()。
A.-0.123B.-.123C.-1.23e-1D.-123e-3.0
C语言的下列运算符中,优先级最高的运算符是()。
A.++B.+=C.||D.!
=
设有说明语句intk,i=5,j=10;,则表达式k=(++i)*(j--)的值是()。
A.50B.60C.45D.55
设有说明语句inti,j;,则表达式i>=j||i A.视i、j的具体值而定B.FALSE C.TRUED.1 已知'A'的ASCII码的十进制值为65,'0'的ASCII码的十进制值为48,则以下程序运行结果是()。 main() {charch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3'; printf("%d,%c\n",ch1,ch2); } A.67,DB.C,DC.C,68D.67,68 设有语句intx=2,y=3;,则表达式x=(y==3)的值是()。 A.0B.1C.2D.3 以下程序的运行结果是()。 main() {unsigneda=0x3ef,b; b=a<<2; printf("%x,%x\n",a,b); } A.3ef,fbB.3ef,fbcC.fbc,3efD.fbc,fbc 下列语句中,符合C语言语法的赋值语句是()。 A.a=7+b+c=a+7;B.a=7+b++=a+7; C.a=7+b,b++,a+7;D.a=7=b,c=a+7; 为表示x≥y≥z,须用的C语言表达式为()。 A.(x>=y)&&(y>=z)B.(x>=y)AND(y>=x) C.x>=y>=zD.(x>=y)&(y>=z) 设inta,b;,用语句scanf('%d%d",&b);输入a、b值时,不能作为输入数据分隔符的是()。 A.空格B.,C.回车D.[Tab] 以下程序运行时,若从键盘输入5,则输出结果是()。 main() {inta; scanf("%d",&a); if(a++>5)printf("%d\n",a); elseprintf("%d\n",a--); } A.7B.4C.5D.6 以下程序的运行结果是()。 main() {inta,b,c; a=b=c=1; if(a++||++b)c++; printf("%d,%d,%d\n",a,b,c); } A.2,1,2B.1,2,1 C.2,2,2D.2,2,1 以下程序的运行结果是()。 main() {inti=3,j=2,k; k=i+j; { intk=8; if(i==3)printf("%2d",k); elseprintf("%2d",j); } printf("%2d%2d\n",i,k); } A.835B.838 C.383D.583 有以下程序: 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"); } 当输入: 247<回车>,程序的输出结果是()。 A.689B.6689C.66778D.66887 以下程序的运行结果是()。 main() {inta=1,b=0; switch(a) { case1: switch(b) { case0: printf("0000\n"); case1: printf("1111\n");break; } case2: printf("2222\n");break; } } A.0000 1111 B.0000 1111 2222 C.0000 2222 D.1111 2222 以下程序的运行结果是()。 voidmain() {inta=1; switch(a) { case1: printf("aaaa\n"); case2: printf("bbbb\n");break; default: printf("cccc\n"); } } A.aaaa B.aaaa bbbb cccc C.aaaa bbbb D.aaaa cccc 以下程序运行后,a的值是()。 main() {inta,b; for(a=1,b=1;a<=100;a++) { if(b>=20)break; if(b%3==1){b+=3;continue;} b-=5; } } A.101B.100C.8D.7 以下程序段的运行结果是()。 main() {inti,j; i=10; j=20; for(;j>=0;j-=20) { if(i=j)printf("Good! "); elseprintf("Notgood! "); } } A.Good! Good! B.Notgood! C.Good! D.Good! Notgood! 以下程序的运行结果是()。 main() {inta,b,c,n=13; printf("ABC\n"); for(a=1;a<=n;a++) for(b=1;b<=n;b++) for(c=b;c<=n;c++) if(a*a==b*b+c*c) printf("%3d%3d%3d\n",a,b,c); } A.ABC 534 1068 13512 B.ABC 354 6108 51312 C.ABC 453 8106 12135 D.ABC 543 1086 13125 以下程序段的运行结果是()。 intx=3; do{ printf("%3d,",x-=2); }while(! (--x)); A.1B.30 C.死循环D.1,-2 设E为表达式,以下与do…while(E);不等价的语句是()。 A.do…while(! E==0);B.do…while(E>0||E<0); C.do…while(E==0);D.do…while(E! =0); 以下程序的运行结果是()。 main() {inti,s; i=0; s=1; do{ s/=s+1; i++; }while(i<=10); printf("%2d%2d\n",i,s); } A.102B.112C.100D.110 下列程序段中,非死循环的是()。 A.inti=100; while (1) {i=i%100+1; if(i>=100)break; } B.intk=0; do{ ++k; }while(k>=0); C.ints=10; while(++s%2+s%2)s++; D.for(;;) 循环语句循环体中执行continue语句,其作用是()。 A.立即终止程序运行 B.继续执行continue语句之后的循环体各语句 C.结束本次循环 D.结束本次循环,跳出循环 下列do...while循环的循环次数是()。 inti=5; do{ printf("%d\n",i--); i--; }while(i! =0) A.0B.2C.5D.死循环 设已定义chars[]="\"Name\\Address\023\n";,则字符串中字符个数是()。 A.19B.15C.18D.14 已定义charx[8];inti;,为了给该数组赋值,下列语句正确的是()。 A.x[8]="TurboC";B.x="TurboC"; C.x[]="TurboC";D.for(i=0;i<7;i++)x[i]=getchar(); 设inta[][4]={0,0};,则下列描述错误的是()。 A.数组a的每个元素的值为0 B.二维数组a的第一维大小为1 C.数组a有4个元素 D.只有元素a[0][0]和a[0][1]的值为0,其余元素的值不确定 以下程序段的运行结果是()。 main() {inti=4,j; j=i; pic(i+2*j-2,'*'); putchar('\n'); for(j-=2;j>=0;j--) {pic(3-j,''); pic(i+2*j,'*'); putchar('\n'); } } pic(intlen,charC. {intk; for(k=1;k<=len;k++)putchar(C.; } A.* *** ***** ******* B.********** ********** ********** ********** C.**** ****** ******** ********** D.********** ******** ****** **** 以下程序运行结果是()。 main() {chara[][5]={"ABCD","1234","abcd","5678","EFGH"}; inti; for(i=0;i<3;i++)printf("%s",a[i]); } A.A1aB.ABCD1234abcd C.ABCD.ABCD1234abcd5678EFGH 以下程序的运行结果是()。 main() {intarray[4][4]; inti,j; for(i=0;i<4;i++) for(j=0;j<4;j++)array[i][j]=i+j; for(i=0;i<4;i++) for(j=0;j<4;j++) if(i==j||i+j==3)array[0][j]=0; for(j=0;j<4;j++)printf("%2d",array[0][j]); printf("\n"); } A.2005B.1004 C.0120D.0450 设有下列语句,则()是对a数组元素的不正确引用,其中0≤i<10。 inta[1={0,1,2,3,4,5,6,7,8,9},*p=a; A.a[p-a]B.*(&a[i]) C.p[i]D.*(*(a+i)) 若有以下程序: main {charch[]="Iamstudent! ",*p; p=ch; printf("%x\n",p); printf("%x\n",p+9); } 其中第一个printf()运行结果是ffd6,则第二个printf()运行结果是()。 A.ffdfB.ffe8C.ffd6D.ffcf 以下程序的运行结果是()。 main() {inti; charaa[][3]={'a','b','c','d','e','f'}; char(*p)[3]=aa; for(i=0;i<2;i++) if(i==0)aa[i][i]+=**(p++); printf("%c\n",**p); } A.aB.bC.cD.d 设有下列语句: charstr1[]="string",str2[8],*str3,*str4="string"; 则()是对库函数strcpy的不正确调用。 此函数用来复制字符串。 A.strcpy(str3,"HELLO3");B.strcpy(str2,"HELLO2"); C.strcpy(str1,"HELLO1");D.strcpy(str4,"HELLO4"); 若有以下定义和语句,且0≤i<4,0≤j<3,则不能访问a数组中的元素的是()。 inti,(*p)[3]; inta[][3]={1,2,3,4,5,6,7,8,9,10,11,12}; p=a; A.*(*(a+i)+j)B.p[i][j] C.(*(p+i))[j]D.p[i]+j 以下关于指针概念的叙述中,错误的是()。 A.一个指针变量只能指向同一类型的变量 B.一个变量的地址称为该变量的指针 C.两个同类型的指针变量可以作加减运算 D.任何指针变量都可以与空指针NULL进行比较 以下程序的运行结果是()。 fun3(intx) {staticinta=3; a+=x; returna; } main() {intk=2,m=1,n; n=fun3(k); n=fun3(m); printf("%d\n",n); } A.3B.4C.6D.9 以下程序运行后,输出的结果是()。 func(inta) {staticintm=0; m+=a; return(m); } main() {intk=4,p; p=func(k);printf("%d,",p); p=func(k);printf("%d\n",p); } A.4,4B.0,4C.4,8D.8,8 以下程序的运行结果是()。 age(n) intn; {intc; if(n==1)c=10; else if(n%2==0)c=age(n-1)+2; elsec=age(n-1)+3; return(c); } main() {printf("%d\n",age(5));} A.18B.20C.10D.21 以下程序的运行结果是()。 voidast(intx,inty,int*cp,int*dp) {*cp=x+y;*dp=x-y; } main() {inta=4,b=3,c,d; ast(a,b,&c,&d); printf("%d,%d\n",c,d); } A.7,1B.1,7C.7,-1D.c、d未赋值,编译出错 以下程序的输出结果是()。 swap(int*p,int*q) {intt; t=*p;*p=*q;*q=t; } main() {inta=10,b=20; swap(&a,&b); printf("%d,%d\n",a,b); } A.10,10B.20,20C.10,20D.20,10 以下程序的运行结果是()。 main() {voidchange_p(); int*p,a[]={1,4,7,10}; p=&a[1]; change_p(p); printf("%d\n",*p); } voidchange_p(int*pi) {*pi+=2; pi+=2; *pi+=2; } A.7B.8C.5D.6 以下程序段的运行结果是()。 enumweekday{aa,bb=2,cc,dd,ee}week=ee; printf("%d\n",week); A.eeB.5C.2D.4 以下对枚举类型进行定义,不正确的是()。 A.enumb{1,2,3};B.enuma{A,B,C}; C.enumc{D=3,E,F};D.enumd{X=0,Y=5,Z=9}; 在C程序中,设一表达式含有int、long、unsigned和char类型的常数和变量,则表达式的最后运算结果是()。 A.intB.charC.unsignedD.long 若定义如下结构,则能打印出字母M的语句是()。 structperson{ charname[9]; intage; }; structpersonclass[10]={{"Wu",20},{"Liu",23},{"Ma",21},{"zhang",22}}; A.printf("%c\n",class[3].name);B.printf("%c\n",class[2].name[1]); C.printf("%c\n",class[2].name[0]);D.printf("%c\n",class[3].name[1]); 以下程序的运行结果是()。 main() {unionu_type {inti; doublex; floatf; }; structstr_type {charstr[10]; unionu_typeu[10]; }; printf("%d\n",sizeof(structstr_type)); } A.81B.90C.150D.120 以下程序的输出结果是()。 main() {printf("%d\n",fac(5)); } fac(intn) {ints; if(n==1)return1; elsereturnn*fac(n-1); } A.120B.60C.6D.1 以下程序的运行结果是()。 main() {charch[7]="12xy89"; inti,s=0; for(i=0;ch[i];i++) if(ch[i]>='0'&&ch[i]<='9')s=10*s+ch[i]-'0'; printf("%d\n",s); } A.12B.xyC.12xy89D.1289 以下程序运行后,输出的结果是()。 fun(char*w) {chart,*s1,*s2; for(s1=w,s2=w+strlen(s1)-1;s1 {t=*s1; *s1=*s2; *s2=t; } } main() {char*p="12345"; fun(p); puts(p); } A.12345B.54321C.15115D.51551 以下程序中的循环执行了()次。 #defineN2 #defineMN+1 #defineNUM(M+1)*M/2 main() {inti,n=0; for(i=0;i printf("%d\n",n); } A.5B.6C.8D.9 以下程序的输出结果是()。 #defineSUM(y)1+y main() {intx=2; printf("%d\n",SUM(5)*x); } A.10B.11C.12D.15 以下程序的运行结果是()。 #defineM(x,y)x*y main() {inta=3,b=2,s1,s2,f12(); s1=M(a+b,a-b); s2=M(a-b,a+b); printf("%d,%d,%d,%d\n",s1,s2,f12(a+b,a-b),f12(a-b,a+b)); } f12(intx,inty) {return(x*y);} A.7,-1,5,5B.5,5,7,-1 C.5,5,5,5D.7,-1,7,-1 若有以下定义: structlink {intdata; structlink*next; }*p; 并已建立如下图所示的链表结构: datanext p 指针p指向该单向链表的第一个结点,要输出链表所有结点的数据成员data,以下循环语句正确的是()。 A)for(;p! =NULL;p++)printf("%d,",p->data); B)for(;! p;p=p->next)printf("%d,",(*p).data); C)while(p) {printf("%d,",(*p).data); p=p->next; } D)while(p! =NUll) {printf("%d,",p->data); p++; } 若有以下定义: structlink {intdata; structlink*next; }a,b,c,*head,*p; 其中,指针head指向变量a,p指向变量c,a.next指向变量b,链表结构如下图所示: abc datanext headp 则能够把c插入到a和b之间并形成新链表的程序段是()。 A)a.next=c;c.next=b; B)head.next=p;p.next=head.next; C)head->next=&c;p->next=head->next; D)(*head).next=p;(*p).next=&b; 若有以下定义: structlink {intdata; structlink*next; }*head,*p; 并已建立如下图所示的链表结构: p datanext head 则能保留链表其它结点,而删除p所指向结点的程序段是()。 A)head->next=p->next;free(p); B)head->next=p;p->next=head->next;free(p); C)free(p);head->next=p;p->next=hea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 习题 解答