C语言错题本2021.12.5
1.在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。 错误(如果不加{},if语句遇到 ; 就会停止);
2.如果变量已经正确定义,则执行以下程序段后,x的值不变。
x = 4;
if (x < 0){
y = -1;
}else if (x = 0){
y = 0;
}else{
y = 1;
}
(
错误 (一开始x被定义为4,但后边语句 x=0 使x的值改变);
3.在switch语句中,必须使用default。 错误(switch语句中并不一定要使用什么,而是根据不同的需要去选择。不过经常后边跟break);
4.switch语句中,每一个case的冒号后面都允许跟有多条语句。 正确 (case的冒号后边对语句的个数并没有规定//我学的还没有);
5.在if语句中,必须出现else。 错误 (不一定,根据需要来写就行);
6.
下列叙述中正确的是()。
(2分)
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,不一定使用break语句
D
A:break也可以单独使用如if(n>m)break;
B:switch语句中并不一定要使用什么,而是根据不同的需要去选择。不过经常后边跟break;
C&D:break语句不一定要与switch语句中的case配对使用,可以多个case用一个break,也可以不使用break;
7.
逻辑运算符两则运算对象的数据类型( )
(2分)
A.只能是0或1
B.只能是0或非0正数
C.可以是任何类型的数据
D.只能是整型或字符型数据
C
8.三个数的关系之:(2)比大小
# include<stdio.h>
int main()
{
int a,b,c,x;
scanf("%d%d%d",&a,&b,&c);
if(a<b)
{
x=a,a=b,b=x;
}
if(a<c)
{
x=a,a=c,c=x;
}
if(b<c)
{
x=b;b=c;c=x;
}
printf("%d>=%d>=%d\n",a,b,c);
return 0;
}
9.分段函数求值
#include<stdio.h>
#include<math.h>
int main()
{ double x,y;
scanf("%lf",&x);
if(x<0)
y=pow(x,2);
else if(0<=x&&x<10)
y=2*x-1;
else if(x>=10)
y=3*x-11;
printf("%.2lf",y);
return 0;
}
10.求该月天数
#include<stdio.h>
int main()
{
int year,month,day;
scanf("%d%d",&year,&month);
switch(month)
{case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day=31;
break;
case 4:case 6:case 9:case 11:
day=30;
break;
case 2:
if(year%400==0||year%4==0&&year%100!=0)
day=29;
else
day=28;
break;
}
if(month>12)
printf("ERROR");
else
printf("%d",day);
return 0;
}
11.真睡还是装睡
#include<stdio.h>
int main()
{int a,b;
scanf("%d%d",&a,&b);
if(a>=15&&a<=20&&b>=50&&b<=70)
printf("T");
else
printf("F");
return 0;
}