《C语言程序设计习题试题 答案.doc》由会员分享,可在线阅读,更多相关《C语言程序设计习题试题 答案.doc(264页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【单项选择题参考答案】【1.1】答案: A注释:int是C语言的关键字【1.2】答案: B【1.3】答案:A【1.4】答案:B注释:include是预处理命令;scanf是函数名;type不是C语言的关键字。【1.5】答案:D【1.6】答案:D【1.7】答案:A【1.8】答案:A注释:int型表示整数的范围是-3276832767。【1.9】答案:D注释:整型常量-1在计算机中表示为补码1111 1111 1111 1111,用十六进制显示这个数时,最左边的1不会被解释为符号位,而是与右边其它位共同转换为十六进制数。【1.10】答案:B注释:长整型数32768在计算机内的表示是1000 000
2、0 0000 0000,以一般整型进行输出时,此数恰是-32768的补码。【1.11】答案:C注释:长整型数65539在计算机内的表示是0001 0000 0000 0000 0011,以一般整型进行输出时,仅将右侧16位二进制数转换为十进制数。【1.12】答案:A注释:C语言中,int型的负数是采用补码表示的。【1.13】答案:D【1.14】答案:C注释:变量c是字符型,可用字符常量为它赋值。字符常量必须用单引号括起来,所以B是错误的;在单引号或双引号内的反斜线用于表示转义字符,A选项在无引号时使用反斜线是错误的;C选项单引号内出现反斜线表示它与后面的数字组成一个转义字符;单引号只允许括起一
3、个字符,D选项在单引号内出现4个字符,是错误的。【1.15】答案:C【1.16】答案:D注释:空字符和空格符是不同的两个字符,空格符的ASCII码值是32,空字符的ASCII值是0。【1.17】答案:A【1.18】答案:B【1.19】答案:A【1.20】答案:C【1.21】答案:B注释:单纯从C语言语法来说,选项B、C都是正确的,但是选项C中第一个运算的两个对象都是整型常数,其结果也是整型数0,最后的运算结果也就是0了。【1.22】答案:C【1.23】答案:A注释:将条件表达式增加一个括号,此式变为ab?a:(cd?c:d),它的运算顺序就清楚了。由于条件运算符的结合性是从右向左,所以括号可以
4、省略。它的运算顺序是先算出右边的条件表达式cd?c:d的值,然后求条件表达式anext是a0的地址,引用其成员n再做前增1运算,结果就是2。【1.80】答案:B【1.81】答案:D【1.82】答案:A【1.83】答案:C注释:联合变量temp的成员是占用同一存储单元,它的长度是4个字节。266的二进制表示是,存放在存储单元的低端两个字节,如下图:高字节 0 0 0 0 0 0 0 1低字节 0 0 0 0 1 0 1 0引用temp.ch进行输出,只取最低的第一个字节。【1.84】答案:D注释:由于结构指针指向了结构数组的0号元素,所以表达式(p+)-m的含义是先取出m(变量a的地址),然后指
5、针p加1。表达式*(p+)-m的含义是先取出m的内容(变量a的值),然后指针p再加1。表达式(*p).m的含义是取出m(变量a的地址)。表达式*(+p)-m的含义是先将指针p加1,然后再取m的内容(变量b的值)。【1.85】答案:D【1.86】答案:B【1.87】答案:C【1.88】答案:A【1.89】答案:D【1.90】答案:D【1.91】答案:A【1.92】答案:B【1.93】答案:A【1.94】答案:D注释:函数fopen中的第二参数是打开模式,r模式是只读方式,不能写文件;a+模式是读/追加方式,允许从文件中读出数据,但所有写入的数据均自动加在文件的末尾;w模式是写方式,允许按照用户的
6、要求将数据写入文件的指定位置,但打开文件后,首先要将文件的内容清空。r+模式是读/写方式,不但允许读文件,而且允许按照用户的要求将数据写入文件的指定位置,且在打开文件后,不会将文件的内容清空。本题的要求是修改文件的内容,因此只能选择答案D。【1.95】答案:C【1.96】答案:D【1.97】答案:C【1.98】答案:B注释:语句z=2*(N+Y(5+1)引用了两个宏定义。C语言是区分字母大小的,第二个宏定义中的N直接用3替换,用5+1替换n,则有z=2*(3+(3+1)*5+1);结果是48。注意对于带参数的宏亦是直接的文本替换,此例中n用5+1去替换,结果是(N+1)*5+1,而不是(N+1
7、)*(5+1)。 【1.99】答案:C注释:宏替换后的结果是printf(%d,10/3*3)。【1.100】答案:C二、 阅读程序题导读:学会阅读程序对于初学者来说很重要,一方面可以巩固所学的语法知识,另一方面通过阅读别人写好的程序来打开自己的思路,就所谓见多识广。读者通过阅读理解程序,从给出的四个备选参考答案中,选择程序的正确输出。如果选择有误,就要认真分析原因,是概念方面的错误还是对程序逻辑理解不对,从而加深对语法规则的理解,提高程序设计能力。程序设计语言是开发程序的一个工具,学习语言的目的是为了编写程序来解决实际问题,所以特别提倡通过实际上机来检验备选答案,增强动手能力。习题基本上是按
8、照教材的章节来安排的,读者可以根据学习的进度选择部分习题。 【2.1】以下程序的输出结果是 。 main( ) float a;a=1/;printf(%g,a);A) 0.00000e+00 B) 0.0 C) 1.00000e-07 D) 0【2.2】下面程序的输出结果是_。#include main( ) int x=10; int x=20;printf (%d,, x);printf(%dn, x);A) 10,20 B) 20,10 C) 10,10 D) 20,20【2.3】以下程序的输出结果是_。main() unsigned int n;int i=-521;n=i;prin
9、tf(n=%un,n);A) n=-521 B) n=521 C) n=65015 D) n=【2.4】以下程序的输出结果是 。 main( ) int x=10, y=10; printf(%d %dn, x, y);A) 10 10 B) 9 9 C) 9 10 D) 10 9【2.5】以下程序的输出结果是_。main() int n=1;printf(%d %d %dn,n,n+,n-);A) 1 1 1 B) 1 0 1 C) 1 1 0 D) 1 2 1【2.6】以下程序的输出结果是_。main() int x=0x02ff,y=0x0ff00;printf(%dn,(x&y)4|0
10、x005f);A) 127 B) 255 C) 128 D) 1 【2.7】以下程序的输出结果是_。main() int a=1;char c=a;float f=2.0;printf(%dn,(!(a=0),f!=0&c=A);A) 0 B) 1 【2.8】下面程序的输出结果是_。main() int a=1,i=a+1;do a+ ;while( !i+ 3); printf(%dn,a);A) 1 B) 2 C) 3 D) 4 【2.9】下面程序的输出结果是_。main() int a=111;a=a00;printf(%d,%on,a,a);A) 111,157 B) 0,0 C) 2
11、0,24 D) 7,7【2.10】下面程序的输出结果是_。main() char s12= a book;printf(%.4s,s);A) a book! B) a book!b)a=b;b=c;c=a;printf(a=%d b=%d c=%dn,a,b,c);A) a=10 b=50 c=10 B) a=10 b=30 c=10C) a=50 b=30 c=10 D) a=50 b=30 c=50【2.13】以下程序的输出结果是 。 main() int a=0,b=1,c=0,d=20;if(a) d=d-10;else if(!b)if(!c) d=15;else d=25;prin
12、tf(d=%dn,d);A) d=10 B) d=15 C) d=20 D) d=25【2.14】下面程序的输出结果为 。main() int a=1,b=0;switch(a) case 1: switch (b) case 0: printf(*0*); break;case 1: printf(*1*); break;case 2: printf(*2*); break;A) *0* B) *0*2* C) *0*1*2* D) 有语法错误【2.15】以下程序的输出结果是 。 main() char *s=;int v1=0,v2=0,v3=0,v4=0,k;for(k=0;sk;k+)
13、switch(sk) case 1: v1+;case 3: v3+;case 2: v2+;default: v4+;printf(v1=%d, v2=%d, v3=%d, v4=%dn,v1,v2,v3,v4);A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1C) v1=5,v2=8,v3=6,v4=1 D) v1=4,v2=7,v3=5,v4=8【2.16】下面程序的输出是 。main() int x=1,y=0,a=0,b=0;switch(x) case 1: switch(y) case 0: a+;break;case 1: b+;bre
14、ak;case 2: a+;b+;break;printf(a=%d,b=%dn,a,b);A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2【2.17】下面程序的输出是_。main() int num=0;while(num=2) num+;printf(%dn,num);A) 1 B) 1 C) 1 D) 12 2 23 34【2.18】下面程序的输出结果是_。main() int a=1,b=0;do switch(a) case 1: b=1;break;case 2: b=2;break;default : b=0;b=a+b;while(!b);
15、printf(a=%d,b=%d,a,b);A) 1,2 B) 2,1 C) 1,1 D) 2,2【2.19】从键盘上输入时,下面程序的输出是_。#include main() int c;while(c=getchar()!=n)switch(c -2) case 0:case 1: putchar(c+4);case 2: putchar(c+4);break;case 3: putchar(c+3);default: putchar(c+2);break;printf(n);A) B) C) D) 【2.20】下面程序的输出结果是_。main() int k=0;char c=A;do
16、switch(c+) case A: k+;break;case B: k-;case C: k+=2;break;case D: k=k%2;contiue;case E: k=k+10;break;default: k=k/3;k+;while(cC) ;printf(k=%dn,k);A) k=1 B) k=2 C) k=3 D) k=4【2.21】下面程序的输出结果是_。main() int x,i;for(i=1;i=100;i+) x=i;if(+x%2=0)if(+x%3=0)if(+x%7=0)printf(%d ,x);A) 39 81 B) 42 84 C) 26 68 D
17、) 28 70【2.22】下面程序的输出结果是_。#include main( ) int i,k,a10,p3;k=5;for(i=0;i10;i+)ai=i;for(i=0;i3;i+)pi=ai*(i+1);for(i=0;i3;i+)k+=pi*2;printf(%dn,k);A) 20 B) 21 C) 22 D) 23【2.23】假定从键盘上输入3.6,2.4,下面程序的输出是_。#include main() float x,y,z;scanf(%f,%f,&x,&y);z=x/y;while(1) if(fabs(z)1.0) x=y;y=z;z=x/y;else break;
18、printf(%fn,y); A) 1. B) 1. C) 2. D) 2.【2.24】下面程序的输出结果是_。main() int i,j,x=0;for(i=0;i2;i+) x+;for(j=0;j-3;j+) if(j%2)continue;x+;x+;printf(x=%dn,x);A) x=4 B) x=8 C) x=6 D) x=12【2.25】下面程序的输出结果是_。main() int i,j,k=10;for(i=0;i2;i+) k+; int k=0;for(j=0;j=3;j+) if(j%2) continue;k+;k+;printf(k=%dn,k);A) k=
19、4 B) k=8 C) k=14 D) k=18【2.26】下面程序的输出结果是_。#include main( ) int n33, i, j;for(i=0;i3;i+ )for(j=0;j3;j+ )nij=i+j;for(i=0;i2;i+ )for(j=0;j2;j+ )ni+1j+1+=nij;printf(%dn, nij);A) 14 B) 0 C) 6 D) 不确定【2.27】下面程序的输出结果是_。#include main( ) int a45=1,2,4,-4,5,-9,3,6,-3,2,7,8,4;int i,j,n;n=9;i=n/5;j=n-i*5-1;print
20、f(a%d%d=%dn, i,j,aij);A) 6 B) -3 C) 2 D) 不确定【2.28】下面程序的输出结果是_。int m33= 1, 2, 3 ;int n33= 1, 2, 3 ;main( ) printf(%dn, m10+n00 ); /* */printf(%dn, m01+n10 ); /* */ A) 0 B) 1 C) 2 D) 3 A) 0 B) 1 C) 2 D) 3【2.29】下面程序的输出结果是_。#include main( ) char s150=some string *,s2=test;printf(%sn, strcat(s1,s2);A) so
21、me string * B) testC) some stritest D) some string *test【2.30】下面程序的输出结果是_。#include f(char *s) char *p=s;while(*p!=0)p+;return(p-s);main() printf(%dn,f(ABCDEF);A) 3 B) 6 C) 8 D) 0【2.31】下面程序的输出结果是_。#include #include main( ) char str100 =How do you do;strcpy( str + strlen(str)/2, es she);printf(%sn, st
22、r);A) How do you do B) es she C) How are you D) How does she【2.32】下面程序的输出结果是_。#include func(int a,int b) int c;c=a+b;return(c);main() int x=6,y=7,z=8,r;r=func(x-,y+,x+y),z-);printf(%dn,r);A) 11 B) 20 C) 21 D) 31【2.33】下面程序的输出结果是_。#include void fun(int *s) static int j=0;do sj+=sj+1;while(+j2);main()
23、int k,a10=1,2,3,4,5;for(k=1;k3;k+)fun(a);for(k=0;k5;k+)printf(%d,ak);A) 35756 B) 23445 C) 35745 D) 12345【2.34】下面程序的输出结果是_。#include int k=1;main( ) int i=4;fun(i);printf (n%d,%d,i,k); /* */fun(int m) m+=k;k+=m; char k=B;printf(n%d,k-A); /* */printf(n%d,%d,m,k); /* */ A) 4,1 B) 5,6 C) 4,6 D) A,B,C参考答案
24、都不对 A) 1 B) -59 C) -64 D) A,B,C参考答案都不对 A) 5,66 B) 1,66 C) 5,6 D) A,B,C参考答案都不对【2.35】下面程序的输出结果是_。#include fun(int n, int *s) int f1, f2;if(n=1|n=2)*s=1;else fun(n-1, &f1);fun(n-2, &f2);*s=f1+f2;main() int x;fun(6, &x);printf(%dn, x);A) 6 B) 7 C) 8 D) 9 【2.36】下面程序的输出结果是_。int w=3;main() int w=10;printf(
25、%dn,fun(5)*w);fun(int k) if(k=0) return(w);return(fun(k-1)*k);A) 360 B) 3600 C) 1080 D) 1200【2.37】下面程序的输出结果是_。#include funa(int a) int b=0;static int c=3;a=c+,b+;return(a);main() int a=2,i,k;for(i=0;i2;i+)k=funa(a+);printf(%dn,k);A) 3 B) 0 C) 5 D) 4【2.38】下面程序的输出结果是_。#include void num() extern int x,
26、y;int a=15,b=10;x=a-b;y=a+b;int x,y;main() int a=7,b=5;x=a-b;y=a+b;num();printf(%d,%dn,x,y);A) 12,2 B) 5,25 C) 1,12 D) 输出不确定【2.39】下面程序的输出结果是_。main() int a=2,i;for(i=0;i3;i+)printf(%4d,f(a);f(int a) int b=0;static int c=3;b+;c+;return(a+b+c);A) 7 7 7 B) 7 10 13 C) 7 9 11 D) 7 8 9【2.40】下面程序的输出结果是_。#in
27、clude try( ) static int x=3;x+;return(x);main( ) int i, x;for(i=0; i=2; i+ )x=try( );printf(%dn, x);A) 3 B) 4 C) 5 D) 6【2.41】下面程序的输出结果是_。#include main( ) int x=1; void f1( ), f2( ); f1( );f2(x); printf(%dn, x);void f1(void) int x=3; printf(%d , x); void f2( x )int x; printf(%d , +x); A) 1 1 1 B) 2 2
28、 2 C) 3 3 3 D) 3 2 1【2.42】下面程序的输出结果是_。#include #define SUB(X,Y) (X)*Ymain() int a=3,b=4;printf(%dn,SUB(a+,b+);A) 12 B) 15 C) 16 D) 20【2.43】下面程序的输出结果是_。main() int a=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) 1 2 3 3 5 4 B)
29、 1 2 3 4 5 6 C) 1 2 2 3 4 5 D) 1 2 3 4 4 5【2.44】下面程序的输出结果是_。main() int a34=1,2,3,4,5,6,7,8,9,10,11,12;int *p=a;p+=6;printf(%d ,*p); /* */printf(%d ,*(*(a+6); /* */printf(%d ,*(a1+=2); /* */printf(%d,*(&a00+6);/* */ A) 7 7 7 7 B) 句语法错误 C) 句语法错误 D) 句语法错误【2.45】下面程序的输出结果是_。#define FMT %Xn#include main(
30、) static int a 4 = 1,2,3,4,5,6,7,8,9,10,11,12 ;printf( FMT, a22); /* */printf( FMT, *(*(a+1)+1) ); /* */ A) 9 B) 11 C) A D) B A) 6 B) 7 C) 8 D) 前面三个参考答案均是错误的【2.46】下面程序的输出结果是_。#include main ( ) int a=1, 2, 3, 4, 5 ;int x, y, *p;p=&a0;x=*(p+2);y=*(p+4);printf(%d,%d,%dn, *p, x, y);A) 1,3,5 B) 1,2,3 C)
31、1,2,4 D) 1,4,5【2.47】下面程序的输出结果是_。void ive(x,n)int x,n; int t,*p;p=x+n-1;while(xp) t=*x;*x+=*p;*p-=t;return;main() int i,a=1,2,3,4,5,6,7,8,9,0;ive(a,10);for(i=0;i10;i+)printf(%d ,ai);printf(n); A) 1 2 3 4 5 6 7 8 9 0 B) 0 9 8 7 6 5 4 3 2 1C) 1 3 5 7 9 2 4 6 8 0 D) 0 8 6 4 2 9 7 5 3 1【2.48】下面程序的输出结果是_。#include string.hfun(char *w,int n) char t,*s1,*s2;s1=w;s2=w+n-1;while(s1s2) t=*s1+;*s1=*s2-;*s2=t;main() static char *p=;fun(p,strlen(p);printf(%s,p);A) B) C) D) 【2.49】下面程序的输出结果是_。#include char *p = abcdefghijklmnopq ;main( ) int i=0;while( *p+!=e );printf(%cn, *p); A) c B) d C) e D) f