C语言练习题
C语言练习题
习题一
一.填空题
1.i为int型变量,且初值是3,有表达式i++3,则
该表达式的值是,变量i的值是。
2.i为int 型变量,且初值是2,有表达式++i3,则
该表达式的值是,变量i的值是。
3.i为int型变量,且初值是3,有表达式i=i+=i5,则
该表达式的值是,变量i的值是。
4.i为int型变量,且初值是3,有表达式i=(a=5,b=10)+(i+=b, b+=a),则该表达式的值是,变量i,a,b的值分别是。
5.i为int型变量,且初值是3,有表达式i=(i+=i, i=i), i10, i%4,则
该表达式的值是,变量i的值是。
6.说明变量为双精度的关键字是。
7.在Turbo C中,整型数据的表示形式有 种。
二.选择题
1.若a, b, c, d都是int型变量且初值均为10,不正确的赋值语句是()。
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,不正确的赋值语句是()。
A.a=b=15;B.d=int(a+c);C.a=(int)(b+1);D.++a;
3.若a, b, c均为int型变量且有值,要交换变量a和b的值,正确的语句组是()。
A.c=a, a=b, b=c;B.a=b;b=a;
C.c=a;a=b;b=c;D.c=a;b=a;a=c;
4.若a, b均为int型变量,x, y均为float型变量,正确的输入函数是()。
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型变量,正确的输入函数是()。
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.printf("%c%c",x,y);B.printf("%c%s",x,y);
C.printf("%f%c",x,y);D.printf("%f%d",x,y);
7.若x, y均为int型变量且有值,要输出x, y的值,正确的输出函数是()。
A.printf("%d%d",&x,&y);B.printf("%f%f",x,y);
C.printf("%f%d",x,y);D.printf("%d%d",x,y);
8.x为int型变量,且值为2345,不正确的输出函数是()。
A.printf("%d",x);B.printf("%3d",x);
C.printf("%c",x);D.printf("%s",x);
习题二
一.写出下列程序的运行结果
1.下面程序的运行结果是()。
main()
{int a, b;
a=23;b=87;
printf("%d%dn",a,b);
}
A. 23 B.23,87 C. a=23 D.2387
87 b=87
2.下面程序的运行结果是()。
main()
{float x, y;
x=12.34;y=0.00045;printf("%f,%f",x,y);
}
A.12.34,0.00045 B.12.340000,0.000450
C.12.34 0.00045 D.12.340000 0.000450
3.下面程序的运行结果是()。
main()
{int h=34, k=56;
printf("h=%dnk=%dn",h,k);
}
A. h=34 B.h=34 k=56 C.34 56 D. 34
k=56 56
4.下面程序的运行结果是()。
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.下面程序的运行结果是()。
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
习题二
6.运行下面程序时若从键盘输入:123 45 6789 输出结果是()。
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 输出结果是()。
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, 正确的数据输入方法是()。
main()
{int a, b, c;
scanf("a=%dB=%dc=%d",&a,&b,&c);
printf("%d, %d, %dn",a,b,c);
}
A.a=12 b=45c=3467 B.12 45 3467
C.a=12B=45c=3467 D.a=12 b=45 c=3467
二.填空题
1.C语句的最后用 结束。
2.执行printf("%d",045);函数的结果是。
3.执行printf("%un",-0x2a);函数的结果是。
4.若x是整型,且x = 1,执行printf("%on", x);函数的结果是。
5.若一个C程序包含若干个函数,程序的执行总是从 函数开始。
习题三
1.设a=1, b=2, c=3,写出下列关系表达式的值
(1)(a
(2)(c(a
(3)a+b==c。
(4)a+b>=c。
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)+c1)&&(b+c/2)。
(5)a!=11 &&b<4。
3.设x=y=z=1,则执行逻辑表达式++x || ++y &&++z后,x,y,z的值分别为。
4.设x=y=z=1, 执行逻辑表达式++x &&y || ++z后,x, y, z的值分别为。
5.设a=1, b=2, c=3, d=4, x=1, y=1,则执行逻辑表达式(x=a>b)&&(y=c>d)后,x,y的值分别为。
6.在以下一组运算符中,优先级最高的运算符是()
A.<= B.= C.% D.&&
7.以下程序的运行结果是。
main()
{ int a=1, b=4, k;
k=(++a<0)&&!(b<=0);
printf("%d,%d,%dn",k,a,b);
}
8.在C中,下列哪一个表达式能正确表示a 10或a 0()
A.a>=10 or a<=0 B.a>=10 | a<=0
C.a>=10 || a<=0 D.a>=10 &&a<=0
9.若a,b,c均为int型变量,则执行以下语句后,a,b,c的值分别为。
a=b=c=1;
++a || ++b &&++c
习题三
10.给出下列程序的输出结果
(1)main()
{int a, b, c;
a=E;b=J;c=W;
if(a>b)
if(a>c)printf("%cn",a);
else printf("%cn",c);
else if(b>c)printf("%cn",b);
else printf("%cn",c);
}
结果是:
(2)main()
{int x=100, a=10, b=20, OK1=5, OK2=0;
if(a
if(b!=15)
if(!OK1)x=1;
else
if(OK2)x=10;
x=1;
printf("%dn",x);
}
结果是:
(3)运行两次下面的程序,如果分别从键盘上输入数值6和4,其运行结果分别为
main()
{int x;
scanf("%d",&x);
if(x++>5)printf("%d", x);
else printf("%dn",x);
}
输入6时,结果是:
输入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语句错在什么地方?
习题四
1.下面程序若在运行时从键盘输入3.6 2.4 ,运行结果为()。
#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("%fn",y);
}
A.1.500000 B.1.600000 C.2.000000 D.2.400000
2.下面程序的输出是()。
main()
{int x=3,y=6,a=0;
while(x++!=(y=1))
{a+=1;
if(y } printf("x=%d,y=%d,a=%dn",x,y,a); } A.x=4, y=4, a=1 B.x=5, y=5, a=1 C.x=5, y=4, a=3 D.x=5, y=4, a=1 3.以下程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束,请填空。 main() {float x,amax,amin; scanf("%f",&x); amax=x;amin=x; while() {if(x>amax)amax=x; if()amin=x; scanf("%f",&x); } printf("namax=%fnamin=%fn",amax,amin); } 习题四 4.下面程序的输出是:。 main() {int x=2; while(x); printf("%dn",x); } 5.下面程序的运行结果为:。 main() {int i=0, sum=1; do {sum+=i++;} while(i<6); printf("%dn",sum); } 6.C语句中,下列说法中正确的是()。 A.不能使用do-while语句构成的循环; B.do-while语句构成的循环必须用break语句才能退出; C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环; D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环。 7.下面程序的输出结果是:。 main() {int y=9; for(;y>0;y) if(y%3==0) {printf("%d",y); continue; } } 8.若x是int型变量,且有下面的程序段,其运行结果为()。 for(x=3;x<6;x++)printf((x%2)?("%d"):("##%dn"),x); A.3 B. ##3 C. ##2 D. 3##4 ##4 3 4##5 5 5 ##5 习题四 9.以下程序的运行结果是()。 main() {int i; for(i=1;i<=5;i++) {if(i%2)printf(""); else continue; printf("#"); } printf("$n"); } A.###$ B.###$ C.##$ D.##$
