C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

1-6章测试题

Posted on 2006-04-06 00:40 我爱C 阅读(3476) 评论(7)  编辑 收藏 引用 所属分类: C语言章节习题

C程序设计》16章测试题

     


请在下课前把答案以邮件形式(不要把答案放到附件里)发到下面的两个邮箱中:

c-program@hotmail.com, xteacher.he@gmail.com
一、选择题(每题
1 分,共 40 分)

1. 以下说法中正确的是

A) C 语言程序总是从第一个的函数开始执行

B) C 语言程序中 , 要调用的函数必须在 main() 函数中定义

C) C 语言程序总是从 main() 函数开始执行

D) C 语言程序中的 main() 函数必须放在程序的开始部分

2. 下列关于C语言用户标识符的叙述中正确的是

A) 用户标识符中可以出现在下划线和中划线(减号)

B) 用户标识符中不可以出现中划线,但可以出现下划线

C) 用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D) 用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头

3. 以下有4组用户标识符,其中合法的一组是

A) For        B) 4d          C) f2_G3          D) WORD

   -sub          DO             IF                void

   Case          Size           abc               define

 

4. 下面四个选项中,均是不正确的八进制数或十六进制数的选项是

A) 016  0x8f    018                  B) 0abc  017    0xa

C) 010  -0x11   0x16                 D) 0a12  7ff    -123

5. 以下正确的叙述是

A) 在C程序中,每行中只能写一条语句

B) 若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C) 在C程序中,无论是整数还是实数,都能被准确无误地表示

D) 在C程序中,%是只能用于整数运算的运算符

6. 下面四个选项中,均是合法的浮点数的选项是

A) +1e+1   5e-9.4  03e2              B) -.60   12e-4   -8e5

C) 123e   1.2e-.4  +2e-1             D) -e3   .8e-4   5.e-0

7 、已知各变量的类型说明如下:

       int k, a, b, w=5;  float x=1.42;

     则以下不符合C语言语法的表达式是

   A) x%(-3)              B) w+=-2    

C) k=(a=2, b=3, a+b)  D) a+=a-=(b=4)*(a=3)

8. 以下不正确的叙述是

A) 在C程序中,逗号运算符的优先级最低

B) 在C程序中,APH和aph是两个不同的变量

C) 若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D) 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

9.  sizeof(double) 是 【

 A )一种函数调用    B )一个双精度型表达式

C )一个整型表达式   D )一个不合法的表达式

10. 设有语句 char a='\72'; 则变量 a 】 。

A )包含 1 个字符 B )包含 2 个字符 C )包含 3 个字符 D )说明不合法

 

11. 执行下面程序中的输出语句, a 的值是【

A) 65   B) 20  C) 15  D) 10

main()

{ int a;

printf("%d\n",(a=3*5,a*4,a+5));}

12. 设有语句 int a=3; 则执行了语句 a+=a-=a*a; 后,变量 a 的值是 【

 A 3  B 0  C 9  D -12

13. 下列关于单目运算符++、--的叙述中正确的是

A) 它们的运算对象可以是任何变量和常量

B) 它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C) 它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D) 它们的运算对象可以是char型变量、int型变量和float型变量

14. C 语言中,如果下面的变量都是 int 类型,则输出的结果是

sum=pad=5; pAd=sum + + ,pAd + + , + + pAd;

printf("%d\n",pad);

 A) 7 B) 6 C) 5 D) 4

15. 以下程序的输出结果是

# include <stdio.h>

main()

{ int i=010 , j = 10;

printf("%d,%d\n",+ +i , j - -); }

 A) 11,10 B) 9,10 C) 010,9 D) 10,9

16. 已知在 ASCII 代码中,字母 A 的序号为 65 ,以下程序的输出的结果是

# include <stdio.h>

main()

{ char c1='A', c2='Y';

printf("%d,%d\n",c1,c2); }

A) 因输出格式不合法,输出错误信息 B 65 90  C A Y  D 65 89

17. 以下程序的输出结果是 【

# include <stdio.h>

# include <math..h>

main()

{ int a=1,b=4,c=2;

float x=10.5 , y=4.0 , z;

z=(a+b)/c+sqrt((double)y)*1.2/c+x;

pritnf("%f\n",z); }

A) 14.000000 B) 015.400000 C) 13.700000 D) 14.900000

18. 以下程序的输出结果是 【

# include <stdio.h>

