C语言程序设计教材答案.docx
《C语言程序设计教材答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计教材答案.docx(36页珍藏版)》请在冰点文库上搜索。
C语言程序设计教材答案
第1章C语言概述
一、选择题
1
2
3
4
5
6
D
C
A
C
A
C
二、填空题
1.一个主函数多个
2.main()
3.cobjexe
三、程序填空题
main()
四、运行结果
$$$$$$$$$$$$$$$$
AAAAAAAAA
SSSSSSSSSSSSSS
五、编程题
voidmain()
{
printf("**********************************\n");
printf("*请完成以下功能*\n");
printf("*1、进入程序2、切换用户*\n");
printf("*3、更新程序4、删除程序*\n");
printf("*请选择(1-4):
*\n");
printf("**********************************\n");
}
第2章数据类型、运算符、表达式与基本输入输出
一、选择题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
B
D
D
B
A
CC
A
CC
BC
DBA
A
A
C
A
221
二、填空题
1.3,1
2.不定值
3.1
4.0
5.1,0,0,0
6.0
7.16
8.8,8,9
9.1
三、运行结果题
1.a=32767,b=32768
2.<1>7.000000
<2>6
<3>3.000000
<4>2
<5>6.000000
>0.000000
3.<1>0.000000
<2>0
<3>0
<4>2
<5>10
<6>5
第3章顺序程序设计
一、选择题
1
2
3
4
5
6
7
8
9
10
B
A
BA
A
D
A
B
C
C
D
二、填空题
1.dec:
-1,oct:
37777777777,hex:
ffffffff,unsigned:
4294967295
2.dec:
1,oct:
1,hex:
1,unsigned:
1
3.dec:
65,oct:
41,AXCII:
A
4.3.141593,,3.142
5.3.500000,3.5
6.31.415920,3.141592e+001
7.c=K
8.a=1,b=,c=2
9.a=12,b=345
10.c=A
三、编程题
1.
#include
voidmain()
{
floatr,h,v;
scanf("%f%f",&r,&h);
v=3.14*r*r*h;
printf("v=%f\n",v);
}
2.
#include
voidmain()
{
intn,s=0;
scanf("%d",&n);
s=(n+1)*(n+2)*n/3;
printf("1*2+2*3+...+n(n+1)=%d\n",s);
}
3.
#include
voidmain()
{
inta,b,n=0;
scamf("%d%d",&a,&b);
n=a/2+b/4;
printf("n=%d\n",n);
}
4.
#include
voidmain()
{
printf("O\n");
printf("OOOOOOOOOOO000\n");
printf("OO0\n");
printf("OO0\n");
printf("OOOOOOOOOOO000\n");
printf("O\n");
}
第4章分支结构程序设计习题解
一、选择题
1
2
3
4
5
B
D
A
B
D
二、填空题
1.缺省{}时,else总是与上面最近的、没有匹配过的if匹配。
2.if(a<=b){x=1;printf(“####x=%d\n”,x);}
else {y=2;printf(“****y=%d\n”,y);}
3.根据条件判定值,从两种选择对象中,选取一个作为整个运算的结果
4.
(1)整个条件表达式的结果就取自运算分量b的结果
(2)整个条件表达式的结果就取自运算分量c的结果
三、程序填空题
chargrade;
grade
default
四、运行结果题
1.1,0,1
2.x=6
3.3233
4.*&
五、编程题
1.
#include
#include
voidmain()
{
floata,b,c,s,s1;
printf("Pleaseenter3reals:
\n");
scanf("%f%f%f",&a,&b,&c);
if((a+b)>c&&(a+c)>b&&(b+c)>a)
{
s=(a+b+c)*0.5;
s1=s*(s-a)*(s-b)*(s-c);
s=sqrt(s1);
printf("\nAreaofthetriangleis%f\n",s);
}
elseprintf("Itisnottriangle!
\n");
}
2.
#include
#definePI3.14159
voidmain()
{
intk;
floatr,c,a;
printf("inputr,k\n");
scanf("%f%d",&r,&k);
switch(k)
{
case1:
a=PI*r*r;printf("area=%f\n",a);break;
case2:
c=2*PI*r;printf("circle=%f\n",c);break;
case3:
a=PI*r*r;c=2*PI*r;printf("area=%fcircle=%f\n",a,c);break;
}
}
3.
#include
voidmain()
{
intyear;
scanf("%d",&year);
if(year%400==0||year%4==0&&year%100!
=0)
printf("%disaleapyear\n",year);
else
printf("%disnotaleapyear\n",year);
}
4.
#include
voidmain()
{
floatscore;
scanf("%f",&score);
if(score>=90)
printf("A");
elseif(score>=80)
printf("B");
elseif(score>=70)
printf("C");
elseif(score>=60)
printf("D");
else
printf("E");
}
5.
#include
voidmain()
{
intnum,a,b,c,d,p;
scanf("%d",&num);
if(num<=9999&&num>999)
p=4;
elseif(num>99)
p=3;
elseif(num>9)
p=2;
elseif(num>0)
p=1;
printf("位数是:
%d\n",p);
a=num/1000;
b=num/100-a*10;
c=num/10-a*100-b*10;
d=num%10;
switch(p)
{
case4:
printf("%d%d%d%d\n",d,c,b,a);break;
case3:
printf("%d%d%d\n",d,c,b);break;
case2:
printf("%d%d\n",d,c);break;
case1:
printf("%d\n",d);
}
}
第5章循环结构程序设计习题解
一、选择题
1
2
3
4
5
A
C
C
B
B
二、填空题
1.
(1)while
(2)do-while(3)for
2.do-while语句
3.for语句
4.
(1)先判断条件是否成立(为真),若成立(为真)再执行循环语句
(2)先执行循环语句,再判断条件是否成立(为真),若成立则继续执行循环,若不成立,则结束循环。
do-while至少执行一次循环语句
5.表达式1;
while(表达式2)
表达式3;
6.
(1)结束本次循环,后进行循环的条件判定,即不终止整个循环的执行过程
(2)终止整个循环的执行,不再进行条件判定
7.一个循环体内包括另一个完整的循环结构
8.死循环,不能确定次数
三、程序填空题
1.18或19
2.c=getchar()
四、运行结果题
1.011122
2.x=8
五、编程题
1.
#include
voidmain()
{
inti,s=0;
for(i=1;i<=101;i+=2)
if((i-1)%4==0)
s+=i;
else
s-=i;
printf(“%d”,s);
}
2.
#include
#include
voidmain()
{
longinti,x,y,z;
for(i=1;i<100000;i++)
{
x=sqrt(i+100);/*x为加上100后开方后的结果*/
y=sqrt(i+268);/*y为再加上268后开方后的结果*/
if(x*x==i+100&&y*y==i+268)
printf("\n%ld\n",i);
}
}
3.
#include
voidmain()
{
intn,i;
printf("\npleaseinputanumber:
\n");
scanf("%d",&n);
printf("%d=",n);
for(i=2;i<=n;i++)
{
while(n!
=i)
{
if(n%i==0)
{
printf("%d*",i);
n=n/i;
}
else
break;
}
}
printf("%d",n);
}
4.
#include
voidmain()
{
charc;
intletters=0,space=0,digit=0,others=0;
printf("pleaseinputsomecharacters\n");
while((c=getchar())!
='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
elseif(c=='')
space++;
elseif(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("allinall:
char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others);
}
5.
#include
#include
voidmain()
{
inti,n,j,k,m,l=0;
for(i=4;i<=2000;i+=2)
{
for(n=2;n
{
for(j=2,k=1;j<=(int)sqrt(n);j++)/*判断n是否素数*/
{
if(n%j==0)k=0;
}
if(k)/*若n是素数,则继续判断i-n是否素数*/
for(j=2,m=1;j<=(int)sqrt(i-n);j++)/*判断i-n是否素数*/
{
if((i-n)%j==0)m=0;
}
if(m)
{
printf("%d=%d+%d",i,n,i-n);
l++;
if(l%5==0)
printf("\n");
break;
}
}
if(n==i)printf("error%d\n",i);/*n等于i,i不遵循哥德巴赫猜想*/
}
}
6.
#include
voidmain()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{
x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("thetotalis%d\n",x1);
}
7.
#include
voidmain()
{
inti,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)printf("");
for(k=0;k<=2*i;k++)printf("*");
printf("\n");}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)printf("");
for(k=0;k<=4-2*i;k++)printf("*");
printf("\n");
}
}
8.
#include
voidmain()
{
doublep=1,t=1,v;
inti;
for(i=1;i<64;i++)
{
p=p*2;/*p是当前格子中的麦子粒数*/
t=t+p;/*t是当前麦子总粒数*/
}
v=t/1.42e8;
printf("total=%e\n",t);
printf("volume=%e\n",v);
}
第6章数组与指针
一、选择题
1
2
3
4
5
6
7
8
9
10
C
D
B
C
C
A
D
A
A
D
11
12
13
14
15
16
C
(1)C
(2)C
C
A
A
C
二、读程序题
1.ABC
2.479
3.19
4.6
5.s=s+1.0/n;或s=s+1/(float)n;
6.-1
7.4
8.LANG
三、程序填空
1.i=strlen(s);i>=j;i—
s[i+1]=s[i];
!
=’\0’
i++
2.(ch=st[i])
ch==’’
word==0
n++
四、编程题
1.
#include
#defineNUM10
voidmain()
{
inti,count=0;
floata[NUM],sum=0,aver;
for(i=0;i{
scanf("%f",&a[i]);
sum+=a[i];
}
aver=sum/NUM;
printf("Theaverageis:
%.2f\n",aver);
for(i=0;iif(a[i]>aver)
count++;
printf("thenumberthatisoveraverageis:
%d\n",count);
}
2.
#include
#defineNUM10
voidmain()
{
inti;
floata[NUM],max,min;
scanf("%f",&a[0]);
max=a[0];
min=a[0];
for(i=1;i{
scanf("%f",&a[i]);
if(a[i]>max)
max=a[i];
elseif(a[i]min=a[i];
}
printf("max=%d\nmin=%d\n",max,min);
}
3.
#include
#defineNUM20
voidmain()
{
inta[NUM],i;
for(i=0;iscanf("%d",&a[i]);
printf("theresultis:
\n");
for(i=0;iif(i%2==0&&a[i]%2==0)
printf("%d\n",a[i]);
}
4.
#include
voidmain()
{
inti,j,sum1=0,sum2=0,sum3=0;
floataver;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i]);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%6d",a[i][j]);
printf("\n");
}
for(i=0;i<3;i++)
sum1+=a[i][j]+a[2-i][i];
printf("输出主对角线与次对角线元素的和是:
%d\n",sum1);
for(i=0;i<3;i++)
sum2+=a[1][i];
printf("输出第二行元素的和是:
%d\n",sum2);
for(i=0;i<3;i++)
sum3+=a[i][2];
aver=(float)sum3/3;
printf("输出第三列元素的平均值是:
%.2f\n",aver);
}
5.
#include
voidmain()
{
inti,co1=0,co2=0,co3=0,co4=0;
chars[1000],c;
gets(s);
for(i=0;(c=a[i])!
='\0';i++)
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
co1++;
elseif(c=='')
co2++;
elseif(c>='0'&&c<='9')
co3++;
else
co4++;
printf("统计字符串中英文字母、空格符、数字字符及其它字符的个数分别是:
%d,%d,%d,%d\n",co1,co2,co3,co4);
}
6.
#include
#defineN10
voidmain()
{
inta[N][N],i,j;
for(i=0;i{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;ifor(j=1;j
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i{
for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
}
7.
#include
voidmain()
{
inti,j;
for(i=0;i<5;i++)
{
for(j=0;j
printf("");
for(j=0;j<5;j++)
printf("*");
printf("\n");
}
}
第7章函数与变量
一、选择题
1
2
3
4
5
6
7
8
9
10
11
12
D
C
B
B
D
A
D
D
D
A
A
A
二、填空题
1.4
2.doubleavg(doublea,doubleb)
3.2
11
4.i+11
三、编程题
1
#include
doublecylinder(doubler,doubleh)
{
doubleresult;
result=3.1415926*r*r*h;
returnresult;
}
voidmain()
{
doubleheight,radius,volume;
doublecylinder(doubler,doubleh);
printf("Enterradiusandheight:
");
scanf("%lf%lf",&radius,&height);
volume=cylinder(radius,height);
printf("Volume=%.3f\n",volume);
return0;
}
2
#include
char*fun(char*s,charc)
{
char*t=s;
char*f=s;
for(;*f;f++)
{
if(*f==c)
continue;
*t=*f;
t++;
}
*t=0;
returns;
}
voidmain()
{
charinput[1000];
charc;
printf("请输入一个字符串:
");
gets(input);
printf("请输入一个字符:
");
scanf("%c",&c);
printf("结果:
");
puts(fun(input,c));
}
3
#include
longfun(intg)
{
switch(g)
{
case0:
return0;
case1:
case2:
return1;
}
return(fun(g-1)+fun(g-2));
}
voidmain()
{
longfib;intn;
printf("Inputn:
");
scanf("%d",&n);
printf("n=%d\n",n);
fib=fun(n);
printf("fib=%d\n\n",fib);
}
4
#include