C语言课后习题答案.docx
《C语言课后习题答案.docx》由会员分享,可在线阅读,更多相关《C语言课后习题答案.docx(24页珍藏版)》请在冰豆网上搜索。
C语言课后习题答案
第一章习题答案
一、选择题
1~5:
BDCDA 6~10:
DABBB11~12:
CC
二、填空题
1、main()
2、函数首部,函数体
3、函数
4、编辑、编译、连接、运行
5、.cpp、.obj、.exe
6、;或分号
三、编程题
#include /*包含标准库的信息*/
voidmain() /*定义名为main的函数,它不接受参数值*/
{ /*main函数的语句都被括在花括号中*/
printf("hello,world\n");
/*main函数调用库函数printf以显示字符序列,其中\n代表换行符*/
}
第二章习题答案
一、选择题
1~5:
CBABB 6~10:
CDCDD 11~15:
CADBC 16~20:
BDAAD
二、填空题
1、整型,实型,字符型,枚举类型
2、1
3、9
4、12353514
5、2,1
6、2,2
7、10200
8、a=14
9、2,3,1
10、double
第三章习题答案
一、选择题
1~5:
CBBBC 6~10:
DDDBB
二、填空题
1、控制语句,表达式语句,复合语句
2、;
3、{}
4、1
5、a
6、c:
dec=120,oct=170,hex=78,ASCII=x
7、32767,32767
8、10,A,10
9、3 3
10、
(1)123.456001
(2)□□□□□□□123.456
(3)123.4560
(4)8765.456700
(5)□□□□□□8765.457
(6)8765.4567
(7)8765.4567
三、编程题
1、参考答案:
#include
voidmain()
{
int a,b,c;
long intu,n;
float x,y,z;
char c1,c2;
a=3;b=4;c=5;
x=1.2;y=2.4;z=-3.6;
u=51274;n=128765;
c1='a';c2='b';
printf("\n");
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("c1='%c'or%d(ASCII)\n",c1,c1);
printf("c2='%c'or%d(ASCII)\n",c2,c2);
}
2、参考答案:
#include
voidmain()
{
float a,b,c,t;
printf("pleaseinputa,b,c:
\n");
scanf("%f,%f,%f",&a,&b,&c);
t=(a+b+c)/3;
printf("averageof%6.2f、%6.2f and %6.2f is %6.2f\n",a,b,c,t);
}
3、参考答案:
#include
main()
{
int R,d;
float s;
printf("请输入圆的半径");
scanf("%d",&R);
d=2*R;
c=2*3.14159*R;
printf("d=%d,c=%f\n",d,c);
}
4、参考答案:
#include
voidmain()
{
int h,f,x,y;/*x为鸡的数量,y为兔的数量*/
printf("请输入鸡兔的总头数h,总脚数f:
");
scanf("%d%d",&h,&f);
x=(4*h-f)/2;
y=(f-2*h)/2;
printf("笼中有鸡%d只,有兔%d只。
\n",x,y);
}
第四章习题答案
一、选择题
CDDDDCDBBC
二、填空题
1、&&,||, !
, !
, ||
2、(y%2 0)
3、1
4、(a+b>c&&a+c>b&&b+c>a)
5、233
6、7
三、编程题
1、参考答案:
#include
voidmain()
{intx;
scanf("%d",&x);
if(x%5 0&&x%7 0)
printf("yes\n");
else
printf("no\n");
}
2、参考答案:
#include
voidmain()
{ int a,b,c,max;
printf("请输入三个整数:
%%d%%d%%d\n");
scanf("%d%d%d",&a,&b,&c);
if (a>=b)
if (a>=c) max=a;
else max=c;
else
if(b>=c) max=b;
else max=c;
printf("\n最大数为:
%d\n",max);
}
3、参考答案:
#include
voidmain()
{
float x,y;
printf("请输入x的值:
");
scanf("%f",&x);
if(x<1)y=1;
elseif(x<10)
y=2*x-1;
else
y=3*x-11;
printf("y=%.2f\n",y);
}
4、参考答案:
#include
voidmain()
{
intyear;
floatmoney,rate,total; /*money:
本金rate:
月利率total:
本利合计
*/
printf("Inputmoneyandyear=?
");
scanf("%f%d",&money,&year); /*输入本金和存款年限*/
if(year 1)rate=0.00315; /*根据年限确定利率*/
elseif(year 2)rate=0.00330;
elseif(year 3)rate=0.00345;
elseif(year 5)rate=0.00375;
elseif(year 8)rate=0.00420;
elserate=0.0;
total=money+money*rate*12*year; /*计算到期的本利合计*/
printf("Total=%.2f\n",total);
}
第五章习题答案
一、选择题
1~5:
ACCBA
6~10:
ACDCB
二、填空题
1、
(1)i<=9或i<10
(2)j%3!
=0
2、7
3、
(1)ch=ch+1、
(2)printf("\n")
三、编程题
1、参考答案:
#include
voidmain()
{inti=2;
longp=1;
do
{p=p*i;
i=i+2;
} while(i<10);
printf("2*4*6*8=%ld\n",p);
}
2、参考答案:
#include
voidmain()
{intn=0;
charc;
c=getchar();
while(c!
='\n')
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))n++;
c=getchar();
}
printf("%d\n",n);
}
3、参考答案:
#include
voidmain()
{inta,max;
scanf("%d",&a);
max=a;
while(a!
=0)
{scanf("%d",&a);
if(max}
printf("%d",max);
}
4、参考答案:
#include
voidmain()
{
intday=0,buy=2;
floatsum=0.0,ave;
do
{
sum+=0.8*buy;
day++;
buy*=2;
}
while(buy<=100);
ave=sum/day;
printf(“%f”,ave);
}
5、参考答案:
#include
voidmain()
{intf1,f2,f5,count=0;
for(f5=0;f5<=20;f5++)
for(f2=0;f2<=(100-f5*5)/2;f2++)
{f1=100-f5*5-f2*2;
if(f5*5+f2*2+f1 100)
printf("No.%2d>>5:
%4d2:
%4d1:
%4d\n",++count,f5,f2,f1);
}
printf("共有%d种换法",count);
}
6、参考答案:
#include
voidmain()
{inti,j,n;
printf("\nPleaseEntern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
}
7、参考答案:
#include
voidmain()
{
inti,j;
floatg,sum,ave;
for(i=1;i<=6;i++)
{
sum=0;
for(j=1;j<=5;j++)
{
scanf(“%f”,&g);
sum+=g;
}
ave=sum/5;
printf(“No.%dave=%5.2f\n”,i,ave);
}
}
8、参考答案:
#include
voidmain()
{intn,t,number=20;
floata=2,b=1,s=0;
for(n=1;n<=number;n++)
{s=s+a/b;
t=a;
a=a+b;
b=t;
}
printf("s=%9.6f\n",s);
}
第六章习题答案
一、选择题
1~5:
CBABD 6~10:
CDBCD
二、填空题
1、库函数(或系统函数),自定义函数
2、无参函数, 有参函数
3、传值方式
4、实参, 形参
5、1 3
6、maxis2
7、15
8、1,2,3
三、编程题
1、参考答案:
#include
intis_prime(inta)
{inti,p=1;
for(i=2;i if(a%i 0)
{p=0;break;}
return(p);
}
voidmain()
{inti=11;
if(is_prime(i))
printf("1");
else
printf("0");
}
2、参考答案:
#include
intgongyue(intnum1,intnum2)
{inttemp,a,b;
if(num1 {temp=num1;num1=num2;num2=temp;}
a=num1;
b=num2;
while(b)
{temp=a%b;a=b;b=temp;}
return(a);
}
voidmain()
{inti=12,j=8;
printf("%d",gongyue(i,j));
}
第七章习题答案
一、选择题
1~5:
BDDCC 6~10:
CDCAB
二、填空题
1、字符、1
2、2
3、c:
\win98\cmd.exe
4、1,2,3,4,5,6,7,8,9,0
5、325678
6、1,0,7,0,
7、4332
8、
(1)j=2
(2)j>=i
三、编程题
1、参考答案:
#include
voidmain()
{ inti,a[20],s,count;
s=count=0;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
for(i=0;i<20;i++)
{ if(a[i]<0)
continue;
s+=a[i];
count++;
}
printf("s=%d\tcount=%d\n",s,count);
}
2、参考答案:
#include
voidmain()
{inta[3][4],i,j,max;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]>max) max=a[i][j];
printf("max=%d\n",max);
}
3、参考答案:
#include
voidmain()
{inta[11]={3,4,7,9,10,13,14,15,18,20};
inti,j,n;
scanf("%d",&n);
i=0;
while(i<10)
{if(n {
for(j=10;j>i;j--)
a[j]=a[j-1];
a[i]=n;
break;
}
i++;
}
if(i>=10)
a[10]=n;
for(i=0;i<11;i++)
printf("%4d",a[i]);
}
第八章习题答案
一、选择题
1?
5ABCCB 6?
10DACBB 11?
15DACCC
二、填空题
1.
(1)*
(2)&
2.
(1)*p
(2)**a (3)2
3.10
4.*p>*s
5.*(++p)
三、编程题
1.编程实现从键盘输入一个字符串,将其字符顺序颠倒后重新存放,并输出这个字符串。
#include
#include
voidInverse(char*pStr)?
main()
{
char str[80]?
printf("Inputastring:
\n")?
gets(str)?
/*输入字符串*/
Inverse(str)?
/*将存于str数组中的字符串逆序存放*/
printf("Theinversedstringis:
\n")?
puts(str)?
/*输出字符串*/
}
/*函数功能:
实现字符串逆序存放
函数参数:
字符指针变量,所指向的存储单元存放源字符串,逆序后的字符串也存放于此
返回值:
无*/
voidInverse(char*pStr)
{
int len?
chartemp?
char*pStart?
/*指针变量pStart指向字符串的第一个字符*/
char*pEnd?
/*指针变量pEnd指向字符串的最后一个字符*/
len=strlen(pStr)?
/*求出字符串长度*/
for(pStart=pStr,pEnd=pStr+len?
1?
pStartpStart++,pEnd?
?
)
{
temp=*pStart?
*pStart=*pEnd?
*pEnd=temp?
}
}
2.从键盘任意输入10个整数,用函数编程实现计算最大值和最小值,并返回它们所在数组
中的位置。
#include
intFindMax(intnum[],intn,int*pMaxPos)?
intFindMin(intnum[],intn,int*pMinPos)?
main()
{
intnum[10],maxValue,maxPos,minValue,minPos,i?
printf("Input10numbers:
\n")?
for(i=0?
i<10?
i++)
{
scanf("%d",&num[i])?
/*输入10个数*/
}
maxValue=FindMax(num,10,&maxPos)?
/*找最大值及其所在下标位置*/
minValue=FindMin(num,10,&minPos)?
/*找最小值及其所在下标位置*/
printf("Max=%d,Position=%d,Min=%d,Position=%d\n",
maxValue,maxPos,minValue,minPos)?
}
/*函数功能:
求n个数中的最大值及其所在下标位置
函数入口参数:
整型数组num,存储n个整数,整型变量n,表示数组元素个数
函数出口参数:
整型指针变量pMaxPos,指向的地址单元存储最大值在数组中的下标位置
函数返回值:
最大值*/
intFindMax(intnum[],intn,int*pMaxPos)
{
inti,max?
max=num[0]?
/*假设num[0]为最大*/
*pMaxPos=0?
/*假设最大值在数组中的下标位置为0*/
for(i=1?
ii++)
{
if(num[i]>max)
{
max=num[i]?
*pMaxPos=i?
}
}
returnmax?
}
/*函数功能:
求n个数