您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页C语言程序设计阅读程序题库及答案

C语言程序设计阅读程序题库及答案

来源:华佗小知识


C语言程序设计阅读程序

题库及答案

Newly compiled on November 23, 2020

阅读程序题

【】以下程序的输出结果是 。 main(D ) { float a;

printf(\"%g\",a); }

A) +00 B) C) D) 0

【】下面程序的输出结果是B____。 #include <> main( ) { int x=10; { int x=20; printf (\"%d,\;

}

printf(\"%d\\n\; }

A) 10,20 B) 20,10 C) 10,10 D) 20,20

【】以下程序的输出结果是___B_。 main()

{ unsigned int n; int i=-521; n=i;

printf(\"n=%u\\n\; }s\; }

A) a book! B) a book!<四个空格》 C) a bo D) 格式描述错误,输出不确定

【】下面程序的输出结果是____。 main() { int a,b;

scanf(\"%2d%3d\; printf(\"a=%d b=%d\\n\; }

A) a=12 b=34 B) a=123 b=45 C) a=12 b=345 D) 语句右错误

【】以下程序段的输出结果是 。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a;

printf(\"a=%d b=%d c=%d\\n\;

A) a=10 b=50 c=10 B) a=10 b=30 c=10 C) a=50 b=30 c=10 D) a=50 b=30 c=50

【】以下程序的输出结果是 。 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; printf(\"d=%d\\n\; }

A) d=10 B) d=15 C) d=20 D) d=25

【】下面程序的输出结果为 。 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) 有语法错误

【】以下程序的输出结果是 。 main()

int v1=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\; }

A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1 C) v1=5,v2=8,v3=6,v4=1 D) v1=4,v2=7,v3=5,v4=8

【】下面程序的输出是 。 main()

{ int x=1,y=0,a=0,b=0; switch(x)

{ case 1: switch(y) { case 0: a++;break; case 1: b++;break; }

case 2: a++;b++;break; }

printf(\"a=%d,b=%d\\n\; }

A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2

【】下面程序的输出是____。 main() { int num=0; while(num<=2) { num++;

printf(\"%d\\n\; } }

A) 1 B) 1 C) 1 D) 1 2 2 2 3 3 4

【】下面程序的输出结果是____。 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);

printf(\"a=%d,b=%d\; }

A) 1,2 B) 2,1 C) 1,1 D) 2,2

【】从键盘上输入\"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\"); }

【】下面程序的输出结果是____。 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(c<'C') ; printf(\"k=%d\\n\; }

A) k=1 B) k=2 C) k=3 D) k=4 【】下面程序的输出结果是____。 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 \; } }

A) 39 81 B) 42 84 C) 26 68 D) 28 70

【】下面程序的输出结果是____。 #include <> main( )

{ int i,k,a[10],p[3]; k=5;

for(i=0;i<10;i++) a[i]=i;

for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf(\"%d\\n\; }

A) 20 B) 21 C) 22 D) 23

【】假定从键盘上输入\回车>\下面程序的输出是____。 #include <> main() { float x,y,z;

scanf(\"%f,%f\;

z=x/y; while(1) { if(fabs(z)> { x=y; y=z; z=x/y; }

else break; }

printf(\"%f\\n\; }

A) B) C) D)

【】下面程序的输出结果是____。 main()

{ int i,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\; }

A) x=4 B) x=8 C) x=6 D) x=12

【】下面程序的输出结果是____。

main() { int i,j,k=10; for(i=0;i<2;i++) { k++; { int k=0; for(j=0;j<=3;j++) { if(j%2) continue; k++; } } k++; }

printf(\"k=%d\\n\; }

A) k=4 B) k=8 C) k=14 D) k=18

【】下面程序的输出结果是____。 #include <> main( )

{ int n[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\; }

A) 14 B) 0 C) 6 D) 不确定

【】下面程序的输出结果是____。 #include <> main( )

{ int a[4][5]={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]=%d\\n\; }

A) 6 B) -3 C) 2 D) 不确定

【】下面程序的输出结果是____。 int m[3][3]={ {1}, {2}, {3} }; int n[3][3]={ 1, 2, 3 };

main( )

{ printf(\"%d\\n\; /* ① */ printf(\"%d\\n\; /* ② */ }

① A) 0 B) 1 C) 2 D) 3 ② A) 0 B) 1 C) 2 D) 3

【】下面程序的输出结果是____。 #include <> main( )

{ char s1[50]={\"some string *\; printf(\"%s\\n\; }

A) some string * B) test

C) some stritest D) some string *test

【】下面程序的输出结果是____。 #include <> f(char *s) { char *p=s; while(*p!='\\0') p++; return(p-s); } main()

{ printf(\"%d\\n\; }

A) 3 B) 6 C) 8 D) 0

