c语言全部复习题答案.docx

上传人:b****8 文档编号:28591520 上传时间:2023-07-19 格式:DOCX 页数:79 大小:46.13KB
下载 相关 举报
c语言全部复习题答案.docx_第1页
第1页 / 共79页
c语言全部复习题答案.docx_第2页
第2页 / 共79页
c语言全部复习题答案.docx_第3页
第3页 / 共79页
c语言全部复习题答案.docx_第4页
第4页 / 共79页
c语言全部复习题答案.docx_第5页
第5页 / 共79页
点击查看更多>>
下载资源
资源描述

c语言全部复习题答案.docx

《c语言全部复习题答案.docx》由会员分享,可在线阅读,更多相关《c语言全部复习题答案.docx(79页珍藏版)》请在冰豆网上搜索。

c语言全部复习题答案.docx

c语言全部复习题答案

第一章习题

1.1选择题:

⑴一个C程序的执行是( A )。

A) 从main()函数开始,直到main()函数结束

B) 从第一个函数开始,直到最后一个函数结束

C) 从第一个语句开始,直到最后一个语句结束

D)从main()函数开始,直到最后一个函数结束

⑵计算机能直接执行的语言是(B)。

A)汇编语言B)机器语言C)高级语言D)A和B

⑶一个C程序是由(C)。

A)一个主程序和若干子程序组成

B)若干过程组成

C)一个或多个函数组成

D)若干子程序组成

⑷下列说法正确的是(B)。

A)C程序书写格式限制严格,一行必须写一个语句

B)C程序书写比较自由,一个语句可以分行写在多行上

C)C程序书写格式限制严格,要求一行必须写一个语句,并要求行号

D)C程序中一个语句不可以分写在多行上

1.2填空题:

⑴构成C语言程序的基本单位是  函数   。

⑵C语言源程序文件的后缀是 .c  ,经过编译后,生成文件的后缀是 ,obj  ,经过连接后,生成文件的后缀是 .exe  。

⑶在TURBOC环境中用RUN命令运行一个C程序时,所运行的程序的后缀是 .exe  。

⑷一个C语言程序必须有而且只能有一个主函数,它的函数名为 main  。

⑸一个函数有两部分组成,第一部分称为 函数首部  ;第二部分称为 函数体  。

⑹函数体由符号  { 开始,用符号  } 结束。

函数体的前面是 声明  部分,其后是 执行  部分。

1.3上机编辑、调试、运行下列程序,发现错误,并改正之。

/*求1+2+3+……+10的和*/

#include

main()

{

ints,n;

sum=0;n=1;

while(n<0)

{sum=sum+n;

n=n+1;

}

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

}

第二章习题

2.1选择题

⑴在以下标识符中,(B)是合法的用户标识符。

A)a#bB)getchC)voidD)ab*

⑵不合法的八进制数是( B  )。

 A)0B)C)D)01

⑶不合法的十六进制数是( A  )。

0x

 A)oxffB)0XabcC)0x11D)0x19

⑷以下选项中正确的整型常量是(B)。

A)12.B)-20C)1,000D)456

⑸以下选项中正确的实型常量是(D)。

A)0B)3.1415C)0.329×102D).871

⑹以下选项中不正确的实型常量是(B)。

A)2.607E-1B)0.8103e3C)-88.77D)871e-2

⑺以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子

的C语言表达式是(A)。

A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z

⑻在C语言中,字符型数据在存中以(C)的形式存放。

A)原码B)补码C)ASCII码D)BCD码

⑼sizeof(float)是(C)。

A)一种函数调用B)一个不合法的表示形式C)一个整型表达式D)一个实型表达式

⑽表达式b=((241&15)&&('Z'|'a'))的值是(B)。

A)0B)1C)TRUED)FALSE

⑾若变量已正确定义并赋值,符合C语言语法的表达式是(B)。

A)a=a+7;B)a=7+b+c,a++C)int(13.4%4)D)a=a+7=c+b

⑿以下叙述中正确的是(A)。

A)a是实型变量,C语言允许进行a=10,因此可以这样说:

实型变量中允许存放整型值

B)在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C)执行表达式a=b后,在存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值改变为0

D)已有a=3,b=5。

