}
五.编程题
1.已知a,b均是整型变量,写出将a,b两个变量中的值互换的程序来。
2.若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a= 3 b= 4 c= 5
x=1.200000,y=2.400000,z=-3.600000 x+y= 3.60 y+z=-1.20 z+x=-2.40 u= 51274 n= 128765 c1=?a? or 97(ASCII) c2=?b? or 98(ASCII)
3.设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。用scanf输入数据,输出计算结果;输出时要求有文字说明,取小数点后2位数字,请编写程序。
4.编程序:用getchar函数读入两个字符给c1,c2,然后分别用putchar和printf函数输出这两个字符。并思考以下问题:(1)变量c1,c2应定义为字符型或整型?或两者皆可?(2)要求输出C1和C2值的ASCII码,应如何处理?用putchar函数还是printf函数?(3)整型变量与字符型变量是否在任何情况下都可以互相替代?如:
char c1,c2 与 int c1,c2 是否无条件地等价?
第五章 选择结构程序设计 一.选择题
1.逻辑运算符两侧运算对象的数据类型 。
A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 2.下列表达式中, 不满足“当x的值为偶数时值为真,为奇数时值为假”的要求。 A)x%2==0 B)!x%2!=0 C)(x/2*2-x)==0 D)!(x%2) 3.以下程序片段 。
int x=2,y=3; printf()
A)输出控制格式错误 B)输出为:***x=2 C)输出为:###y=2 D)输出为:###y=3
4.能正确表示“当x的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是 。
A)(x>=1) && (x<=10) && (x>=200) && (x<=210) B)(x>=1) | | (x<=10) | | (x>=200) | | (x<=210) C)(x>=1) && (x<=10) | | (x>=200) && (x<=210) D)(x>=1) | | (x<=10) && (x>=200) | | (x<=210)
5.C语言对嵌套if语句的规定是:else总是与 。
A)其之前最近的if配对 B)第一个if配对
C)缩进位置相同的if配对 D)其之前最近的且尚未配对的if配对
6.设:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b) && (n=c>d)后n的值为 。 A)1 B)2 C)3 D)4 7.下面 是错误的if语句(设int x,a,b;)
A)if (a=b) x++; B)if (a=
{ int x=0,y=0,z=0;
if (x=y+z)
printf(“***”); else
printf(“###”);
}
A)有语法错误,不能通过编译 B)输出:*** C)可以编译,但不能通过连接,所以不能运行 D)输出:### 9.对下述程序, 是正确的判断。 main ( ) { int x,y;
scanf(“%d,%d”,&x,&y); if (x>y)
x=y;y=x; else
x++;y++;
printf(“%d,%d”,x,y);
}
A)有语法错误,不能通过编译 B)若输入3和4,则输出4和5 C)若输入4和3,则输出3和4 D)若输入4和3,则输出4和5 10.若w=1,x=2,y=3,z=4,则条件表达式w
C)x>=1 && x<=0 D)(x>=1) && (x<=0) 12.下述程序的输出结果是 。
main ( )
{ int a=0,b=0,c=0; if (++a>0 | | ++b>0) ++c;
printf(“%d,%d,%d”,a,b,c); }
A)0,0,0 B)1,1,1 C)1,0,1 D)0,1,1 13.下述程序的输出结果是 。
main ( )
{ int x=-1,y=4,k;
k=x++<=0 && !(y--<=0); printf(“%d,%d,%d”,k,x,y); }
A)0,0,3 B)0,1,2 C)1,0,3 D)1,1,2 14.以下程序输出结果是 。
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; case 3:a++; b++; }
printf(“a=%d,b=%d”,a,b); }
A)a=1,b=0 B)a=2,b=1 C)a=1,b=1 D)a=2,b=2 15.下述程序的输出结果是 。
main ( )
{ int a,b,c; int x=5,y=10;
a=(--y=x++) ? –y : ++x ; b=y++ ; c=x ;
printf(“%d,%d,%d”,a,b,c); }
A)6,9,7 B)6,9,6 C)7,9,6 D )7,9,7 16.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是 。
if (a
if (c if (a if (b A)1 B)2 C)3 D)4 17.在下面的条件语句中(其中S1和S2表示C语言语句),只有 一个在功能上与其他三个语句不等价。 A)if (a) S1; else S2; B)if (a==0) S2; else S1; C)if (a!=0) S1; else S2; D)if (a==0) S1; else S2; 18.若int i=0;执行下列程序后,变量i的正确结果是 。 switch (i) { case 9: i+=1 ; case 10: i+=1 ; case 11: i+=1 ; default : i+=1 ; } A)10 B)11 C)12 D)13 19.若有说明语句int i=5,j=4,k=6;float f;则执行f=(i A)4.0 B)5.0 C)6.0 D)7.0 20.若有定义:int a=3,b=2,c=1;并有表达式:①a%b,②a>b>c,③b&&c+1,④c+=1,则表达式值相等的是 。 A)①和② B)②和③ C)①和③ D)③和④ 二.填空题 1.C语言提供6种关系运算符,按优先级高低它们分别 是 , , , , , 等。 2.C语言提供三种逻辑运算符,按优先级高低它们分别是 , , 。 3.设a=3,b=4,c=5,写出下面各逻辑表达式的值。 表达式 a+b>c && b==c !(a>b) && !c || 1 !(a+b) + c –1 && b + c/2 表达式运算后的值 ?1(x?0)?4.写出数学式子y??0(x?0)的C语言表达式 。 ??1(x?0)?5.将条件“y能被4整除但不能被100整除,或y能被400整除”写成逻辑表达式 。 6.设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式: 。 7.已知A=7.5,B=2,C=3.6,表达式A>B && C>A || AB的值是 。 8.有int x=3,y=-4,z=5;则表达式(x&&y)==(x||z)的值为 。 9.若有x=1,y=2,z=3,则表达式(x 10.执行以下程序段后,a= ,b= ,c= 。 int x=10,y=9 ; int a,b,c ; a = (x--=y++) ? x-- : y++ ; b = x++ ; c = y ; 三.判断题 1.if语句中的表达式不限于逻辑表达式,可以是任意的数值类型。【 】 2.switch语句可以用if语句完全代替。【 】 3.switch语句的case表达式必须是常量表达式。【 】 4.if语句,switch语句可以嵌套,而且嵌套的层数没有限制。【 】 5.条件表达式可以取代if语句,或者用if语句取代条件表达式。【 】 6.switch语句的各个case和default的出现次序不影响执行结果。【 】 7.多个case可以执行相同的程序段。【 】 8.内层break语句可以终止嵌套的switch,使最外层的switch结束。【 】 9.switch语句的case分支可以使用{ }复合语句,多个语句序列。【 】 10.switch语句的表达式与case表达式的类型必须一致。【 】 四.简答题 1.C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 2.请将以下语句改成switch语句。 if ((s>0) && (s<=10)) if ((s>=3) && (s<=6)) x=2; else if ((s>1) && (s>8)) x=3; else x=1; else x=0; 五.程序阅读题 1.若运行时输入100↙,写出以下程序的运行结果。 main ( ) { int a ; scanf(“%d”,&a); printf(“%s”,(a%2!=0)?”No”:”Yes”); } 2.写出以下程序的运行结果。 main ( ) { int a=2,b=7,c=5; switch (a>0) { case 1: switch (b<0) { case 1: printf(“@”); break ; case 2: printf(“!”); break ; } case 0: switch (c==5) { case 1: pritnf(“*”) ; break ; case 2: printf(“#”) ; break ; default : printf(“#”) ; break ; } default : printf(“&”); } printf(“\\n”); }