main()

{ int a=2,c=5;

printf("a=%%d,b=%%d\n",a,c); }

A) a=%2,b=%5 B) a=2,b=5 C) a=%%d,b=%%d D) a=%d,b=%d

19. 以下程序的输出结果是 【

# include<stdio.h>

main()

{ int a ,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

printf("%d,%d\n",a,b); }

 A) 6,1 B) 2,1 C) 6,0 D) 2,0

20. 已知字母 A ASCII 码为十进制的 65 ,下面程序的输出是【

A) 67,D B) B,C C) C,D D) 不确定的值

main()

{ char ch1,ch2;

ch1='A'+'5'-'3';

ch2='A'+'6'-'3';

printf("%d,%c\n",ch1,ch2);}

21.printf 函数中用格式符 %5s 规定字符串的输出格式。如果字符串长度大于5,则输出按方式 ;如果字符串长度小于5,则输出按方式

    A) 从左起输出该字符串,右补空    B) 按原字符长从左向右全部输出

    C) 右对齐输出该字符串,左补空    D) 输出错误信息

22.对如下定义和输入语句,若使a1, a2, c1, c2 的值分别为10, 20, A, B,正确的数据输入方式是

(注:Δ表示空格,<CR>表示回车,下同)。

    int a1, a2;  char c1, c2;

scanf (" %d%c%d%c ", &a1, &c1, &a2, &c2);

      A)  10A Δ 20B<CR>B)  10 Δ A Δ 20 Δ B<CR>       C)  10A20B    D)  10A20 Δ B

23. 由给出的数据输入和输出形式,程序中输入输出语句的正确内容是

     main( )

    { int x;  float y;

      printf (" enter x, y: ")

      输入语句

      输出语句 }

    输入形式    enter x, y: 2 3.4

    输出形式    x+y=5.40

    A) scanf (" %d, %f ", &x, &y);         B)  scanf (" %d%f ", &x, &y);

       printf (" \nx+y=%4.2f ", x+y);        printf (" \nx+y=%4.2f ", x+y);

    C) scanf (" %d%f ", &x, &y);              D)  scanf (" %d%3.1f ", &x, &y);

       printf (" \nx+y=%6.1f ", x+y);          printf (" \nx+y=%4.2f ", x+y);

24. 以下关于运算符优先顺序的描述中正确的是

A) 关系运算符<算术运算符<赋值运算符<逻辑运算符

B) 逻辑运算符<关系运算符<算术运算符<赋值运算符

C) 赋值运算符<逻辑运算符<关系运算符<算术运算符

D) 算术运算符<关系运算符<赋值运算符<逻辑运算符

25. 语句 while(!E); 中的条件 !E 等价于 【

 A E = = 0 B E =1 C E =0 D ~E

26. y=(x>0?1:x<0?-1:0); 的功能相同的 if 语句是

A) if (x>0) y=1;          B) if(x)

   else if(x<0) y=-1;        if(x>0) y=1;

   else y=0;                 else if(x<0) y=-1;

C) y=-1                   D) y=0;

   if(x)                     if(x>=0)

   if(x>0)y=1;               if(x>0)y=1;

   else if(x==0) y=0;        else y=-1;

   else y=-1;

27.对下面三条语句(其中s1和s2为内嵌语句),正确的论断是

   1if (a) s1else s2;      (2) if (a= =0) s2else s1; 

  3if (a!=0) s1else s2

    A) 三者相互等价           B) 1 2 等价 但与 3 不等价

    C) 三者互不等价           D) 1 3 等价 但与 2 不等价

28.若x,y,z的初值均为1,则执行表达式w =++x || ++ y && ++ z后,x,y,z的值分别为。

A. x=1, y=1, z=2      B. x=2, y=2, z=2    

 C. x=1, y=2, z=1      D. x=2, y=1, z=1

29 以下的 for 循环

for(x=0,y=0; (y!=123)&&(x<4); x + + );

A) 是无限循环 B )循环次数不定 C )执行 4 D )执行 3

 

 30.  C 语言中 【

 A 不能使用 do-while 语句构成的循环

B do-while 语句构成的循环必须用 break 语句才能退出

C do-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环

D do-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环

 31. 以下程序的输出结果是 【

# include <stdio.h>

main()

{ int i;

for ( i=1;i<=5;i + + ) {if ( i%2 ) printf("*");

else continue; printf("#");}

printf("$\n"); }