当执行了表达式a=b,b=a之后,已使a中的值为5,b中的值为3

2.2填空题

⑴数学式子

cos2x·

写成C语言表达式是cos(x)*cos(x)*((a+b)/(a-b))。

⑵a是整型变量,能将a清零的表达式是a=0;能将a中的各二进制为均置成1的表达式是a=-1。

⑷若a,b和c均是int型变量,则执行下面表达式后,a值为6,b值为4,c值为2。

a=(b=4)+(c=2)

⑸经过下述赋值后,变量x的数据类型是int。

intx=2;

doubley;

y=(double)x;

⑹若x和n均是整型变量,且x和n的初值均为5,则执行下面表达式后,x值为10,n值为6。

x+=n++x=x+n++

⑺若有定义:

intb=7;floata=2.5,c=4.7;则下面表达式的值为4.5。

a+(int)(b/3*(int)(a+c)/2)%4

⑻若有定义:

intm=7,y=2;则执行下面表达式的值后,y值为-24。

y+=y-=m*=y

⑼表达式8/4*(int)2.5/(int)(1.25*(3.7+2.3))的类型为整型。

⑾条件“-1-1&&x<3)||(x<-99)。

⑿若x和a均是整型变量,则执行表达式①后的x值为12,执行表达式②后的x值为4。

1x=(a=4,6*2)

2x=a=4,6*2

⒀一个字节包含8个二进制位,在一个字节中能存放的最大(十进制)整数是,它的二进制数的形式是;最小(十进制)整数是,它的二进制数的形式是。

⒁当计算机用两个字节存放一个整数时,其中能存放的最大(十进制)整数是,它的二进制数的形式是;最小(十进制)整数是,它的二进制数的形式是。

2.3改错题

⑴#includestdio.h; #include正确    

main();(多分号)/*mainfunction*/

