C语言习题答案.docx
《C语言习题答案.docx》由会员分享,可在线阅读,更多相关《C语言习题答案.docx(50页珍藏版)》请在冰点文库上搜索。
![C语言习题答案.docx](https://file1.bingdoc.com/fileroot1/2023-6/8/b9d4b9f3-ec04-4569-9cb7-74416b496073/b9d4b9f3-ec04-4569-9cb7-74416b4960731.gif)
C语言习题答案
C语言习题答案
第1章
1.选择题
(1)C
(2)B(3)D
2.填空题
(1)main
(2)main(3)有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性
(4)顺序、分支和循环(5)自顶向下,逐步细化、模块化设计、结构化编码
第2章
1.选择题
BBCDADDBBABBDCB
2、填空题
(1)数字、字母、下划线
(2)0(3)4、8(4)(a+b)*c/(a-b)(5)-60(6)-16
(7)3(8)6、4、2(9)0(10)10、6(11)5.500000(12)12、4
(13)double(14)0(15)16(16)6.6
3、编程题
(1)
main()
{
printf("int:
%5d\n"
"float:
%5d\n"
"char:
%5d\n"
"double:
%5d\n"
"long:
%5d\n",
sizeof(int),
sizeof(float),
sizeof(char),
sizeof(double),
sizeof(long));
}
(2)
#defineRAT1.60934
main()
{
floatk=0.0;
printf("inputthekm:
");
scanf("%f",&k);
printf("\nmile:
%f",k*RAT);
}
第3章
1.选择题
(1)~(10):
DDCDCDCDBC
2.解析题
(1)x=170,x=ㄩㄩㄩ170,x=ㄩㄩㄩ252,x=ㄩㄩㄩ170
x=170,x=170ㄩㄩㄩ,x=ㄩㄩㄩ170,x=%6d
a=513.789185,a=ㄩㄩ513.79,a=513.78918457,a=513.78918457
(2)a=3ㄩb=7x=8.5ㄩy=71.82c1=Aㄩc2=a
3.编程题
(1)
main()
{
intx,y;
scanf("%d%d",&x,&y);
printf("商数=%d,余数=%d",x/y,x%y);
system("pause");
}
(2)
main()
{
doublex,y,z,avg;
scanf("%lf%lf%lf",&x,&y,&z);
avg=(x+y+z)/3;
printf("%.1lf",avg,avg);
system("pause");
}
第4章
1.选择题
(1)~(10)CCAADCCABD
2.填空题
(1)ch>='A'&&ch<='Z'ch=ch-32
(2)x<=10&&x>2x<=2&&x>-1y=-1
(3)a+b>c&&a+c>b&&b+c>aa==b&&a==ca==b||a==c||b==c
(4)mark/10k=1case9
(5)x<0c=x/10y!
=-2
3.编程题
(1)
#include
main()
{
intx;
printf("pleaseinputanumber:
");
scanf("%d",&x);
if(x%2==0)printf("%disaevennumber",x);
elseprintf("%disaoddnumber",x);
}
(2)
#include
main()
{
intx,y;
printf("pleaseinputanumber:
");
scanf("%d",&x);
if(x<=-5)printf("thenumberiserror");
elseif(x<0){y=x;printf("%d",y);}
elseif(x==0){y=x-1;printf("%d",y);}
elseif(x<10){y=x+1;printf("%d",y);}
elseprintf("thenumberiserror");
}
(3)
#include
main()
{inta,m;
printf("pleaseinputanumber:
");
scanf("%d",&a);
switch(a/10)
{case0:
case1:
case2:
m=1;break;
case3:
m=2;break;
case4:
m=3;break;
case5:
m=4;break;
default:
m=5;break;
}
printf("%d",m);
}
(4)
#include
main()
{
floatprice,tax;
printf("pleaseinputthepriceofproduct:
");
scanf("%f",&price);
if(price>10000)tax=price*0.05;
elseif(price>5000)tax=price*0.03;
elseif(price>1000)tax=price*0.02;
elsetax=0;
printf("%f",tax);
}
(5)
#include
main()
{
floatscore;
printf("pleaseinputthescoreofstudent:
");
scanf("%f",&score);
if(score>=85)printf("VERYGOOD");
elseif(score>=60)printf("GOOD");
elseprintf("BAD");
}
第5章
1.选择题
(1)d
(2)c(3)a(4)d(5)a(6)d(7)d(8)b(9)d(10)b
(11)c(12)b(13)d(14)a(15)c
2.填空题
(1)==0m=m/kk++
(2)546(3)3*i-2
(4)-=*=(5)852(6)j++i%j==0j>=i
(7)sum3.改错题
(1)第一处改正:
For改为for
第二处改正:
ave=sum/4改为ave=sum/4.0
(2)第一处改正:
j<=9
第二处改正:
m=100*i+10*j+k
3.编程题
(1)
#include
main()
{
ints;
floatn,t,sum;
t=1;sum=0;n=1;s=1.0;
while(n<=100)
{
sum=sum+t;
n=n+1;
s=-s;
t=s/n;
}
printf("sum=%10.6f\n",sum);
}
(2)利用辗除法,直到b为0为止
main()
{intp,r,n,m,temp;
printf("inputtwointegern,m:
");
scanf("%d,%d",&n,&m);
if(n{temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!
=0)
{
r=n%m;
n=m;
m=r;
}
printf("greatestcommondivisoris:
%d\n",n);//最大公约数
printf("leasecommonmultipleis:
%d\n",p/n);//最小公倍数
}
(3)采取逆向思维的方法,从后往前推断。
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
(4)
#include
main()
{
inti;
longintn=1;
for(i=1;i<=10;i++)
{
n=n*i;
printf(i%5==0?
"%2d!
=%-10ld\n":
"%2d!
=%-10ld",i,n);
}
}
(5)
main()
{
intm,s,i;
for(m=2;m<1000;m++)
{s=0;
for(i=1;iif((m%i)==0)s=s+i;
if(s==m)
{printf("%ditsfactorsare",m);
for(i=1;iif(m%i==0)printf("%d,",i);
printf("\n");
}
}
}
(6)
#include
main()
{
intn,i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=n+i-1;j++)
if(j<=n-i)printf("");
elseprintf("*");
printf("\n");
}
}
(7)
#include
main()
{
floatx0,x1,x2,fx0,fx1,fx2;
do
{printf("Enterx1&x2:
");
scanf("%f,%f",&x1,&x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
}while(fx1*fx2>0);
do
{x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if((fx0*fx1)<0)
{x2=x0;
fx2=fx0;
}
else
{x1=x0;
fx1=fx0;
}
}while(fabs(fx0)>=1e-5);
printf("x=%6.2f\n",x0);
}
第6章
1.选择题
CCDCCAADBD
2.写出程序的运行结果
(1)sum=6
(2)Max=9,row=1,col=0
(3)
0
10
210
3210
(4)-5
3、填空
(1)i=j=k=0、i<4、j<5、
(2)s[i]、s[0],s[1]、str,s[1]、s[2],str
4、编程题
(1)
#include
main()
{
inta[12],count=0,i;
randomize();
for(i=0;i<12;i++)
a[i]=5+random(11);
for(i=0;i<12;i++)
{
printf("%5d",a[i]);
count++;
if(count%4==0)printf("\n");
}
getch();
}
(2)
main()
{
inta[5]={2,23,43,77,33};
intmax,min,i;
longsum=0L;
intcount=0;
floatav;
max=min=a[0];
for(i=0;i<5;i++)
{
sum+=a[i];
if(a[i]>max)max=a[i];
if(a[i]}
av=(float)sum/5;
for(i=0;i<5;i++)
if(a[i]>av)count++;
printf("max:
%d\nmin:
%d\nav:
%f\ncount:
%d",max,min,av,count);
getch();
}
(3)
main()
{
intscore[30]={61,62,63,64,65,66,67,68,69,70,
71,72,73,74,75,76,77,78,79,80,
81,85,89,90,33,44,55,91,92,93};
inti,count90=0,count80=0,count70=0,count60=0;
for(i=0;i<30;i++)
{
printf("intputNO.%dstudent'sscore:
",i+1);
scanf("%d",score+i);
}
for(i=0;i<30;i++)
{
if(score[i]>=90)
{
count90++;
count80++;
count70++;
count60++;
}
elseif(score[i]>=80)
{
count80++;
count70++;
count60++;
}
elseif(score[i]>=70)
{
count70++;
count60++;
}
elseif(score[i]>=60)
{
count60++;
}
}
printf("0~60:
%d\n60~70:
%d\n70~80:
%d\n80~90:
%d\n90~100:
%d",30-count60,count60-count70,count70-count80,count80-count90,count90);
printf("\n60orhigher:
%d\n70orhigher:
%d\n80orhigher:
%d\n90orhigher:
%d\n",count60,count70,count80,count90);
getch();
}
(4)
1、
main()
{
chara[45];
inti,j,k;
for(i=0;i<45;i++)a[i]='';
for(i=0;i<5;i++)
{
for(j=0;j
a[9*i+j]='';
for(k=0;k<5;k++)
a[9*i+j+k]='*';
}
j=0;
for(i=0;i<45;i++)
{
printf("%c",a[i]);
j++;
if(j%9==0)printf("\n");
}
getch();
}
2、
main()
{
chara[5][9];
inti,j,k;
for(i=0;i<5;i++)
for(j=0;j<9;j++)
a[i][j]='';
for(i=0;i<5;i++)
{
for(j=0;j
a[i][j]='';
for(k=0;k<5;k++)
a[i][j+k]='*';
}
for(i=0;i<5;i++)
{
for(j=0;j<9;j++)
printf("%c",a[i][j]);
printf("\n");
}
getch();
}
第7章
1.选择题
DCCBDCADACBD
2.填空
(1)函数
(2)main函数(3)变量声明部分、函数体(4)形式参数、实际参数、实参、形参(5)常量、变量、表达式(6)函数定义时函数值、函数定义时函数值
(7)30,20,10(8)max(max(a,b),c))、(x>y?
x:
y)(9)str[]=abdef
(10)8,17
(11)
a=5
a*a=25
a*a*a=512
(12)
******
######
******
******
######
******
******
######
******
3、编程题
(1)
longact(longn)
{
if(n==1||n==0)return1L;
else
{
returnn*act(n-1);
}
}
main()
{
intn=3;
printf("n!
=%ld",act(n));
getch();
}
(2)
voidmmax(floata[],intn);
main()
{
floata[6];
inti;
for(i=1;i<=5;i++)
scanf("%f",&a[i]);
a[0]=1;
mmax(a,5);
printf("%f%f\n",a[a[0]],a[0]);
}
voidmmax(floata[],intn)
{
if(n<=0)
return;
else
if(a[n]>a[a[0]])
a[0]=n;
mmax(a,n-1);
}
(3)
#include
main()
{
chara[40];inti=0;
for(;i<=40;i++)
scanf(“%c”,&a[i]);
intcount=0,i=0,len,flag=0;
len=strlen(a);
while(!
flag&&i{
if(a[i]=='A')flag=1;
i++;
}
while(flag&&i{
i++;
if(a[i]=='A')flag=0;
count++;
printf("%c",a[i-1]);
}
printf("\ncount:
%d",count);
getch();
}
(4)
my_strcpy(chardst[],charsrc[])
{
inti=0;
while(src[i]!
='\0')
{dst[i]=src[i];
i++;
}
dst[i]='\0';
}
intmain()
{
chara[12];charb[12];
gets(b);
my_strcpy(a,b);
puts(a);
}
第8章
2.编程题
(1)
/*习题8-2-1*/
#defineISALPHA(a)(((a)>='A'&&(a)<='Z')||((a)>='a'&&(a)<='z'))
main()
{charc;
scanf("%c",&c);
printf("%d\n",ISALPHA(c));
}
(2)
/*习题8-2-2*/
#defineSWAP(t,x,y){tw;w=x;x=y;y=w;}
main()
{doublea=99.99,b=11.11;
SWAP(double,a,b);
printf("%f,%f\n",a,b);
}
(3)
/*习题8-2-3*/
#include"stdio.h"
#defineMAX80
#defineCHANGE1
main()
{charstr[MAX];
inti;
printf("Inputtext:
\n");
gets(str);
#if(CHANGE)
{for(i=0;i{if(str[i]!
='\0')
if(str[i]>='a'&&str[i]<'z'||str[i]>='A'&&str[i]<'Z')
str[i]+=1;
elseif(str[i]=='z'||str[i]=='Z')
str[i]-=25;
}
}
#endif
printf("output:
\n%s",str);
}
(4)
/*习题8-2-4*/
#defineLEAP_YEAR(y)(y%4==0)&&(y%100!
=0)||(y%400==0)
main()
{intyear;
printf("Inputyear:
");
scanf("%d",&year);
if(LEAP_YEAR(year))
printf("%disaleapyear.\n",year);
else
printf("%disnotaleapyear.\n",year);
}
(5)
/*习题8-2-5.h*/
#ifndef__X8_2_5_H
#define__X8_2_5_H
#defineAVER(a,b,c)(a+b+c)/3.0
#endif
/*习题8-2-5*/
#include"X8_2_5.h"
main()
{inta,b,c;
printf("Inputthreeintegersa,b,c:
");
scanf("%d,%d,%d",&a,&b,&c);
printf("Averageis%f.\n",AVER(a,b,c));
}
第9章
4.编程题
(1)
/*习题9-4-1*/
#include
#include
main()
{char*str1[20],*str2[20],*str3[20];
charswap();
printf("Inputthreeline:
\n");
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)>0)swap(str1,str2);
if(strcmp(str1,str3)>0)swap(str1,str3);
if(strcmp(str2,str3)>0)swap(str2,str3);
printf("Now,theorderis:
\n");
printf("%s\n%s\n%s\n",str1,str2,str3);
}
charswap(char*p1,char*p2)/*交换两个字符串*/
{char*p[20];
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);
}
(2)
/*习题9-4-2*/
main()
{intnumber[20],n,m,i;
printf("Howmanynumbers?
");/*共有多少个数*/
scanf("%d",&n);
printf("Input%dnumbers:
\n",n);/*输入n个数*/
for(i=0;iscanf("%d",&number[i]);
printf("Howmanyplaceyouwanttomove?
");/*后移多少个位