单选题
2-1 有一函数
,以下程序段中错误的是()。
A.
if(x > 0) y = 1;
else if(x == 0) y = 0;
else y = -1;
B.
y = 0;
if(x > 0) y = 1;
else if(x < 0) y = -1;
C.
y = 0;
if(x >= 0);
if(x > 0) y = 1;
else y = -1;
D.
if(x >= 0)
if(x > 0) y = 1;
else y = 0;
else y = -1;
选择C,大于0为1,小于等于0为-1
2-2 对于变量定义:int a, b = 0;
下列叙述中正确的是( ) 。
A.a
的初始值是0
,b
的初始值不确定。
B.a
的初始值不确定,b
的初始值是0
。
C.a
和b
的初始值都是0
。
D.a
和b
的初始值都不确定。
选择B
2-3
下列程序段的输出结果是 ()。
int main(void)
{
int x = 1, a = 0, b = 0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++; b++;
}
printf("a=%d,b=%d\n",a,b);
return 0;
}
A.a=2,b=1 B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
选择A,执行case=1后继续执行case=2,所以a=2,b=1
2-4
能正确表示逻辑关系"a≥10 或 a≤0"的C语言表达式是()。
A.a>=10 or a<=0 B.a>=0 | a<=0 C.a>=10 && a<=0 D.a>=10 || a<=0
选择D
2-5 下列叙述中正确的是()。
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,不一定使用break语句
选择D,可用可不用
2-6
在嵌套使用if语句时,C语言规定else总是()。
A.和之前与其具有相同缩进位置的if配对
B.和之前与其最近的if配对
C.和之前与其最近的且不带else的if配对
D.和之前的第一个if配对
选C,书本原话
2-7
下列程序段的输出结果是()。
int main(void)
{
int a = 2, b = -1, c = 2;
if(a < b)
if(b < 0)
c = 0;
else c++;
printf("%d\n",c);
return 0;
}
A.0 B.1 C.2 D.3
选择C,else和if(b<0)配对,所以c的值没有发生变化
2-8
在执行以下程序时,为使输出结果为:t=4,则给a和b输入的值应满足的条件是()。
int main(void)
{
int a,b,s,t;
scanf("%d,%d",&a,&b);
s = 1; t = 1;
if(a > 0) s = s + 1;
if(a > b) t = s + t;
else if(a == b) t = 5;
else t = 2 * s;
printf("t=%d\n",t);
return 0;
}
A.a>b B.a<b<0 C.0<a<b D.0>a>b
选择C,else if和else都和if(a>b)配对
多选题
3-1 设变量已正确定义,以下()是合法的C语句。
A.
if ( n <= 10 );
B.
switch ( k ) {
case 1: printf("one"); break;
case 2: printf("two"); break;
case 1: printf("one"); break;
default: printf("zero"); break;
}
C.
switch ( k%2 ) {
default: printf("zero"); break;
case 1: printf("one");
case 1+1: printf("two");
}
D.
n = 10;
switch ( k ) {
case n%3: printf("one");
case n%4: printf("two");
default: printf("zero");
}
选择AC,case后的值不能重复, n=10;应为int n=10;
3-2
判断ch是数字字符的C语言表达式是( ) 。
A.
'0' <= ch <= '9'
B.
ch >= '0' && ch <= '9'
C.
ch >= '1' && ch <= '10'
D.
! (ch < '0' || ch > '9')
选择BD,C语言和Python不一样,不能放在一起比较
3-3
设变量已正确定义,以下程序段( ) 的功能是交换变量x
和y
的值。
A.
temp = x; x = y; y =temp;
B.
x = y; y = x;
C.
y = x; x = y;
D.
x = x + y; y = x - y; x = x – y;
选择AD,
填空题
4-1
写出以下程序段的运行结果。请注意,直接填数字,前后不要加空格等任何其他字符。
int a;
scanf("%d", &a);
if(a > 50) printf("%d", a);
if(a > 40) printf("%d", a);
if(a > 30) printf("%d", a);
输入32
,输出32
输入46
,输出4646
输入58
,输出585858
4-2
以下程序段的运行结果是 onetwo 。
int k = 16;
switch ( k%3 ) {
case 0: printf("zero");
case 1: printf("one");
case 2: printf("two");
}
4-3 以下程序段的运行结果是 9 。
char c = ’b’;
int k = 4;
switch(c){
case 'a': k = k + 1; break;
case 'b': k = k + 2;
case 'c': k = k + 3;
}
printf("%d",k);
4-4 写出执行以下程序段后变量x
的值。
int x, y;
scanf("%d", &x);
if (x > 0){
y = 1;
}else if (x = 0){
y = 0;
}else{
y = -1;
}
输入10
,x
的值是 10
若输入-10
,x
的值是 0
4-5
写出以下程序段的运行结果。
if(op == '+'){
printf("%d", value1 + value2);
}
if(op == '-'){
printf("%d", value1 - value2);
}else{
printf("Error");
}
输入8-5
,则输出 3
输入3+4
,则输出 7Error
程序填空题
5-1 写出满足条件的关系表达式或逻辑表达式[4]
写出满足条件10 < x < 100
或者x < 0
的C表达式。
(x>10 && x<100) || (x<0)
5-2 输出偶数
输入一个正整数n,再输入n个整数,输出其中的偶数。要求相邻数字中间用一个空格分开,行末不得有多余空格。
# include <stdio.h>
int main()
{
char ch;
int first, k, n, x;
scanf("%d", &n);
first=1;
for(k = 1; k <= n; k++){
scanf("%d", &x);
if(x%2==0){
if ( first == 1 ){
printf("%d", x);
first=0;
}else{
printf(" %d",x);
}
}
}
return 0;
}
5-3 找出3个数中最大的数
输入3个整数,输出其中最大的数。
#include <stdio.h>
int main()
{
int a, b, c, max;
scanf("%d %d %d", &a, &b, &c);
max = 0;
if ( a > b ) {
if ( a > c ) {
max=a;
} else {
max=c;
}
} else {
if(b>c) {
max = b;
} else {
max=c;
}
}
printf("%d\n", max);
return 0;
}
5-4 写出是否构成一个三角形的逻辑表达式
在一个三角形中,任意两边之和大于第三边。如果变量a
、b
、c
代表三角形的三条边,以下是表示a
、b
、c
能构成一个三角形的C表达式。
(a+b>c) && (a+c>b) && (b+c>a)
5-5 输出每个月的天数
输入年,输出该年每个月的天数。其中1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月平年有28天,闰年有29天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。
#include <stdio.h>
int main() {
int day, month, year;
scanf("%d", &year);
for(month = 1; month <= 12; month++){
switch(month){
case 2:
if((year%4==0)&&(year%100!=0) || (year%400==0)) {
day = 29;
}else{
day=28;
}
break;
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
day = 31;
break;
default:
day = 30;
break;
}
printf("%d ", day) ;
}
return 0;
}
5-6 显示扑克牌
在玩牌程序中,每一组牌用数字1〜13代表。输入数字,显示相应的牌。其中2〜10直接显示数字,而数字1、11、12、13则分别用Ace、Jack、Queen、King来表示。
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
if(n >= 1 && n <= 13){
switch(n){
case 1:printf("Ace\n"); break;
case 11: printf("Jack\n"); break;
case 12:printf("Queen\n"); break;
case 13: printf("King\n"); break;
default:printf("%d\n",n); break;
}
}else{
printf("Error\n");
}
return 0;
}
这道题错了实在是没意思,Ace后忘记加\n了