A) *#*#*#$ B) #*#*#*$ C) *#*#$ D) #*#*$

 

32. 下面的程序【

A) 输出的是 1 B) 输出的是 1 -2 C ) 输出的是 3 0 D) 是死循环

main()

{ int x=3;

do {

printf("%d\n",x-=2);

}while(!(--x));}

33. 若执行下面的程序时从键盘上输入 5 ,则输出是【

A) 7  B) 6  C) 5  D) 4

main()

{ int x;

scanf("%d",&x);

if(x++>5) printf("%d\n",x);

else printf("%d\n",x--);}

34. 下面程序的输出是【

A) -1 B) 0 C) 1 D) 不确定的值

main()

{ int x=100, a=10, b=20, ok1=5, ok2=0;

if(a<b)

if(b!=15)

if(! ok1)

x=1;

else

if(ok2)x=10;

x=-1;

printf("%d\n",x);}

35. 为表示关系 x y z, 应使用 C 语言表达式【

A) (x>=y)&&(y>=z)      B) (x>=y)AND(y>=z)

C) (x>=y>=z)           D) (x>=y)&(y>=z)

36. 假定有以下变量定义 :

int k=7 ,x=12;

则能使值为 3 的表达式是

A ) x%=(K%=5)     B)  x%=(k-k%5)

C ) x%=k-k%5      D)  (x%=k)-(k%=5)

37. 以下叙述中正确的是

A ) 输入项可以是一个实型常量 , : scanf("%f",3.5);

B) 只有格式控制 , 没有输入项 , 也能正确输入数据到内存 , 例如 : scanf("a=%d ,b=%d")'

C) 当输入一个实型数据时 , 格式控制部分可以规定小数点后的位数 , 例如 : scanf("%4.2f",&d);

D) 当输入数据时 , 必须指明变量地址 , 例如 : scanf("%f",&f);

38. 在下列选项中 , 没有构成死循环的程序是

A)

int i =100;

while(1)

{ i=i%100+1;

if (i>100)break;

}

B)

 for (;;);

C)

 int k=1000;

do {--k;} while(k>=1000);

D)

 int s=36;

while (s);--s;

39. 执行语句 : for (i=1;i++<4;); , 变量 i 的值是 C

A) 3  B) 4  C) 5  D) 不定

40. 能正确表示 a b 同时为正或同时为负的逻辑表达式是

A) (a>=0 b>=0)&&(a<0 b<0)

B) (a>0&&b>0)||(a<0&&b<0)

C) (a+b>0)&&(a+b<=0)

D) a*b>0

二、填空题(每空 2 分,共 16 分)

1. 一个 C 源程序中至少应包括一个 _____________

2. 结构化程序设计所规定的三种基本控制结构是 __________________________

3. 以下程序的功能是 : 人键盘上输入若干个学生的成绩 , 统计并输出最高成绩和最低成绩,当输入负数时结束输入,请填空。

main()

{ int x, max, min;

scanf("%d",&x);

max=x; min=x;

while( _____________ )

{ if(x>max) max=x;

if( _____________ ) min=x;

scanf("%d",&x); }

printf("\nmax=%f\nmin=%f\n",max, min); }

4. i,j,k 均为 int 型变量 , 则执行完下面的 for 循环后 ,k 的值为 _____________

for(i=0,j=10;i<=j;i++,j--)

k=i+j;

5. 下面程序的功能是 : 计算 1 10 之间奇数之和及偶数之和 , 请填空。

#include <stdio.h>

main()

{ int a, b, c, i;

a=c=0;

for(i=0;i<=10;i+=2)

{ a+=i;

_____________ ;

c+=b;

}

printf(" 偶数之和 =%d\n",a);

printf(" 奇数之和 =%d\n",c-11);

}

6. 下面程序的功能是 : 输出 100 以内能被 3 整除且个位数为 6 的所有整数 , 请填空。

#include <stdio.h>

main()

{ int i, j;

for(i=0; _____________ ; i++)

{ j=i*10+6;

if( _____________ ) continue;

printf("%d",j);

}

}

 

 

 

三、阅读下面的程序,写出每个程序的运行结果(第 1 4 分,第 2,3 题各 5 分,共 14 分)

1.

main()

{ int i=10, j=0;

do

{ j=j+i; i--;}

while(i>2);

printf("%d\n",j);

}

2. 有以下程序:

