单选题
1、若定义a=3,b=4,执行printf(“%d, %d”,(a,b),(b,a));的输出结果为()。
A.3,4
B.4,3
C.3,3
D.4,4
2、如果要求在if后的判断条件是a不等于0,则下列选项中能正确表达这一关系的是()。
A.a<>0
B.!a
C.a=0
D.a
3、为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前尚未配对的最近的if
D.同一行上的if
4、有定义int t = 0;则有循环while(t=1){…},则下列关于while循环语句的描述中正确的是()。
A.循环控制表达式的值为0
B.循环控制表达式的值为1
C.循环控制表达式的值不合法
D.以上说法都不对
5、若有定义:int x ,i;则下列for循环语句:
for(i = 0,x = 0; i<= 9 && x!=876;i++)
scanf(“%d”,&x);
下列选项中,描述正确的是()
A.最多执行10次
B.最多执行9次
C.是无限循环
D.循环体一次也不执行
6、关于下面的for循环语句
int i,k;
for(i = 0,k = -1;k = 1;i++,k++) printf(“*****”);
下列选项中,描述正确的是()
A.判断循环结束的条件非法
B.是无限循环
C.只循环一次
D.一次也不循环
7、C语言程序的三种基本结构是()。
A.顺序结构,选择结构,循环结构
B.递归结构,循环结构,转移结构
C.嵌套结构,递归结构,顺序结构
D.循环结构,转移结构,顺序结构
8、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()。
A.a<>0
B.!a
C.a=0
D.a
9、两次运行下面的程序,如果从键盘上分别输入6和4,那么输出结果是()。
void main()
{
int x;
scanf("%d",&x);
if (x++ > 5)
printf("%d",x);
else
printf("%d\n",x--);
}
A.7和5
B.6和3
C.7和4
D.6和4
10、运行以下程序后,如果从键盘上输入china#,那么输出结果为()。
#include<stdio.h>
void main()
{
int v1=0,v2=0;
char ch;
while ((ch=getchar())!='#')
switch (ch)
{
case 'a':
case 'h':
default:
v1++;
case '0':
v2++;
}
printf("%d,%d\n",v1,v2);
}
A.2,0
B.5,0
C.5,5
D.2,5
11、有如下程序:
void main()
{
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);
}
该程序的输出结果是()。
A.a=2,b=1
B.a=1,b=1
C.a=1,b=0
D.a=2,b=2
12、下面程序的输出是()。
void main()
{
char *a="12134211";
int v1=0,v2=0,v3=0,v4=0,k;
for (k=0;s[k];k++)
switch (s[k])
{
default:
v4++;
case '1':
v1++;
case '3':
v3++;
case '2':
v2++;
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A.v1=4,v2=2,v3=1,v4=1
B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1
D.v1=8,v2=8,v3=8,v4=8
13、下列程序段的输出结果为()。
int y=1;
while(y--);
printf("y=%d\n",y);
A.y=-1
B.y=0
C.死循环
D.y=9
14、当输入数据:27 63 时,下面程序的运行结果是()。#include<stdio.h>
int gbs(int a, int b)
{
int c;
a=a>0?a:-a;
b=b>0?b:-b;
c=a*b;
if (c==0)
return 0;
while (a!=b)
if (a>b)
a-=b;
else
b-=a;
return c/a;
}
int gys(int a, int b)
{
if (a*b==0)
return 0;
a=a>0?a:-a;
b=b>0?b:-b;
while (a!=b)
if (a>b)
a-=b;
else
b-=a;
return a;
}
void main()
{
int a,b,c,d;
scanf("%d%d",&a,&b);
c=gbs(a,b);
d=gys(a,b);
printf("a=%d b=%d gbs=%d gys=%d\n",a,b,c,d);
}
A.a=30 b=63 gbs=189 gys=9
B.a=27 b=63 gbs=190 gys=10
C.a=27 b=63 gbs=189 gys=9
D.a=27 b=63 gbs=188 gys=10
15、假设有程序段:int k=0; while(k=1) k++; while语句的循环次数是()。
A.无限次
B.有语法错,不能执行
C.一次也不执行
D.执行1次
16、执行下面程序片段的结果是()。
int x=23;
do
{
printf("%2d",x--);
} while (!x);
A.打印出321
B.打印出23
C.不打印任何内容
D.陷入死循环
17、在C语言程序中,若希望结束循环,则do-while语句构成的循环中的条件为()。
A.0
B.1
C.true
D.非
18、以下描述中正确的是()。
A.do-while语句构成的循环不能用其它语句构成的循环来代替
B.do-while语句构成的循环只能用break语句退出
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环
D.用do-while语句构成的循环,在while后的表达式为零时结束循环
19、以下循环体的执行次数是()。
void main()
{
int i,j;
for (i=0,j=1; i<=j+1; i+=2,j--)
printf("%d\n",i);
}
A.3
B.2
C.1
D.0
20、有如下程序:
void main()
{
int i,sum;
for(i=1;i<=3;sum++)
sum+=i;
printf("%d\n",sum);
}
该程序的执行结果是()。
A.6
B.3
C.死循环
D.0
21、以下程序的输出结果是()。
void main()
{
int x=10, y=10, i;
for (i=0; x>8; y=++i)
printf("%d %d ", x--, y);
}
A.10 1 9 2
B.9 8 7 6
C.10 9 9 0
D.10 10 9 1
22、下列说法中正确的是()。
A.在switch语句中一定要使用break语句
B.在switch语句中不一定要使用break语句
C.break语句是switch语句的一部分
D.break只能用于switch语句中
23、执行下面的程序后,a的值为()。
void main()
{
int a,b;
for (a=1,b=1; a<=100; a++)
{
if (b>=20)
break;
if (b%3==1)
{
b+=3;
continue;
}
b-=5;
}
}
A.7
B.8
C.9
D.10
24、若有以下程序段,w和k都是整型变量:
w=k;
LB:
if (w==0)
go to LE;
w--;
printf("*");
goto LB;
LE:
那么不能与上面程序段等价的循环语句是()。
A.for (w=k; w!=0; w--) printf("*");
B.for (w=k; w; --w) printf("*");
C.w=k; while (w-- != 0) printf("*"); w++;
D.w=k; do { w--; printf("*"); } while (w!=0);
多选题
1、C语言的程序结构语句包括()。
A.顺序结构语句
B.循环结构语句
C.选择结构语句
D.逻辑结构语句
2下列语句哪些属于循环语句()。
A.for语句
B.do-while语句
C.while语句
D.switch语句
判断题
1、break是跳出当前循环,接着执行循环后面的代码。
2、continue只能用于循环语句。
3、break语句只能在循环语句中使用。
4、在C语言中,跳转语句有break语句、goto语句和continue语句。
简答题
1、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main()
{
int a,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf(“%d,%d”,a,b);
}
2、请阅读下面的程序,在空白处填写正确的代码,要求输出m和n的值,且每行从头开始。void main()
{
int m = 10, n = 20;
printf( ,m);
printf( ,n);
}
3、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main
{
int x = 1,y = 1, z = 10;
if(z<0)
if(y>0) x = 3;
else x = 5;
printf(“%d\t”,x);
if(z = y < 0) x = 3;
else if(y==0) x = 5;
else x = 7;
printf(“%d\t”,x);
printf(“%d\t”,z);
}
4、请阅读下面的程序,在空白处填写正确的代码,实现分段函数:
x< 0 y = 2x + 3;
x = 0 y = 0;
x> 0 y = (x+7)/3;
输入x,计算y值,输出y。
void main()
{
int x, y;
scanf(“%d”,&x);
if(x < 0) y = 2*x + 3;
y = 0;
if(x > 0) y = (x + 7) / 3;
printf(“%d”,y);
}
5、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main()
{
char ch = ‘B’;
switch(ch)
{
case ‘A’:printf(“it is A\n”);
case ‘B’:printf(“it is B\n”);
case ‘C’:printf(“it is C\n”);
default: printf(“other\n”);
}
}
6、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
投票表决器:
-输入Y,y,打印agree
-输入N,n,打印disagree
-输入其他,打印lose
void main()
{
char ch;
scanf(“%c”,&ch);
{
case ‘Y’:
case ‘y’: printf(“agree”); ;
case ‘N’:
case ‘n’; printf(“disagree”); ;
; printf(“loser”);
}
}
7、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
查询学生身高的分布状况:
H 175-200cm 30%
M 160-175cm 40%
L 150-160cm 30%
void main()
{
char ch;
scanf(“%d”,&ch);
{
: printf(“175-200cm身高的学生占30%\n”); ;
: printf(“160-175cm身高的学生占40%\n”); ;
: printf(“160-175cm身高的学生占40%\n”); ;
default: printf(“输入有误,请重新输入!\n”);
}
8、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main()
{
int num = 0;
while(num <= 2)
{
num++;
printf(“%d\n”,num);
}
}
9、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
输出1-100之间的偶数数:
void main()
{
int num = 1, sum = 0;
while (num <= 100)
{
if ( )
sum += num;
;
}
printf("sum = %d\n", sum);
}
10、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main()
{
int num = 0;
do
{
num++;
printf(“%d\n”,num);
}
while(num <= 2);
}
11、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
输出1-100之间的偶数数:
void main()
{
int num = 1, sum = 0;
do
{
if ( )
sum += num;
;
}while (num <= 100);
printf("sum = %d\n", sum);
}
12、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main()
{
int i, m = 1;
for (i = 3; i >= 1; i--)
{
m = (m + 1) * 2;
printf("m = %d\n", m);
}
}
13、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
求出1-100之间的偶数和:
void main()
{
int i, sum = 0;
for(i = 2; ; i++)
{
;
}
}
14、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main()
{
int i, j;
for (i = 0; i <= 2; i++)
{
for (j = 0; j <= i; j++)
{
printf("(%d,%d)\n", i, j);
}
}
}
15、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
打印下列图形:
*
***
*****
*******
void main()
{
int i, j, k;
for (i = 0; ; i++)
{
for (j = 0; j <= 2 - i; j++)
printf(" ");
for (k = 0; ; k++)
printf("*");
;
}
}
16、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
X Y Z
+ Y Z Z
5 3 2
void main()
{
int x, y, z, i, result = 532;
for (x = 1; ; x++)
{
for (y = 1; ; y++)
{
for (z = 0; z <= 1; z++)
{
i = + (100 * y + 10 * z + z);
if (i == result)
printf("x = %d, y = %d, z = %d\n", x, y, z);
}
}
}
}
17、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果能,请写出运行结果。
void main()
{
int a, b;
for (a = 1, b = 1; a <= 100; a++)
{
if (b >= 10)
break;
if (b % 3 == 1)
{
b += 3;
continue;
}
}
printf("a = %d\n", a);
}
18、请阅读下面的程序,在空白处填写正确的代码,实现下列功能:
用户键盘输入一个数,判断是奇数还是偶数.
void main()
{
int num;
scanf("%d", &num);
if (num % 2 == 0)
;
else
;
ep1:
printf("输入的是一个偶数!\n");
ep2:
printf("输入的是一个奇数!\n");
}
19、请阅读下面的程序,分析运行结果。
void main()
{
printf("@\n");
printf("@@\n");
printf("@@@\n");
printf("@@@@\n");
printf("@@@@@\n");
}
20、请阅读下面的程序,在空白处填写正确的代码,输出三个整数中最大的整数。#include <stdio.h>
void main()
{
int a = 10, b = 40, c = 20, t = a;
if (t < b)
{
}
if ( )
{
t = c;
}
printf("%d %d %d中的最大数是%d\n", a, b, c, t);
}
21、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:从键盘输入一个年份数据,判断此年份是否为闰年。(注:满足下面两个条件中的一个即为闰年:一、400的倍数;二、4的倍数但不是100的倍数)。
void main()
{
int x,i;
scanf("%d",&x);
if (x%400==0)
i=1;
else if (_______)
i=1;
else
_______;
if (i==1)
printf("该年为闰年\n");
if (i==0)
printf("该年为平年\n");
}
22、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:输入三个整数,将最大数挑选出来显示。
void main()
{
int a, b, c, max;
scanf("%d,%d,%d",&a,&b,&c);
if (a>b)
_______
else
max=b;
if (max<c)
_______
printf("max=%d", max);
}
23、请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
#include <stdio.h>
void main()
{
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);
}
24、请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
#include <stdio.h>
void 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;
}
printf("a=%d, b=%d\n", a, b);
}
25、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:通过输入成绩,为成绩评等级,90~100为A,80~89为B,70~79为C,60~69为D,60以下为E。
#include <stdio.h>
void main()
{
int score;
printf("Please input your score:");
scanf("%d", &score);
switch ( )
{
case 10:
case 9:
printf("Your level is A.\n");
break;
case 8:
printf("Your level is B.\n");
break;
case 7:
printf("Your level is C.\n");
break;
case 6:
printf("Your level is D.\n");
break;
printf("Your level is E.\n");
}
}
26、请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
#include<stdio.h>
void main()
{
int y=10;
while(y--);
printf("y=%d\n",y);
}
27、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:计算并输出下列级数的前N项之和SN,直到SN大于Q为止。
#include<stdio.h>
double fun(double q)
{
int n;
double s;
n = 2;
s = 2.0;
while ( )
{
s = s + (double)(n+1)/n;
}
printf("n=%d\n",n);
}
void main()
{
printf("%f\n", fun(50));
}