【】下面程序的输出结果是____。

#include <> #include <> main( )

{ char str[100] =\"How do you do\"; strcpy( str + strlen(str)/2, \"es she\"); printf(\"%s\\n\; }

A) How do you do B) es she C) How are you D) How does she

【】下面程序的输出结果是____。 #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(\"%d\\n\; }

A) 11 B) 20 C) 21 D) 31

【】下面程序的输出结果是____。 #include <> void fun(int *s) { static int j=0; do

{ s[j]+=s[j+1]; }while(++j<2);

} main()

{ int k,a[10]={1,2,3,4,5}; for(k=1;k<3;k++) fun(a);

for(k=0;k<5;k++) printf(\"%d\; }

A) 35756 B) 23445 C) 35745 D) 12345

【】下面程序的输出结果是____。 #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参都不对 ② A) 1 B) -59 C) - D) A,B,C参都不对 ③ A) 5,66 B) 1,66 C) 5,6 D) A,B,C参都不对

【】下面程序的输出结果是____。

#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(\"%d\\n\;

}

A) 6 B) 7 C) 8 D) 9

【】下面程序的输出结果是____。 int w=3; main() { int w=10;

printf(\"%d\\n\; } fun(int k)

{ if(k==0) return(w); return(fun(k-1)*k); }

A) 360 B) 3600 C) 1080 D) 1200

【】下面程序的输出结果是____。 #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;i<2;i++) k=funa(a++); printf(\"%d\\n\; }

A) 3 B) 0 C) 5 D) 4

【】下面程序的输出结果是____。 #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,%d\\n\; }

A) 12,2 B) 5,25 C) 1,12 D) 输出不确定

【】下面程序的输出结果是____。 main() { int a=2,i; for(i=0;i<3;i++) printf(\"%4d\; } 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

【】下面程序的输出结果是____。 #include <> try( )

{ static int x=3; x++; return(x); } main( ) { int i, x;

for(i=0; i<=2; i++ ) x=try( );

printf(\"%d\\n\; }

A) 3 B) 4 C) 5 D) 6

【】下面程序的输出结果是____。 #include <> main( ) { int x=1;

void f1( ), f2( ); f1( ); f2(x);

printf(\"%d\\n\; }

void f1(void) { int x=3; printf(\"%d \;

} void f2( x ) int x;

{ printf(\"%d \; }

A) 1 1 1 B) 2 2 2 C) 3 3 3 D) 3 2 1

【】下面程序的输出结果是____。 #include <>

#define SUB(X,Y) (X)*Y main() { int a=3,b=4;

printf(\"%d\\n\; }

A) 12 B) 15 C) 16 D) 20

【】下面程序的输出结果是____。 main()

{ int a[]={1,2,3,4,5,6}; int *p; p=a;

printf(\"%d \; printf(\"%d \; printf(\"%d \; printf(\"%d \; p+=3;

printf(\"%d %d \; }

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

【】下面程序的输出结果是____。 main()

{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p=a; p+=6;

printf(\"%d \; /* ① */ printf(\"%d \; /* ② */ printf(\"%d \; /* ③ */ printf(\"%d\;/* ④ */ }

A) 7 7 7 7 B) ②句语法错误 C) ③句语法错误 D) ④句语法错误

【】下面程序的输出结果是____。 #define FMT \"%X\\n\" #include <>

main( )

{ static int a[ ][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; printf( FMT, a[2][2]); /* ① */ printf( FMT, *(*(a+1)+1) ); /* ② */ }

① A) 9 B) 11 C) A D) B

② A) 6 B) 7 C) 8 D) 前面三个参均是错误的

【】下面程序的输出结果是____。 #include <> main ( )

{ int a[]={1, 2, 3, 4, 5} ; int x, y, *p; p=&a[0]; x=*(p+2);

y=*(p+4);

printf(\"%d,%d,%d\\n\; }

A) 1,3,5 B) 1,2,3 C) 1,2,4 D) 1,4,5

【】下面程序的输出结果是____。 void ive(x,n) int x[],n; { int t,*p; p=x+n-1; while(xreturn; } main()

{ int i,a[]={1,2,3,4,5,6,7,8,9,0}; ive(a,10); for(i=0;i<10;i++) printf(\"%d \; printf(\"\\n\"); }

A) 1 2 3 4 5 6 7 8 9 0 B) 0 9 8 7 6 5 4 3 2 1 C) 1 3 5 7 9 2 4 6 8 0 D) 0 8 6 4 2 9 7 5 3 1

【】下面程序的输出结果是____。 #include \"\" fun(char *w,int n)

{ char t,*s1,*s2; s1=w;s2=w+n-1; while(s1{ static char *p=\"1234567\"; fun(p,strlen(p)); printf(\"%s\; }

A) 7654321 B) 1717171 C) 7171717 D) 1711717

