文档库 最新最全的文档下载
当前位置:文档库 › C语言程序的设计教程第三章练习题题目

C语言程序的设计教程第三章练习题题目

C语言程序的设计教程第三章练习题题目
C语言程序的设计教程第三章练习题题目

单选题

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 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

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 void main()

{

int y=10;

while(y--); printf("y=%d\n",y);

}

27、请阅读下面的程序, 在空白处填写正确的代码,该程序的功能是: 的前N 项

之和SN,直到SN 大于Q 为止。

#include 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));

}

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 void main()

{

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("&&&&")

相关文档