C语言程序设计课后答案罗朝盛.docx
《C语言程序设计课后答案罗朝盛.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课后答案罗朝盛.docx(62页珍藏版)》请在冰豆网上搜索。
![C语言程序设计课后答案罗朝盛.docx](https://file1.bdocx.com/fileroot1/2023-4/17/17178e2f-8739-4cd7-80e4-b85ec3f1b87c/17178e2f-8739-4cd7-80e4-b85ec3f1b87c1.gif)
C语言程序设计课后答案罗朝盛
第1章习题参考答案
1.(略)
2判断题
1
2
3
4
5
√
×
√
×
√
3填空题
(1)main
(2)函数的首部、函数体
(3){、}
(4)main、main
(5)语句、分号(;)
4选择题
1
2
3
4
5
C
C
C
A
B
5选择题
(1)
#include<>
main()
{
inta,b,s;
floatt;
printf("EnterA,B=\n");
scanf("%d%d",&a,&b);
s=a+b;
t=a*b;
printf("s=%d,t=%f\n",s,t);
}
(2)
#include<>
main()
{
printf("=================\n");
printf("Hello!
\n");
printf("Howdoyoudo\n");
printf("=================\n");
}
(3)
#include<>
main()
{
intr,h;
floatv;
printf("EnterR,H=\n");
scanf("%d%d",&r,&h);
v=*r*r*h;
printf("v=%f\n",v);
}
第2章习题参考答案
一.(略)
二.填空题
(1)
(2)
(3)16
(4)10
(5)16、16、11
(6)4、10、6
(7)18、3、3
(8)sin(65*180)+2*(+exp(y))/(x-y)
(9)25、25
(10)27
(11)4
(12)0
三、选择题
1
2
3
4
5
6
7
8
9
10
11
12
D
D
C
B
D
A
D
B
C
D
A
B
四、编程题
1.
#include<>
main()
{
intx,a,b,c;
printf("Enteraintgernumberx=\n");
scanf("%d",&x);
a=x/100;
b=x%100/10;
c=x%10;
printf("%d%d%d\n",a,b,c);
}
2.
#include<>
main()
{
unsigneda,b,r1,r2,r3;
scanf("%u%u",&a,&b);
r1=a&b;
r2=a|b;
r3=a^b;
printf("r1=%u,r2=%u,r3=%u\n",r1,r2,r3);
getch();
}
3.
#include<>
main()
{
floata,b,h,s;
scanf("%f%f%f",&a,&b,&h);
s=(a+b)*h/2;
printf("s=%f\n",s);
}
第3章习题参考答案
一、判断题
1
2
3
4
5
6
×
×
×
√
√
×
2填空题
3语句
4表达式语句
5{}
6函数
7由“%”和格式字符
8&
9getchar()
1027,33,1b
11x
(1)=x
(2)=
125+6
3程序阅读题
1、
p=
p=
p=
p=
p=
p=
2、
a----ASCII:
97
a----ASCII:
97
a----ASCII:
97
4编程题
1、
#include<>
main()
{
inta,b;
floatr1,r2;
scanf("%d%d",&a,&b);
r2=a+b;
r1=a*b/r2;
printf("r1=%0.2f,r2=%0.2f\n",r1,r2);
}
2、
#include<>
main()
{
floatc,f;
printf("InputC=");
scanf("%f",&c);
f=5*c+32;
printf("F=%f\n",f);
}
3、
#include<>
voidmain()
{
floatc1,c2,c3,ver,s;
printf("Inputa,bandc:
");
scanf("%f%f%f",&c1,&c2,&c3);
s=c1+c2+c3;
ver=s/3;
printf("totals=%f,ver=%f\n",s,ver);
}
}
第4章习题参考答案
1判断题
1
2
3
4
5
6
×
×
√
√
×
√
2选择题
1
2
3
4
5
6
7
8
B
B
B
B
D
A
B
B
3程序阅读题
(1)105
(2)a=8
(3)abc123DEF
(4)
4程序填空题
(1)chch==')'count--count==0count>0
(2)div=ndiv—
(3)min=markmin=markmax=marksum+=mark
5编程题
(1)
#include<>
voidmain()
{intx,y;
printf("EntertheX,Y=\n");
scanf("%d,%d",&x,&y);
if(x>0&&y>0)
printf("(%d,%d)是第一像限\n",x,y);
elseif(x>0&&y<0)
printf("(%d,%d)是第四像限\n",x,y);
elseif(x<0&&y>0)
printf("(%d,%d)是第三像限\n",x,y);
elseif(x<0&&y<0)
printf("(%d,%d)是第二像限\n",x,y);
elseif(x>0&&y==0)
printf("(%d,%d)在X轴正方向\n",x,y);
elseif(x<0&&y==0)
printf("(%d,%d)在X轴负方向\n",x,y);
elseif(x==0&&y>0)
printf("(%d,%d)在Y轴正方向\n",x,y);
elseif(x==0&&y<0)
printf("(%d,%d)在Y轴负方向\n",x,y);
else
printf("(%d,%d)为坐标原点\n",x,y);
}
(2)
#include<>
#include<>
main()
{
floata,b,c,x,s;
printf("Inputa,bandc:
");
scanf("%f%f%f",&a,&b,&c);
if(a+b<=c||a+c<=b||b+c<=a)
printf("Error!
\n");
else{
x=(a+b+c)/2;
s=sqrt(x*(x-a)*(x-b)*(x-c));
printf("area=%f\n",s);
}
}
(3)
程序代码如下:
#include<>
voidmain()
{floatsalary,tax;
intntax;
printf("\nPleaseenterasalary=");
scanf("%f",&salary);
ntax=salary/500;
if(ntax>=10)ntax=10;
switch(ntax)
{case0:
case1:
tax=0;break;
case2:
tax=(salary-1000)*;break;
case3:
case4:
tax=500*+(salary-1500)*;break;
case5:
case6:
tax=500*+1000*+(salary-2500)*;break;
case7:
case8:
case9:
tax=500*+1000*+1000*+(salary-3500)*;break;
case10:
tax=500*+1000*+1000*+1500*+(salary-5000)*;
}
printf("\nThetax=%10.2f\n",tax);
}
(4)方法一
#include<>
#include<>
main()
{
inti=1;
floatt=-1,s=0;
do{
t=-t/i;
s=s+t;
i=i+1;
}while(fabs(t)>1e-6);
printf("s=%f\n",s);
}
方法二
#include<>
voidmain()
{
inti=1,sign=1;
floatt=,s=;
whilet>1e-6)
{
t=t*i;
s=s+sign/t;
i=i+1;
sign=-sign;
};
printf("s=%f\n",s);
}
(5)方法一:
#include<>
main()
{
inti,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100;
b=i/10%10;
c=i%10;
if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);
}
}
方法二:
#include<>
voidmain()
{
inti,a,b,c;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{i=a*100+b*10+c;
if(i==a*a*a+b*b*b+c*c*c)printf("%d\n",i);
}
}
(6)
#include<>
main()
{
inti,j;
for(i=1;i<=4;i++)
{
for(j=1;j<=6-i;j++)putchar('');
for(j=1;j<=i*2-1;j++)
printf("%c",65+i-1);
printf("\n");
}
for(i=3;i>=1;i--)
{
for(j=1;j<=6-i;j++)putchar('');
for(j=1;j<=i*2-1;j++)
printf("%c",65+i-1);
printf("\n");
}
}
(7)
#include<>
main()
{
inta,b,c;
for(a=0;a<=20;a++)
for(b=0;b<=33;b++)
{
c=100-a-b;
if(a*5+b*3+c/==100)
printf("%d,%d,%d\n",a,b,c);
}
}
(8)
#include<>
#include<>
main()
{
floatx,x0,a;
scanf("%f",&a);
x=a;
do{
x0=x;
x=2/*x0+a/(3*x0*x0);
}while(fabs(x-x0)>1e-6);
printf("x=%f\n",x);
}
(9)
#include<>
#include<>
main()
{
floatpi,pi0;
inti=1
pi=2;
do{
pi0=pi;
pi=pi**i/*i-1))**i/*i+1));
i=i+1;
}while(fabs(pi-pi0)>1e-6);
printf("pi=%f\n",pi);
}
(10)
#include<>
voidmain()
{inti,j,s;
for(i=6;i<=1000;i++)
{s=1;
for(j=2;j<=i/2;j++)
if(i%j==0)s+=j;
if(s==i)/*判断是否是合数*/
{printf("%d=1",i);/*打印输出合数及=1*/
for(j=2;j<=i/2;j++)/*打印输出各因子*/
if(i%j==0)printf("+%d",j);
printf("\n");
}
}
}
(11)
#include<>
#include<>
voidmain()
{
intx,y,z,k;
k=sqrt(2000);
for(x=0;x<=k;x++)
for(y=0;y<=k;y++)
for(z=0;z<=k;z++)
if(x*x+y*y+z*z==2000)
printf("%d,%d,%d\n",x,y,z);
}
第5章习题参考答案
1判断题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
√
×
√
×
×
√
×
×
×
×
×
×
×
×
×
2填空题
(1)32
(2)4
(3)str1[7]='\0';
(4)for(i=1;i<=6;i++)gets(a[i]);
(5)strcpy(web,"");
(6)int*p=a;
(7)5
(8)1
(9)*(p+6)或*(s+6)
3选择题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
B
C
B
A
B
C
B
A
C
D
B
D
B
A
D
4程序阅读题
(1)6
(2)str
(3)60
(4)bcdefga
cdefgab
defgabc
(5)a1e2
5程序填空题
(1)#include<>scanf("%f",&a[i])s=0;x=a[0]fabs(a[i]-s)
(2)scanf("%d",&n)a[i][i]=1a[i-1][j-1]printf("\n")
(3)b[i]!
='\0'strcpyputs(b)
(4)p=a[0];或p=&a[0][0];*p
六、编程题
1、使用数组和指针2种方法来处理。
方法一(使用数组)
#include<>
voidmain()
{inti=0,a[10],t;
printf("Enterthe10number=\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<5;i++)
{t=a[i];a[i]=a[9-i];a[9-i]=t;}
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
方法二(使用指针)
#include<>
voidmain()
{inti=0,a[10],t,*p,*q;
printf("Enterthe10number=\n");
for(p=a;pscanf("%d",p);
p=a;
q=a+9;
for(;p{t=*p;*p=*q;*q=t;}
for(p=a;pprintf("%d",*p);
printf("\n");
}
2、
#include<>
main()
{
inti,j,t,n,a[11]={0,1,2,3,4,5,6,7,8,9,10};
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
printf("EntertheMoven=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=a[10];
for(j=9;j>=0;j--)a[j+1]=a[j];
a[0]=t;
}
for(i=0;i<=10;i++)
printf("%d",a[i]);
getch();
}
3、#include<>
#include<>
main()
{
inta[100],b[100],i,j,p,n=0,t;
randomize();
for(i=0;i<100;i++)
{
a[i]=random(100);
if(a[i]%2==0)b[n++]=a[i];
}
for(i=0;i{
p=i;
for(j=i+1;jif(b[j]>b[p])p=j;
t=b[p];b[p]=b[i];b[i]=t;
}
for(i=0;i{
printf("%d",b[i]);
if(i%10==9)printf("\n");
}
getch();
}
4、
#include<>
#include<>
#defineN50
main()
{
inta[N],i,j,p,t;
randomize();
for(i=0;i{
a[i]=random(100);
for(j=0;j
if(a[i]==a[j])
{i--;
break;
}
}
for(i=0;i{
p=i;
for(j=i+1;jif(a[j]>a[p])p=j;
t=a[p];a[p]=a[i];a[i]=t;
}
for(i=0;i{
printf("%d",a[i]);
if(i%10==9)printf("\n");
}
}
4,
#include<>
#defineN10
voidmain()
{
inti;
floata[N],s=,x0=;
for(i=0;i{scanf("%f",&a[i]);
x0+=a[i];
}
x0/=N;
for(i=0;is+=(a[i]-x0)*(a[i]-x0);
printf("%10.6f",s);
}
5,
#defineN4
#defineM3
voidmain()
{inti,j,sum,a[N][M+1],max,p;
printf("inputscore\n");
for(i=0;i{sum=0;/*每位学生成绩输入前,其总成绩赋初值0*/
for(j=0;j{scanf("%d",&a[i][j]);/*输入第i号学生第j门课程的成绩*/
sum=sum+a[i][j];/*累加求总成绩*/
}
a[i][M]=sum;/*求第i个学生的总成绩放到a[i][M]*/
}
max=a[0][M];
p=0;
for(i=1;iif(a[i][M]>max)p=i;
printf("No.%dTotalscore:
%d\n",p+1,a[p][M]);
}
7、
#include<>
voidmain()
{
inta[5][6];
inti,j,mi,mj;
for(i=0;i<5;i++)
for(j=0;j<6;j++)
{
printf("inputa[%d][%d]:
",i,j);
scanf("%d",&a[i][j]);
}
mi=0;mj=0;
for(i=0;i<5;i++)
{
for(j=0;j<6;j++)
{
if(a[i][j]printf("%d",a[i][j]);
}
printf("\n");
}
printf("min=%d",a[mi][mj]);
}
6,
#include<>
#include<>
voidmain()
{
floata[5][6];
inti,j,max;
printf("Enterarraya=\n");
for(i=0;i<5;i++)
for(j=0;j<6;j++)
scanf("%f",&a[i][j]);
for(i=0;i<5;i++)
{max=a[i][0];
for(j=0;j<6;j++)/*查找第i行中绝对值最大的元素*/
if(fabs(a[i][j])>fabs(max))max=a[i][j];
for(j=0;j<6;j++)/*第i行中所有元素除以绝对值最大的元素*/
{a[i][j]=a[i][j]/max;
printf("%",a[i][j]);
}
printf("-----max=%\n",max);
}
}
7,
#include<>
#include<>
#defineN20
main()
{
charstr[N][15],st[15],*p=st;
inti,j;
for(i=0;iscanf("%s",str[i]);
for(i=0;ifor(j=0;jif(strcmp(str[j],str[j+1])>0)
{
strcpy(p,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],p);
}
for(i=0;i