# include<stdio.h>

main()

{ int c;

while((c=getchar())!='\n')

{ switch(c-'2')

{ case 0:

case 1: putchar(c+4);

case 2: putchar(c+4);break;

case 3: putchar(c+3);

case 4: putchar(c+2);break; } }

printf("\n"); }

输入以下数据, <CR> 代表一个回车符。

2743<CR>

写出程序的输出结果。

 

3.

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

printf("a=%d\n",a) ; 

}

 

四、程序设计题(每题 15 分,共 30 分)

1. 判断 100-200 之间有多少个素数,并输出所有素数。

2. 求分数序列: 1/2,2/3,3/5,5/8,8/13/13/21/ ……的前 20 项之和。

 

 

Feedback

# re: 1-6章测试题  回复  更多评论   

2006-04-09 20:22 by 董琳
1111111111

# 赶紧看  回复  更多评论   

2006-04-10 14:03 by FindLOVE天使
嘿嘿!我知道大家对第三题第二个觉得很难!嘿嘿!我来给大家讲讲!
看好啊!
输入2473 <CR>:
因为程序中接受键盘输入用了 getchar(),所以2473实际上是按照'2'、'4'、'7'、'3'来输入的。
当输入'2'时:c-'2'=0,执行case 0、case 1、case 2后面的语句:putchar(c+4),putchar(c+4),c+4='6',输出:'6'、'6'。遇到break,循环结束。
当输入'4'时:c-'2'=2,执行case 2:putchar(c+4),c+4='8',输出'8'。
当输入'7'时:c-'2'=5,执行default:putchar(c+2),c+2='9',输出'9'。
当输入'3'时:c-'2'=1,执行case 1:putchar(c+4);case 2:putchar(c+4);c+4='7',输出'7'、'7'。

记住啊!小子们好好做啊!我觉得很难的做了好久才出来的啊!
还不谢谢我,谢谢我们2班!

# 好  回复  更多评论   

2006-04-10 17:18 by
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶██████████顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶████████████████顶顶顶顶
顶顶顶顶顶顶顶顶顶顶████顶顶██████████顶顶顶顶顶顶顶顶顶
顶顶顶顶顶顶████████顶顶██顶顶顶████顶顶顶顶顶顶顶顶顶顶
顶█████████████顶顶顶顶顶顶顶███顶顶顶顶顶顶顶顶顶顶顶
顶███████████顶顶顶顶顶顶顶顶█████████顶顶顶顶顶顶
顶顶█████████顶顶顶顶顶顶顶顶████████████顶顶顶顶
顶顶顶█顶顶顶████顶顶顶顶顶顶████顶顶顶顶顶█████顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶顶██顶顶顶█顶顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶███顶顶顶██顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶███顶顶顶██顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶███顶顶███顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶███顶顶███顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶███顶顶███顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶███顶顶███顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶██顶顶顶██顶顶顶顶███顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶██顶顶顶██顶顶顶顶███顶顶顶顶顶
顶顶顶████████顶顶顶顶顶顶█顶顶██顶顶顶顶████顶顶顶顶顶
顶顶顶顶███████顶顶顶顶顶顶顶顶顶██顶顶█顶顶顶██顶顶顶顶顶
顶顶顶顶顶顶█████顶顶顶顶顶顶顶顶███顶顶████顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶███顶顶顶顶顶顶顶████顶顶顶██████顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶█████顶顶顶顶顶██████顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶████顶顶顶顶顶顶顶顶█████顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶█████顶顶顶顶顶顶顶顶顶顶████顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶██顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶██顶顶顶顶
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

我们也鄙视那些人!那些笨蛋!

# re: 1-6章测试题  回复  更多评论   

2006-04-11 10:47 by 神也愁啊。。。。。。。。
有点晕

# re: 1-6章测试题  回复  更多评论   

2006-04-11 11:55 by FN
@FindLOVE天使
当输入'7'时:c-'2'=5,执行default:putchar(c+2),c+2='9',输出'9'



c=7时不是没定义吗?/
为什么还执行呀??

# re: 1-6章测试题  回复  更多评论   

2006-06-12 15:53 by 南吉卓玛
这是上帝给我的第一次机会让我去体验大自然的美,就在那时我才知道世界上

# re: 1-6章测试题  回复  更多评论   

2007-06-12 16:11 by NB
没有答案.我顶????????????????????????????????????????????

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理