logo资料库

C语言经典习题(练习题).doc

第1页 / 共31页
第2页 / 共31页
第3页 / 共31页
第4页 / 共31页
第5页 / 共31页
第6页 / 共31页
第7页 / 共31页
第8页 / 共31页
资料共31页,剩余部分请下载后查看
习题一 一.填空题 1.i 为 int 型变量,且初值是 3,有表达式 i++3,则 该表达式的值是 0 ,变量 i 的值是 4 2.i 为 int 型变量,且初值是 2,有表达式++i3, 则 该表达式的值是 0 ,变量 i 的值是 3 。 。 3.i 为 int 型变量,且初值是 3,有表达式 i=i+=i5,则 ,变量 i 的值是 18 该表达式的值是 18 。 4.i 为 int 型变量,且初值是 3,有表达式 i=(a=5,b=10)+(i+=b, b+=a), 则该表达式的值是 25 ,变量 i,a,b 的值分别是 25,5,15 。 5.i 为 int 型变量,且初值是 3,有表达式 i=(i+=i, i=i), i10, i%4,则 该表达式的值是 0 ,变量 i 的值是 36 6.说明变量为双精度的关键字是 double 。 。 7.在 Turbo C 中,整型数据的表示形式有 3 种。 二.选择题 1.若 a, b, c, d 都是 int 型变量且初值均为 10,不正确的赋值语句是( C )。 A.a=b=c=d; B.a=b++; C.a+b++; D.d=(a=b=125)c++; 2.若 a, b, c, d 都是 float 型变量且初值为 10.95,不正确的赋值语句是( B)。 A.a=b=15; B.d=int(a+c); C.a=(int)(b+1); D.++a; 3.若 a, b, c 均为 int 型变量且有值,要交换变量 a 和 b 的值,正确的语句组是( C )。 A.c=a, a=b, b=c; C.c=a; a=b; b=c ; B.a=b; b=a; D.c=a; b=a; a=c; 4.若 a, b 均为 int 型变量,x, y 均为 float 型变量,正确的输入函数是( B )。 A.scanf("%d%f",&a,&b); B.scanf("%d%f",&a,&x); C.scanf("%d%d",a,b); D.scanf("%f%f",x,y); 5.若 x, y 均为 double 型变量,正确的输入函数是( C )。 A.scanf("%f%f",&x,&y); B.scanf("%d%d",&x,&y); C.scanf("%lf%lf",&x,&y); D.scanf("%lf%lf",x,y); 6.若 x 为 char 型变量,y 为 int 型变量,x, y 均有值,正确的输出函数是( A )。 A.printf("%c%c",x,y); C.printf("%f%c",x,y); B.printf("%c%s",x,y); D.printf("%f%d",x,y); 7.若 x, y 均为 int 型变量且有值,要输出 x, y 的值,正确的输出函数是( D )。 A.printf("%d%d",&x,&y); C.printf("%f%d",x,y); B.printf("%f%f",x,y); D.printf("%d%d",x,y); 8.x 为 int 型变量,且值为 2345,不正确的输出函数是( D )。 A.printf("%d",x); C.printf("%c",x) ; B.printf("%3d",x); D.printf("%s",x); - 1 -
习题二 一.写出下列程序的运行结果 1.下面程序的运行结果是( D )。 main( ) {int a, b; a=23; b=87; printf("%d%d\n",a,b); } A. 23 87 B.23,87 C. a=23 b=87 D.2387 2.下面程序的运行结果是( B )。 main( ) {float x, y; x=12.34; y=0.00045; printf("%f,%f",x,y); } A.12.34,0.00045 C.12.34 0.00045 3.下面程序的运行结果是( A )。 main( ) {int h=34, k=56; printf("h=%d\nk=%d\n",h,k); B.12.340000,0.000450 D.12.340000 0.000450 } A. h=34 k=56 B.h=34 k=56 C.34 56 D. 34 56 4.下面程序的运行结果是( B )。 main( ) {float x=12.34567, y=345.2354; printf("x=%5.3 f, y=%5.3 f ",x,y); } A.12.346,345.235 B.x=12.346, y=345.235 C.12.345670,345.235000 D.x=12.34567, y=345.2354 5.下面程序的运行结果是( C )。 main( ) {int s=3, w=5; printf("%u, %u, %d, %d",s,w,s,w); } A.3,5,3,5 B.3 5 3 5 C.65533,5,3,5 D.65533,65531,3,5 - 2 -
习题二 6.运行下面程序时若从键盘输入:123 45 6789  输出结果是( A )。 main( ) { int a, b, c; scanf("%3d%3d%3d",&a,&b,&c); printf("a=%d, b=%d, c =%d", a,b,c) ; } A.a=123, b=45, c=678 B.a=123 b=454 c=678 C.123, 45, 678 D.a=123, b=456, c=789 7.运行下面程序时若从键盘输入:123456789 输出结果是( B )。 main( ) {int a, b, c; scanf("%3d%3d%3d",&a,&b,&c); printf("a=%d, b=%d, c=%d",a,b,c); } A.a=123, b=45, c=678 B.a=123, b=456, c=789 C.123, 456, 789 D.a=123 b=456 c=789 8.以下程序若 a=12, b=45, c=3467, 正确的数据输入方法是( C )。 main( ) {int a, b, c; scanf("a=%db=%dc=%d",&a,&b,&c); printf("%d, %d, %d\n",a,b,c); } A.a=12 b=45c=3467 C.a=12b=45c=3467 二.填空题 1.C 语句的最后用 ; 结束。 B.12 45 3467 D.a=12 b=45 c=3467 2.执行 printf("%d",045); 函数的结果是 37 。 3.执行 printf("%u\n",-0x2a); 函数的结果是 44 。 4.若 x 是整型,且 x = 1,执行 printf("%o\n", x ); 函数的结果是 177777 。 5.若一个 C 程序包含若干个函数,程序的执行总是从 main 函数开始。 - 3 -
习题三 1.设 a=1, b=2, c=3,写出下列关系表达式的值 (1)(a(a=c 0 。 0 。 1 。 1 。 2.设 a=1, b=2, c=3, d=4 写出下列逻辑表达式的值 (1)a && b && c (2)a || !b || !c (3)++a || b++ && ++c || d++ (4)(!(a+b)+c1)&& (b+c/2) (5)a !=11 && b<4 1 。文档顶端 1 。 1 。 1 。 1 。 3.设 x=y=z=1,则执行逻辑表达式++x || ++y && ++z 后,x,y,z 的值分别为 -1, 0,0 。 4.设 x=y=z=1, 执行逻辑表达式++x && y || ++z 后,x, y, z 的值分别为 2, 0,1 。 5.设 a=1, b=2, c=3, d=4, x=1, y=1,则执行逻辑表达式(x=a>b) && (y=c>d)后,x,y 的值分别为 0,1 。 6.在以下一组运算符中,优先级最高的运算符是( B ) A.<= B.= 7.以下程序的运行结果是 0,0,4 C.% 。 D.&& main( ) { int a=1, b=4, k; k=(++a<0) && !(b<=0); printf("%d,%d,%d\n",k,a,b); } 8.在 C 中,下列哪一个表达式能正确表示 a 10 或 a  0( C ) A.a>=10 or a<=0 C.a>=10 || a<=0 B.a>=10 | a<=0 D.a>=10 && a<=0 9.若 a,b,c 均为 int 型变量,则执行以下语句后,a,b,c 的值分别为 2,1,1 。 a=b=c=1; ++a || ++b && ++c - 4 -
习题三 10.给出下列程序的输出结果 (1) main( ) {int a, b, c; a='E'; b='J'; c='W'; if (a>b) if (a>c) printf("%c\n",a); else printf("%c\n",c); else if (b>c) printf("%c\n",b); else printf("%c\n",c); } 结果是:W (2) main( ) {int x=100, a=10, b=20, OK1=5, OK2=0; if (a5) printf("%d", x); else printf("%d\n",x); } 输入 6 时,结果是:7 输入 4 时,结果是:4 11.若有定义:float x; int a, b; 再有下面 4 个 switch 语句 A.switch(x) {case 1.0: printf("\n"); case 2.0: printf("\n");} B.switch(x) {case 1,2: printf("\n";) case 3: printf("\n");} C.switch(a+b); {case 1 : printf("\n"); case 1+2: printf("\n");} D.switch(a+b) {case 1: printf("\n"); case 2: printf("\n");} 正确的 switch 语句是( ),其它 switch 语句错在什么地方? - 5 -
习题四 1.下面程序若在运行时从键盘输入 3.6 2.4 ,运行结果为( B )。 #include"math.h" 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; } printf("%f\n",y); } A.1.500000 B.1.600000 C.2.000000 D.2.400000 2.下面程序的输出是( D )。 main( ) {int x=3,y=6,a=0; while (x++!=(y=1)) {a+=1; if (y=0,xamax) amax=x; if ( ) amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin); } - 6 -
习题四 4.下面程序的输出是: 0 。 main( ) {int x=2; while (x); printf("%d\n",x); } 5.下面程序的运行结果为: 16 。 main( ) {int i=0, sum=1; do {sum+=i++;} while (i<6); printf("%d\n",sum); } 6.C 语句中,下列说法中正确的是( D )。 A.不能使用 do-while 语句构成的循环; B.do-while 语句构成的循环必须用 break 语句才能退出; C.do-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环; D.do-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环。 7.下面程序的输出结果是: 852 。 main( ) {int y=9; for ( ; y>0; y) if (y%3==0) {printf("%d",y); continue; } } 8.若 x 是 int 型变量,且有下面的程序段,其运行结果为(D )。 for (x=3; x<6; x++) printf((x%2)?("%d"):("##%d\n"),x); A.3 ##4 5 B. ##3 3 ##5 C. ##2 4##5 D. 3##4 5 - 7 -
习题四 9.以下程序的运行结果是( A )。 main( ) {int i; for (i=1;i<=5;i++) {if (i%2) printf(""); else continue; printf("#"); } printf("$\n"); } A.###$ B.###$ C.##$ D.##$ 10.下面程序的功能是根据以下的公式,返回满足精度 eps 要求下的值,请填空。 11   3 2 main( ) 3 7 1 3 2 5 3 7 1 3 2 5 1 3 2 5 4 9 {double s=0.0, t=1.0; int n; float eps; scanf("%f",&eps); for( {s+=t; ;t>eps; n++) t=nt/(2n+1); } printf("pi=%f\n",  ); } - 8 -
分享到:
收藏