{

floatr,s;/*risradius,sisareaofcircular*/

r=5.0;

s=3.14159*r*r;

printf("%f\n",s);

 

⑵#includestdio.h(缺 <>号)#include正确

main();/*mainfunction*/

{

floata,b,c,v;/*a,b,caresides,visvolumeofcube*/

a=2.0;b=3.0;c=4.0;(缺;号)

v=a*b*c;

printf("%f\n",v);(缺;号)

}

第三章习题

3.1什么是C语言的基本执行单位?

C语言的语句是如何分类的?

3.2C语言的流程控制语句有哪几种?

3.3结构程序设计的基本结构有哪几种?

3.4C语言的输入输出操作是由语句来实现的吗?

3.5顺序结构程序的特点是什么?

3.6输入下面的程序,观察运行结果。

#include

main()

{floata1,a2;

doubleb1,b2;

a1=3141.59;a2=0.000001;

b1=3141.59;b2=0.000001;

printf("%f,%lf\n",a1+a2,b1+b2);

}

答案:

3141.590089,3141.590001

3.7输入下面的程序,观察运行结果。

#include

main()

{charch;

intk;

ch='a';k=66;

printf("%c,%d,%x,%o,%d,%c",ch,ch,ch,ch,k,k);

}

答案:

a,97,61,141,66,B

3.8输入下面的程序,观察运行结果。

#include

main()

{

floatx;

doubley;

x=123.45678;

y=123.45678;

printf("%-4.2f,%-6.2e\n",x,y);

}

答案:

123.46,1.2e+02

3.9输入下面的程序,观察运行结果,并说明程序的功能(注意:

运行时输入大写字母)。

#include

voidmain()

{charc1,c2;

c1=getchar();

printf("%c,%d\n",c1,c1);

c2=c1+32;

printf("%c,%d\n",c2,c2);

}

答案:

A,65

a,97

该程序是将键盘输入的大写字母转换为对应的小写字母。

3.10编写程序:

求三个正整数(小于32767)的算术平均值。

#include

voidmain()

{inta,b,c;

doubled;

printf("\ninputa,b,c=");

scanf("%d,%d,%d",&a,&b,&c);

d=(a+b+c)/3.0;

printf("\nd=%f",d);

}

3.11编写程序:

已知圆的半径,求圆的周长和面积(要求半径值由键盘接受)。

#include

voidmain()

{intr;

doublek,s;

printf("\ninputr=");

scanf("%d",&r);

k=2*3.14159*r;

s=3.14159*r*r;

printf("\nL=%f\nS=%f",k,s);

}

3.12编写程序:

计算a+b2-6的值,其中:

a=4,b=3;a=5,b=2;a=2,b=8。

#include

voidmain()

{floata,b,h;

printf("\ninputa,b=");

scanf("%f,%f",&a,&b);

h=a+b*b-6;

printf("\na=%f,b=%f\nh=%f",a,b,h);

}

第四章习题

4.1判断下列述的真假:

⑴在三种形式的if语句中,在if关键字之后均为表达式。

该表达式只能是逻辑表达式或关系表达式。

False

⑵在if语句中,关键字之后的表达式必须用括号括起来,并随后跟分号(;)。

False

⑶在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。

True

⑷条件运算符的结合方向是自右至左。

False

⑸switch语句中的case后面必须是整常量表达式,如整数常数、字符常量。

True

⑹当switch的整类型表达式的结果值与某一个case块的整常量表达式的值相等时,将转至该case块,并且执行该case与下一个case之间的所有语句。

False

⑺可以使用goout语句跳出switch语句。

False

⑻else总是与它前面最近的if配对。

True

4.2阅读下面的程序,说明程序的运行结果。

#include

voidmain()

{intx=10,y=20,t;

if(x!

=y){t=x;x=y;y=t;}

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

}答案:

20,10

4.3输入下面的程序,观察运行结果并说明程序的功能。

#include

voidmain()

{intx=20;

if(x>=0)

if(x<50)

printf("xisok\n");

else

printf("xisnotok\n");

}

答案:

xisok

4.4分别输入下面两个程序,观察运行结果,说明有何不同。

程序段1:

#include

voidmain()

{intx=20;

if(x<=0)

if(x<50)

printf("xisok\n");

else

printf("xisnotok\n");

}

答案:

什么也不输出.

程序段2:

#include

voidmain()

{intx=20;

if(x<=0)

if(x<50)printf("xisok\n");

else

printf("xisnotok\n");

}答案:

xisnotok.

4.5输入下面的程序,观察运行结果并说明程序的功能。

#include

voidmain()

{intx,a;

scanf(“%d”,&x);

a=x%10;

switch(a)

{case0:

case2:

case4:

case6:

case8:

printf(“even!

\n”);break;

default:

printf(“odd!

\n”);

}

}答案:

输入偶数, 则输出 even!

输入奇数, 则输出 odd!

4.6编写程序:

从键盘输入三个正整数,按由大到小的顺序输出。

#include

voidmain()

{inta,b,c,t;

printf("inputa,b,c=:

");

scanf("%d%d%d",&a,&b,&c);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

printf("%5d%5d%5d",a,b,c);

}

4.7编写程序:

从键盘输入一个正整数,判断它是否既能被3整除,又能被7整除。

方法1:

#include

voidmain()

{intk;

scanf("%d",&k);

if(k%3==0&&k%7=0)

printf("\nyes");

else

printf("\nno");}

方法2:

#include

main()

{intx;

scanf("%d",&x);

if(x%3==0)

{if(x%7==0)

printf("3---yes7----yes");

else

printf("3---yes7----no");

}

else

{if(x%7==0)

printf("3---no7---yes");

else

printf("3---no7---no");

}

}

4.8编写程序:

求函数:

X+5(X>=0)

y=

X-5(X<0)的值。

main()

{intx,y;

scanf("%d",&x);

if(x>=0)

y=x+5;

else

y=x-5;

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

}

第五章习题

5.1试比较三种循环语句的异同。

5.2选择题:

⑴下面关于for循环的正确描述是(D)。

A)for循环只能循环次数已经确定的情况

B)for循环是先执行循环体语句,后判断终止条件

C)在for循环中,不能用break语句跳出循环体

D)在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

⑵对for(表达式1;;表达式3)可以理解为(B)。

A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)

⑶若有“intm;”,则以下循环执行次数是(B)。

for(m=2;m==0;)

A)无限次B)0次C)1次D)2次

⑷下面不是死循环的是(A)。