【】下面程序的输出结果是____。 #include <>

char *p = \"abcdefghijklmnopq\" ; main( ) { int i=0; while( *p++!='e' ); printf(\"%c\\n\; }

A) c B) d C) e D) f

【】下面程序的输出结果是____。 #include <> f(int x, int y) { return (y-x); }

main( )

{ int a=5, b=6, c; int f(), (*g)()=f;

printf(\"%d\\n\; }

A) 1 B) 2 C) 3 D) 前面三个参均是错误的

【】下面程序的输出结果是____。 #include <> main( )

{ int a=1,*p,**pp; pp=&p; p=&a; a++;

printf (\"%d,%d,%d\\n\;

}

A) 2,1,1 B) 2,1,2 C) 2,2,2 D) 程序有错误

【】下面程序的输出结果是____。 main() {

char

*alpha[7]={\"ABCD\X\; char **p; int i; p=alpha; for(i=0;i<4;i++) printf(\"%c\; printf(\"\\n\"); }

A) AEIM B) BFJN C) ABCD D) DHLP

【】下面程序的输出结果是____。 #include <>

char *pp[2][3]={ \"abc\\"defgh\\"ijkl\\"mnopqr\\"xyz\; main ( )

{ printf(\"%c\\n\; /* ① */ printf(\"%c\\n\; /* ② */

printf(\"%c\\n\; /* ③ */ printf(\"%c\\n\; /* ④ */ printf(\"%s\\n\; /* ⑤ */ }

① 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

\"stuvw\

⑤ A) ijkl B) mnopqr C) stuvw D) xyz

【】下面程序的输出结果是____。 #include \"\" struct str1 { char c[5]; char *s; }; main( )

{ struct str1 s1[2]={ {\"ABCD\"\"EFGH\\"LMN\; struct str2 { struct str1 sr; int d;

}s2={\"OPQ\",\"RST\",32767}; struct str1 *p[2];

{\"IJK\",,

p[0]=&s1[0]; p[1]=&s1[1];

printf(\"%s\",++p[1]->s); /* ① */ printf(\"%c\"② */ }

① A) LMN B) MN C) N D) IJK ② A) O B) P C) Q D) R

【】以下程序的输出结果是____。 struct st { int x,*y; }*p;

int s[]={10,20,30,40};

struct st a[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]}; main()

{ p=a;

printf(\"%d\\n\; }

A) 10 B) 11 C) 20 D) 21

【】以下程序的输出结果是____。 #include <> main()

{ union EXAMPLE { struct { int x,y; }in; int a,b; }e; =1;=2;

}

A) 2,3 B) 4,4 C) 4,8 D) 8,8

【】下面程序的输出结果是____。 #include <> main() { union { int i[2]; long k; char c[4]; }r,*s=&r; s->i[0]=0x39;

s->i[1]=0x38; printf(\"%c\\n\; }

A) 39 B) 9 C) 38 D) 8

【】下面程序的输出是 。 main ( )

{ printf(\"%d\\n\; }

A) -1 B) 0 C) 1 D) 程序是错误的

【】参:D

注释:程序中除法运算的两个操作数均是整

型,运算结果也是整型。

【】参:B

注释:C语言允许在程序块(分程序)中说明变

量。

【】参:C

注释:变量i中的负号传送给变量n后,因n

是无符号数,已不作为负号处理。

【】参:D

注释:对变量x的――操作是后缀形式,变量

x的减1操作要在执行完 printf函数之后才进行,所以变量x的值在输出的时候仍然保持原值10。

【】参:B

注释:C语言在执行printf()时,对函数中的表

达式表列的处理顺序是从后向前,即先处理n- -,再处理n++,最后处理n,而且每一个表达式作为一个处理单元,也就是说在不同的表达式中自增自减运算是单独考虑的。

【】参:A

注释:变量x和变量y做按位与,结果为

0x0200,右移4位为0x0020,再与0x005f做按位或,最后结果为0x007f。

【】参:A

注释:逗号表达式的结果是用逗号分开的最后

一个表达式的值,此题由于 c=='A'的值是0,所以逗号表达式的值为0。

【】参: B 【】参: A 【】参: C

注释:在输出格式描述\"%\"中,m是输出总长

度,n是实际字符的个数,这里m没有给出,则输出总长度就是实际输出字符的个数。

【】参: C 【】参:B 【】参:C 【】参:B 【】参:D 【】参:A 【】参: C

【】参:A 【】参: C

注释:在switch语句中,case本身仅起到语句

标号的作用,不会改变语句的流程,执行break语句才能退出当前的switch语句。

【】参: D

注释:siwtch语句的表达式中,变量c是后缀

的增一运算,第一次执行do-while循环时,执行case 'A'后面的语句。 【】参: D 【】参: B 【】参: B

