单选题
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
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
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 case ‘B ' :printf(
“it is B
case ‘C ' :printf( “it is C
defaul t: printf( “other
n ”
n ” n ”
); ); ); } }
6、请阅读下面的程序,在空白处填写正确的代码 投
票表决器:
- 输入 Y , y ,打印 agree - 输入 N , n ,打印 disagree - 输入其他, void main()
{
char ch;
打印 lose
, 实现下列功能:
}
}
7
、 anf(
“
%c ”
,&ch);
case ‘Y '
case < ?
‘y ' : printf( case ‘N '
case ‘n ' ; printf(
; printf( “
? ?? \
agree ”);
请阅读下面的程序,在空白处填写正确的代码 查询学生身高的分布状况:
, 实现下列功能:
H 175-200cm 30% M 160-175cm 40% L 150-160cm 30% void main()
{
char ch;
scanf( “ %d ” ,&ch );
{
: printf( : printf( : printf( default: printf(
175-200cm 身高的学生占 30%\n ” ); 160-175cm 身高的学生占 40%\n ” ); 160-175cm 身高的学生占 40%\n ” ); 输
入有误,请重新输入 !\n ” );
}
8、请阅读下面的程序,分析程序是否能编绎通过并正确运行,如果不能,说明原因;如果
); n ” {
?
“ disagree ” )
; loser ” );
能,请写出运行结果。
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;
J
}
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、请阅读下面的程序,在空白处填写正确的代码, 实现下列功能:
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
{ 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 printf("max=%d", max); } 23、请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。 #include 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 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 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 { int y=10; while(y--); printf("y=%d\n",y); } 27、请阅读下面的程序, 在空白处填写正确的代码,该程序的功能是: 的前N 项 之和SN,直到SN 大于Q 为止。 #include { 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)); } 28、请阅读下面的程序, 在空白处填写正确的代码,该程序的功能是: 从键盘上输入一行字 符(不多于 40 个,以回车换行符作为输入结束标记) ,将其中的大写字母改为小写字母, 其 它字符不变,然后逆向输出。 void main() { char a[40]; int n=0; do { 请列出运行的结果, 计算并输出下列级数 scanf("%c", &a[n]); if ( ______ ) a[n]+=32; n++; } while ( _____ != '\n'); n=n-2; while (n>=0) printf("%c", a[n--]); } 29、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:连续向数组输入成绩,并显示数组元素的值,当输入负数时停止接收数据。 void main() { int n; int c[100]; n=0; do { printf("enter num:\n"); printf("%d\n",c[n]); n++; } while ( _____ ); } 30、请阅读下面的程序,分析该程序执行后会有什么错误或者效果。 #include #define MAX 255 void main() { unsigned char A[MAX], i; for (i=0; i<=MAX; i++) A[i]=i; } 31、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:求1-10 的奇数和。 void main() { int x,s=0; s=0; for (x=1; x<=10; ______ ) printf(" 奇数和为: %d", s); } 32、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:计算 void main() { int i, s, n; printf("enter n:"); scanf("%d",&n); for (i=1; i<=n; i++) printf("s=%d",s); } 33、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:求 之和。 void main() { int i,sum=0; for (i=3; i<=29; _______ ) sum = ______ ; printf("sum=%d\n",sum); } 34、请阅读下面的程序,在空白处填写正确的代码,该程序的功能是:输出 整除且个位 数为 6 的所有整数。 #include { int i, j; for (i=0; ______ ; i++) { j=i*10+6; if (j%3 != 0) printf("%d",j); } } 35、请编写程序,从键盘输入一个数,实现对奇数和偶数的判断。 提示: 1) 定义一个int 类型变量x ,从键盘输入数据,调用 scanf()函数。 2) 使用if …else 语句对x 进行判断,如果是奇数就输出“ x 是一个奇数”,否则输出“ x 是偶数”。 36、 从键盘输入三个数 a,b,c ,判断其中的最大值并输出。 提示: 1) 从键盘输入数据,调用 scanf() 函数 2) 用 if..else if..else 语句判断三个数的最大值 37、 编写程序, 实现下列功能: 输入一周中的某一天, 查询这一天是工作日还是周末休息日。 提示: 查询某一天是工作日还是休息日,一次执行一条指令,可以用 switch 语句; n! 的值。 s=3+5+7+…+29 100 以内能被 3 38、编写程序,实现下列功能:做一个值班查询表,周一至周六安排不同的人值夜班,周日不值班。提示: 1) 周一到周日需要键盘输入,调用scanf() 函数 2) 多种情况的判断,用switch 语句 39、编写程序,实现一个能运行加减乘除的简单的计算器。键盘输入表达式,根据加减乘除的符号给出相应的结果。 提示: 1) 键盘输入表达式,根据加减乘除的符号给出相应的结果。 2) 多种判断情况可以用switch 语句 40、编写程序,求10 的阶乘; 提示: 1) 20的阶乘是1*2*3*…*10 2) 判断条件小于等于10,可以用while 循环 41、编写程序,实现对“ 1+3+5+7+- +99”的求和功能。 提示: 1) 使用while 循环语句实现自然数1~99的遍历。 2) 在遍历过程中,判断当前遍历的数是否为奇数,如果是就累加,否则不加。 42、编写程序,键盘输入一个不多于 4 位数,求出它是几位数;提示: 1) 定义一个数num用num/10逐渐削减其倍数,直到为num/10为0; 2) 可以用while 循环 43、编写程序,求10 的阶乘; 提示: 1 ) 20 的阶乘是1*2*3* … *10 2) 判断条件小于等于10,可以用do-while 循环 44、编写程序,实现对“ 1+3+5+7+…+99”的求和功能。 提示: 1) 使用do-while 循环语句实现自然数1~99的遍历。 2) 在遍历过程中,判断当前遍历的数是否为奇数,如果是就累加,否则不加。 45、编写程序,打印出所有的水仙花数。 所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如153 是一个水 仙花数,因为153 = 1A3 + 5A3 + 3A3 。 提示:1)先把一个数的每个位上的数字分离出来 2 )所有的三位数,可以用循环语句去遍历 46、编写程序,打印出九九知法表;提示: 每一行的列数都不相同,可以用循环嵌套 47、一个数恰好等于它的平方数的右端,这个数称为同构数。 如5 的平方是25,5是25 的同构数;编写程序,找出1-1000 之间全部的同构数;提示: 1) 遍历1-1000 之间的数可以用循环 2) 取出数据的最右端数字 48、编写程序,两个乒乓球对进行比赛,甲队为A,B,C 三人,乙队为X,Y,Z 三人,已知抽签 决定比赛名单,有人向队员打听比赛名单,A说他不和X比,C说他不和X,Z比,请编写程 序找出三队赛手的名单。 提示:两队比赛,可以循环嵌套遍历赛手组合 49、编写程序,实现自然数的相加,如果相加这和超过了5000,就不再相加。 50、编写程序,用户键盘输入字符,如果是大写英文字母就打印,否则不打印。 提示:如果不符合条件可以用continue 结束,进行下一次代码判断执行。 51、请阅读下面的程序,分析代码是否能够编译通过,如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。 #include void main() { int k = -3; if (k <= 0) printf("####") else printf("&&&&")