C练习题 答案

发布 2021-05-09 10:31:28 阅读 4416

一、填空。

1、c语言规定,在一个源程序中main函数的位置可以任意

2、c语言中的标识符只能由三种字符组成,它们是数字 、 字母和下划线

3、表达式18/4*sqrt(4.0)/8值的数据类型为双精度

4、当a=3,b=2,c=1时,表达式f=a>b>c的值是 0

5、在c语言中,char型数据在内存中的存储形式是 ascii值

6、对应scanf(“a=%d,b=%d”,&a,&b);语句的输入a为3,b为7的键盘输入格式是a=3,b=7

7、c语言提供的三种逻辑运算符是 &&

8、下面程序段的运行结果是 you?

char str=how are you?”;

printf(“%s”,str+8);

9、模块化程序设计要求: 高内聚、低偶合。

10、已知指针p的指向如图所示,则表达式*p++的值是 21

二、单项选择。

1、以下运算符中运算级别最高的是(d)

a) %b)/ c)< d)!

2、以下是字符常量的是 c

(a)"c" (bc) 'w' (d) '

3、sizeof(float)是 b 。

a)一个双精度型表达式

b)一个整型表达式。

c)一种函数调用

d)一个不合法的表达式。

4、已知i、j、k为int 型变量,若从键盘输入:1,2,3《回车》,使i的值为1,j 的值为2,k的值为3,以下选项中正确的输入语句是:(c)

a) scanf("%2d%2d%2d",&i,&j,&k);

a) scanf("%d %d %d",&i,&j,&k);

a) scanf("%d,%d,%d",&i,&j,&k);

a) scanf("i=%d,j=%d,k=%d",&i,&j,&k);

5、以下非法的赋值语句是:(c)

a)n=(i=2,++ib)j++;

c)++i+1d)x=j>0;

6、以下四个选项中,均是不合法的用户标识符的是(c)

a)a p_o do (b)float la0 _a

c)b-a goto int (d)_123 temp int

7、若有说明语句:char c= '72 ';则变量c(a)

a)包含1个字符 (b)包含2个字符。

c)包含3个字符 (d)说明不合法,c的值不确定。

8、下面不正确的字符串常量是:(a)

a) 'abc ' b) "12 '12" (c) "0" (d) "

9、执行下列程序段后, a值为: d

int a, b;

a=15; b=12;

a=(a-- b++)a%5 : a/5;

(a) 0 (b)2.8 (c)4 (d) 2

10、判断char型变量ch是否为大写字母的正确表达式是(c)

a)’a’<=ch<=’z

(b) (ch>=’a’)&ch<=’z’)

(c) (ch>=’a’)&ch<=’z’)

(d) (a’<=ch) and (‘z’>=ch)

11、以下程序的运行结果是(c)

main()

int m=5;

if(m++>5)

printf(“%d”,m);

elseprintf(“%d”,m--)

a)4 (b) 5 (c) 6 (d) 7

12、以下程序段的运行结果是:(b)

int x=0,s=0;

while(!x!=0) s+=+x;

printf(“%d”,s);

a)0(b)1(c)无限循环(d)程序段中的控制表达式是非法的。

13、c语言中while和do-while循环的主要区别是 (a)。

a)do-while的循环体至少无条件执行一次。

b)while的循环控制条件比do-while的循环控制条件严格。

c)do-while允许从外部转到循环体内。

d)do-while的循环体不能是复合语句。

14、有如下程序,该程序的执行结果是( c )

main()

int num=0;

while(num<=2)

num++;

printf(“%d”,num);

a)1 (b)12 (c)123 (d)1 2 3 4

15、以下程序运行后的输出结果是(a)

main()

int i=3, j=0;

do j=j+(-i); while(i<2);

printf(“%d”,j);

a)2 (b)3 (c) 4 (d)无限循环

16、如果char cc=12345”,做sizeof(cc)后的返回值应为( c )

a)2 (b) 5 (c)6 (d)1

17、判断字符串a和b是否相等,应当使用(d)。

(a)if(a==b

b)if(a=b)

c)if(strcpy(a,b

d)if(strcmp(a,b))

18、执行语句for(i=1;i++<4;);后变量i的值(c)

a)3 (b) 4 (c) 5 (d)不定。

19、下面程序行的结果是:(c)

func(int a,int b)

int c;

c=a+b;

return c;

main()

int x=6,y=7,z=8,r;

r=func((x--,y++,x+y),z--)

printf(“%d”,r);

a)11 (b) 20 (c)21 (d)31

20、有以下程序:

main()

char s=abcd",*p;

for(p=s+1;p}

程序运行后的输出结果是( d )

a) abcdb) a c) b d) bcd

bcd b c cd

cd c d d

d d三、改错题。

1、 以下程序段求两个数的和:

int a,b=4,c;

scanf(“%d”,a);

c=a+b;

printf(“%d”,c);

答案:scanf(“%d”,a);有错,应为:scanf(“%d”,&a);

2、 以下程序段将输入字符显示到屏幕上:

char ch;

ch=getchar(‘ch’);

putchar(‘ch’);

答案:一、ch=getchar(‘ch’);有错。

改为:ch=getchar()

二、putchar(‘ch’);有错。

改为:putchar(ch);

3、 以下程序段输出最大者:

int a=5,b=3;

if(aelse printf(“%d”,b);

答案:if(a改为:

if(a>b) printf(“%d”,a);

4、 以下程序段求1-10所有数的和:

int sum,i;

do sum=sum+i;

i++;while(i<10);

printf(“%d”,sum);

答案:int sum,i;有错。

改为:int sum=0,i=1;

while(i<10);有错。

改为。while(i<=10);

5、 以下程序段将输入的字符串显示到屏幕上:

char str[20];

scanf(“%s”,&str);

puts(str);

答案:scanf(“%s”,&str);有错。

改为。scanf(“%s”,str);

因为数组名本身就表示数组的首地址。

四、编程题。

答案:#include ""

void main()

double x,y;

printf("请输入x的值:")

scanf("%lf",&x);

if(x<1)

else if(x>=1 &&x<10)

elsey=3*x-1;}

printf("y=%lf",y);

2、求十个学生成绩的平均值。

答案:#include ""

void main()

double score[10],sum=0,**g;

int i;

printf("请输入10个学生的成绩:")

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

**g=sum/10;

printf("学生的平均成绩为:%.2lf",**g);

C 练习题答案

一 基本概念与基础知识自测题。3.1 程序阅读题。3.1.1 设有说明 int a 3,b 100 下面的循环语句执行 1 次,执行后a b的值分别为 2 3 while b a 5 假定a 10,b 4,c 5,下列语句的执行结果分别是 1 和 2 1 cout 答案 4.1.7下列程序的输出结果...

C 练习题答案

c 练习题。一 填空题。1 在c 中,函数的参数有两种传递方式,它们是值传递和地址或指针或引用传递 2 在公有继承的情况下,基类数据成员在派生类中的访问权限保持不变 3 描述命题 a小于b或小于c 的表达式为 ac b c 的值是 0 6 面向对象的程序设计有四大特征,它们是抽象 封装 继承 多态 ...

C 高级编程练习题

1.函数声明和函数定义有什么区别?答 1 函数声明是函数的原型,强调函数如何被使用,不包含函数的实现 2 函数定义给出函数的实现 2.const char p1 char const p2 的区别。答 1 const位于星号的左侧,const用来修饰指针所指向的变量,即指针指向为常量 2 const...