1、阅读程序题【2.1】如下程序输出成果是 。 main(D ) float a;a=1/;printf(%g,a);A) 0.00000e+00 B) 0.0 C) 1.00000e-07 D) 0【2.2】下面程序输出成果是B_。#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】如下程序输出成果是_B_。main() unsigned int n;int i=-521;n=i;printf(n=%un,n);/变量i中负号传送给变量n后,
2、因n是无符号数,已不作为负号解决。A) n=-521 B) n=521 C) n=65015 D) n=【2.4】如下程序输出成果是 。 main(D ) int x=10,y=10; printf(%d %dn,x,y);A) 10 10 B) 9 9 C) 9 10 D) 10 9【2.5】如下程序输出成果是_B。main() int n=1;printf(%d %d %dn,n,n+,n-); / C语言在执行printf()时,对函数中表达式表列解决顺序是从后向前,即先解决n- -,再解决n+,最后解决n,A) 1 1 1 B) 1 0 1 C) 1 1 0 D) 1 2 1【2.6】
3、如下程序输出成果是_。main() int x=0x02ff,y=0x0ff00;printf(%dn,(x&y)4|0x005f);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()
4、int a=111;a=a00;printf(%d,%on,a,a);A) 111,157 B) 0,0 C) 20,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
5、=20;if(a) d=d-10;else if(!b)if(!c) d=15;else d=25;printf(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() c
6、har *s=12134211;int v1=0,v2=0,v3=0,v4=0,k;for(k=0;sk;k+)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) c
7、ase 1:switch(y) case 0:a+;break;case 1:b+;break;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:
8、b=2;break;default :b=0;b=a+b;while(!b);printf(a=%d,b=%d,a,b);A) 1,2 B) 2,1 C) 1,1 D) 2,2【2.19】从键盘上输入446755时,下面程序输出是_。#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) 888988 B) 6689
9、66 C) 88898787 D) 66898787【2.20】下面程序输出成果是_。main() int k=0;char c=A;do 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
10、)if(+x%3=0)if(+x%7=0)printf(%d ,x);A) 39 81 B) 42 84 C) 26 68 D) 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,&
11、x,&y);z=x/y;while(1) if(fabs(z)1.0) x=y;y=z;z=x/y;else break;printf(%fn,y); A) 1.500000 B) 1.600000 C) 2.000000 D) 2.400000【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(
12、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=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 ma
13、in( ) 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;printf(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 ma
14、in( ) char s150=some string *,s2=test;printf(%sn,strcat(s1,s2);A) some 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
15、=How do you do;strcpy( str + strlen(str)/2,es she);printf(%sn,str);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
16、void fun(int *s) static int j=0;do sj+=sj+1;while(+j2);main() 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); /*
17、*/printf(n%d,%d,m,k); /* */ A) 4,1 B) 5,6 C) 4,6 D) A,B,C参照答案都不对 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
18、D) 9 【2.36】下面程序输出成果是_。int w=3;main() int w=10;printf(%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)
19、4【2.38】下面程序输出成果是_。#include void num() extern int x,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
20、B) 7 10 13 C) 7 9 11 D) 7 8 9【2.40】下面程序输出成果是_。#include 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(
21、 x )int x; printf(%d ,+x); A) 1 1 1 B) 2 2 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;pr
22、intf(%d %d ,*p,*(a+3); A) 1 2 3 3 5 4 B) 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】下面程
23、序输出成果是_。#define FMT %Xn#include main( ) 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
24、,y);A) 1,3,5 B) 1,2,3 C) 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
25、 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=1234567;fun(p,strlen(p);printf(%s,p);A) 7654321 B) 1717171 C) 7171717 D) 1711717【2.49】下面程序输出成果是_。#include char *p = abcdefghijklmnopq ;main( ) int i=0;while
26、( *p+!=e );printf(%cn,*p); A) c B) d C) e D) f【2.50】下面程序输出成果是_。#include f(int x,int y) return (y-x);main( ) int a=5,b=6,c;int f(),(*g)()=f;printf(%dn,(*g)(a,b) );A) 1 B) 2 C) 3 D) 前面三个参照答案均是错误【2.51】下面程序输出成果是_。#include main( ) int a=1,*p,*pp;pp=&p; p=&a;a+;printf (%d,%d,%dn,a,*p,*pp);A) 2,1,1 B) 2,1,
27、2 C) 2,2,2 D) 程序有错误【2.52】下面程序输出成果是_。main() char *alpha7=ABCD,EFGH,IJKL,MNOP,QRST,UVWX,YZ;char *p;int i;p=alpha;for(i=0;i4;i+)printf(%c,*(pi);printf(n);A) AEIM B) BFJN C) ABCD D) DHLP【2.53】下面程序输出成果是_。#include char *pp23= abc,defgh,ijkl,mnopqr,stuvw,xyz;main ( ) printf(%cn,*(pp+1); /* */printf(%cn,*pp
28、0); /* */printf(%cn,(*(*(pp+1)+1)4); /* */printf(%cn,*(pp12+2); /* */printf(%sn,*(pp+1); /* */ A) a B) d C) i D) m A) a B) d C) i D) m A) h B) l C) q D) w A) k B) o C) u D) z A) ijkl B) mnopqr C) stuvw D) xyz【2.54】下面程序输出成果是_。#include stdio.hstruct str1 char c5;char *s;main( ) struct str1 s12= ABCDEF
29、GH,IJK,LMN ;struct str2 struct str1 sr;int d;s2=OPQ,RST,32767;struct str1 *p2;p0=&s10;p1=&s11;printf(%s,+p1-s); /* */printf(%c,s2.sr.c2); /* */ A) LMN B) MN C) N D) IJK A) O B) P C) Q D) R【2.55】如下程序输出成果是_。struct st int x,*y;*p;int s=10,20,30,40;struct st a=1,&s0,2,&s1,3,&s2,4,&s3;main() p=a;printf(%
30、dn,+(*(+p)-y);A) 10 B) 11 C) 20 D) 21 【2.56】如下程序输出成果是_。#include main() union EXAMPLE struct int x,y;in;int a,b;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(%d,%dn,e.in.x,e.in.y);A) 2,3 B) 4,4 C) 4,8 D) 8,8 【2.57】下面程序输出成果是_。#include main() union int i2;long k;char c4;r,*s=&r;s-i0=0x39;s-i1=0x38
31、;printf(%cn,s-c0);A) 39 B) 9 C) 38 D) 8【2.58】下面程序输出是 。main ( ) printf(%dn,EOF);A) -1 B) 0 C) 1 D) 程序是错误参照答案【2.1】参照答案:D注释:程序中除法运算两个操作数均是整型,运算成果也是整型。【2.2】参照答案:B注释:C语言容许在程序块(分程序)中阐明变量。【2.3】参照答案:C注释:变量i中负号传送给变量n后,因n是无符号数,已不作为负号解决。【2.4】参照答案:D注释:对变量x操作是后缀形式,变量x减1操作要在执行完 printf函数之后才进行,因此变量x值在输出时候依然保持原值10。【
32、2.5】参照答案:B注释:C语言在执行printf()时,对函数中表达式表列解决顺序是从后向前,即先解决n- -,再解决n+,最后解决n,并且每一种表达式作为一种解决单元,也就是说在不同表达式中自增自减运算是单独考虑。【2.6】参照答案:A注释:变量x和变量y做按位与,成果为0x0200,右移4位为0x0020,再与0x005f做按位或,最后成果为0x007f。【2.7】参照答案:A注释:逗号表达式成果是用逗号分开最后一种表达式值,此题由于 c=A值是0,因此逗号表达式值为0。【2.8】参照答案:B【2.9】参照答案:A【2.10】参照答案:C注释:在输出格式描述%m.ns中,m是输出总长度,
33、n是实际字符个数,这里m没有给出,则输出总长度就是实际输出字符个数。【2.11】参照答案:C【2.12】参照答案:B【2.13】参照答案:C【2.14】参照答案:B【2.15】参照答案:D【2.16】参照答案:A【2.17】参照答案:C【2.18】参照答案:A【2.19】参照答案:C注释:在switch语句中,case自身仅起到语句标号作用,不会变化语句流程,执行break语句才干退出当前switch语句。【2.20】参照答案:D注释:siwtch语句表达式中,变量c是后缀增一运算,第一次执行do-while循环时,执行case A背面语句。【2.21】参照答案:D【2.22】参照答案:B【2
34、.23】参照答案:B注释:fabs()是浮点数绝对值函数。【2.24】参照答案:A【2.25】参照答案:C注释:C语言容许在程序块(分程序)内阐明变量,如果在程序块内阐明变量和程序块外变量同名,在块外阐明变量在块内是不可见。可将此题和【2.11】进行比较,加深理解。【2.26】参照答案:C【2.27】参照答案:B【2.28】参照答案: D A【2.29】参照答案:D【2.30】参照答案:B注释:输出成果为字符串长度。【2.31】参照答案:D注释:字符串拷贝函数strcpy()规定两个参数都是字符串首地址。本题中第二个参数是字符串常量,接受这个字符串第一种参量不是直接给出字符数组名,而是进行了地
35、址运算后成果。由于str字符串长度是13,除2取整后是6,第一种参数给出地址是字符数组str首地址加6,也就是本来字符串中第二个空格位置,把es she从该处放入,字符串str变为How does she。【2.32】参照答案:C注释:main函数调用func函数时,第一种实参使用是逗号表达式值,也就是x+y成果。由于对变量x、y、z进行是后缀运算,因此函数func参数值是13和8。【2.33】参照答案:C【2.34】参照答案: C A C【2.35】参照答案:C【2.36】参照答案:B注释:函数fun进行了递归调用,实际进行运算是54321310。主函数内阐明局部变量w屏蔽了外部变量w,因此
36、在主函数中外部变量w是不可见,在调用printf函数时表达式fun(5)*w中w值是10。【2.37】参照答案:D注释:main函数三次调用了函数funa,在funa函数中静态变量c仅在第一次调用时进行了初始化,再次调用时不再对静态变量赋初值。【2.38】参照答案:B注释:main函数和num函数中都阐明了变量a和b,由于它们是内部变量,因此它们分别在阐明它们函数内有效。外部变量x和y在函数num之后被阐明,而在num函数中又要引用它们,因此在num函数中用核心字extern阐明变量x和y是一种外部变量,也就是告知计算机这两个变量在fun函数以外被阐明,此处不是定义两个int型变量。【2.39
37、】参照答案:D注释:函数f中变量c是静态变量,仅在第一次调用函数f时它被初始化为3,第二次调用函数f时c值是4,第三次调用函数f时c值是5。【2.40】参照答案:D【2.41】参照答案:D注释:程序中有三个x分别在三个不同函数中,这三个x都是自动变量,因此三个x分别局部于三不同函数,在三个函数中对x操作互不影响。【2.42】参照答案:A【2.43】参照答案:A注释:*(+p)和*+p都是指针变量值前加1,第一次指向a1,第二次指向a2;a+3是a3地址。【2.44】参照答案:C注释:句没有语法错误,但是a+6指向数组之外,由于a是a0地址,a+1是a1地址,a+2是a2地址,显然数组a没有a6
38、分量。句错误,由于a1是地址常量,它是a10地址,对于地址常量是不可以进行赋值运算。【2.45】参照答案: D A注释:如果FMT定义为%xn,则输出16进制数据用小写字母表达。【2.46】参照答案:A注释:语句p=&a0表达将数组a中元素a0地址赋给指针变量p,则p就是指向数组首元素a0指针变量,&a0是取数组首元素地址。对于指向数组首址指针,p+i(或a+i)是数组元素ai地址,*(p+i)(或*(a+i)就是ai值。【2.47】参照答案:B【2.48】参照答案:D【2.49】参照答案:D【2.50】参照答案:A注释:变量g是指向函数指针,(*g)(a,b)是调用指针g所指向函数。【2.51】参照答案:C注释:p是指针,pp是指向指针指针。【2.52】参照答案:A注释:对于指向数组指针变量可以做下标运算,pi和alphai都是指向字符串首地址,*pi取出字符串第一种字符。【2.53】参照答案: D A D D B注释:pp是一种二维指针数组,pp+1指向数组第二维,*(pp+1)是第二维起始地址,*(pp+1)是第二维第一种元素地址,*(pp+1)是第二维第一种元素内容,因此,参照答案应选D。*(pp+1)+1是第二维第二个元素地址,*(*(pp+1)+1)是第二