A)for(y=0,x=1;x>++y;x=i++)i=x;B)for(;;x=++1);

C)while

(1){x++;}D)for(i=10;;i--)sum+=i;

⑸下面程序段的运行结果是(B)。

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

{if(i==2)continue;

printf("%d",i);

}

A)01B)0134C)01234D)不打印

⑹下面程序段的运行结果是(B)。

intk=10;

while(k=0)k=k-1;

A)while循环执行10次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

⑺执行语句“for(n=1;n++<4;);”后变量n的值是(C)。

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

⑻以下正确的描述是(B)。

A)continue语句的作用是结束整个循环的执行

B)只能在循环体和switch语句体使用break语句

C)在循环体使用break语句和continue语句的作用相同

D)从多层循环嵌套中退出时,只能使用goto语句

5.3写出下列程序的运行结果

#include

voidmain()

{inti=0,a=0;

while(i<20)

{for(;;)

if(i%10==0)break;

elsei--;

i+=11;a+=i;

}

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

}

答案:

32

#include

voidmain()

{inti,j,b=0;

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

for(j=0;j<2;j++)

if(j>=i)b++;

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

}

答案:

3

5.4下面程序的功能是从键盘输入10个无序的整数,去掉最大数和最小数,再求其平均值。

请填空。

#include

voidmain()

{intj,x,max,min,sum;

fioatave;

printf("Enter10number:

\n");

scanf("%d",&x);

sum=max=min=x;

for(j=2;j<=10;j++)

{scanf(“%d”,&x);

sum+=x;

if(x>max)max=x;

elseif(x

}

sum=sum-max-min;

ave=sum/8.0;

print("Theaverageis%.2f\n",ave);

}

5.5编程计算1~100之间是7的倍数的数值之和。

#include

main()

{inti,s=0;

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

if(i%7==0)s+=i;

printf("\ns=%d",s);

}

5.6编写程序,利用下面公式求π的近似值:

π2/6=1/12+1/22+1/32+1/42+…,直到某项绝对值不大于10-12为止。

#include

#include

main()

{longn=1;

doublex,sum=0;

x=1.0/(n*n);

while(x>=1e-12)

{sum=sum+x;

n++;

x=1.0/(n*n);}

sum=sqrt(sum*6);

printf("\nPI=%f,n=%ld",sum,n-1);

}

5.7计算键盘输入的字符数。

(提示:

用getchar())

方法1:

#include

#include

main()

{charc;

intn=0;

c=getchar();

while(c!

='\n')

{n++;

c=getchar();}

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

}

方法2:

#include

voidmain()

{charc;

intchgs=0;

printf("Enteronelinechar:

\n");

while(c=getchar()!

='\n')

chgs++;

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

}

5.8用1元人民币兑换1分、2分、5分的硬币,编程计算共有多少种不同的兑换方法。

方法1:

#include

voidmain()

{intx,y,z,he=0;

for(x=1;x<=20;x++)

for(y=1;y<=50;y++)

{z=100-x*5-2*y;

if(z>0){he++;printf("\nx=%d\ty=%d\tz=%d",x,y,z);}

}

printf("\nhe=%d",he);

}

结果:

he=461

方法2:

#include

voidmain()

{intg,k,s,fa=0;

for(g=1;g<=93;g++)

for(k=1;k<=47;k++)

{s=(100-g-2*k)/5;

if(g+2*k+5*s==100&&s>0)fa=fa+1;

}

printf("\nfa=%d\n",fa);

}

结果:

fa=461

5.9编程求出1000以的所有完全数。

若一个数恰好等于它的因子之和(除自身外),则称该数为完全数,例如:

6=1+2+3,故6是完全数。

方法1:

#include

#defineM1000

voidmain()

{intk1,k2,k3,k4,k5,k6,k7,k8,k9,k10;

inti,a,n,s;

for(a=2;a<=M;a++)

{n=0;

s=a;

for(i=1;i

if(a%i==0)

{n++;

s=s-i;

switch(n)

{case1:

k1=i;break;

case2:

k2=i;break;

case3:

k3=i;break;

case4:

k4=i;break;

case5:

k5=i;break;

case6:

k6=i;break;

case7:

k7=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小学作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1