注释:fabs()是浮点数绝对值函数。 【】参: A 【】参: C

注释:C语言允许在程序块(分程序)内说明变量,如果在程序块内说明的变量和程序块外的变量同名,在块外说明

的变量在块内是不可见的。可将此题和【】进行比较,加深理解。 【】参: C 【】参: B

【】参: ① D ② A 【】参:D 【】参: B

注释:输出结果为字符串长度。 【】参: D

注释:字符串拷贝函数strcpy()要求的两个参数都是字符串首地址。本题中第二个参数是字符串常量,接受这个字符串的第一个参量不是直接给出字符数组名,而是进行了地址运算后的结果。由于str字符串的长度是13,除2取整后是6,第一个参数给出的地址是字符数组str的首地址加6,也就是原来字符串中第二个空格的位置,把\"es she\"从该处放入,字符串str变为\"How does she\"。 【】参: C

注释:main函数调用func函数时,第一个实参使用的是逗号表达式的值,也就是x+y的结果。由于对变量x、y、z进行的是后缀运算,所以函数func的参数值是13和8。 【】参: C

【】参: ① C ② A ③ C 【】参: C 【】参: B

注释:函数fun进行了递归调用,实际进行的运算是5×4×3×2×1×3×10。主函数内说明的局部变量w屏蔽了外部变量w,所以在主函数中外部变量w是不可见的,在调用printf函数时表达式\"fun(5)*w\"中w的值是10。 【】参: D

注释:main函数三次调用了函数funa,在funa函数中的静态变量c仅在第一次调用时进行了初始化,再次调用时不再对静态变量赋初值。 【】参: B

注释:main函数和num函数中都说明了变量a和b,由于它们是内部变量,所以它们分别在说明它们的函数内有

效。外部变量x和y在函数num之后被说明,而在num函数中又要引用它们,所以在num函数中用关键字\"extern\"说明变量x和y是一个外部变量,也就是通知计算机这两个变量在fun函数以外被说明,此处不是定义两个int型变量。 【】参: D

注释:函数f中的变量c是静态变量,仅在第一次调用函数f时它被初始化为3,第二次调用函数f时c的值是4,第三次调用函数f时c的值是5。 【】参: D 【】参: D

注释:程序中有三个\"x\"分别在三个不同的函数中,这三个\"x\"都是自动变量,所以三个\"x\"分别局部于三不同的函数,在三个函数中对\"x\"的操作互不影响。 【】参: A 【】参: A

注释:*(++p)和*++p都是指针变量值前加1,第一次指向a[1],第二次指向a[2];a+3是a[3]的地址。 【】参: C

注释:②句没有语法错误,但是a+6指向数组之外,因为a是a[0]的地址,a+1是a[1]的地址,a+2是a[2]的地址,显然数组a没有a[6]分量。③句错误,因为a[1]是地址常量,它是a[1][0]的地址,对于地址常量是不可以进行赋值运算的。

【】参: ① D ② A

注释:如果FMT定义为\"%x\\n\",则输出的16进制数据用小写字母表示。 【】参: A

注释:语句\"p=&a[0]\"表示将数组a中元素a[0]的地址赋给指针变量p,则p就是指向数组首元素a[0]的指针变量,\"&a[0]\"是取数组首元素的地址。对于指向数组首址的指针,p+i(或a+i)是数组元素a[i]的地址,*(p+i)(或*(a+i))就是a[i]的值。 【】参: B 【】参: D 【】参: D 【】参: A

注释:变量g是指向函数的指针,(*g)(a,b)是调用指针g所指向的函数。 【】参: C

注释:p是指针,pp是指向指针的指针。 【】参: A

注释:对于指向数组的指针变量可以做下标运算,p[i]和alpha[i]都是指向字符串的首地址,*p[i]取出字符串的第一个字符。

【】参: ① D ② A ③ D ④ D ⑤ B

注释:pp是一个二维指针数组,pp+1指向数组的第二维,*(pp+1)是第二维的起始地址,**(pp+1)是第二维第一个元素的地址,***(pp+1)是第二维第一个元素的内容,所以,①的参应选D。*(pp+1)+1是第二维第二个元素的地址,*(*(pp+1)+1)是第二维第二个元素,(*(*(pp+1)+1))[4]则是第二维第二个元素所指字符串下标为4的元素,即是字符w,故③应当选D。 【】参: ① B ② C 【】参:D

【】参:C

注释:联合体成员的取值是最后一次给成员赋的值。 【】参: B

注释:整型数组i和字符数组c共用存储空间,给i赋值也等于给c赋值,所以s->c[0]=0x39,所以输出9。 【】参:A

注释:基本概念。EOF是由C语言在头文件中定义的,用户可以直接使用。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务