C语言程序设计_谭浩强_第三版_课后习题答案
C语言程序设计_谭浩强_第三版_课后习题答案本文简介:1.5请参照本章例题,编写一个C程序,输出以下信息:*************************VeryGood!*************************解:mian(){printf(“**************************”);printf(“\n”);printf
C语言程序设计_谭浩强_第三版_课后习题答案本文内容:
1.5请参照本章例题,编写一个C程序,输出以下信息:*************************
Very
Good!*************************
解:
mian()
{printf(“**************************”);
printf(“\n”);
printf(“Very
Good!\n”);
printf(“\n”);
printf(“**************************”);
}
1.6
编写一个程序,输入a、b、c三个值,输出其中最大值。
解:
mian()
{int
a,b,c,max;
printf(“请输入三个数a,b,c:\n”);
scanf(“%d,%d,%d”,max=a;
if(maxb)?a:b;
max=(temp>c)?temp:c;
printf(“3个整数的最大数是%d\n”,max);
}
5.5
有一函数:
写一程序,输入x值,输出y值。
解:
#include
main()
{int
x,y;
printf(“输入x:“);
scanf(“%d“,if(x100||(score9999)
place=5;
else
if(num>999)
place=4;
else
if(num>99)
place=3;
else
if(num>9)
place=2;
else
place=1;
printf(“place
=%d\n“,place);
ten_thousand=num/10000;
thousand=num/1000%10;
hundred=num/100%10;
ten=num%100/10;
inp=num%10;
switch(place)
{
case
5:
printf(“%d,%d,%d,%d,%d“,ten_thousand,thousand,hundred,ten,inp);
printf(“\n反序数字为;“);
printf(“%d%d%d%d%d\n“,inp,ten,hundred,thousand,ten_thousand);
break;
case
4:
printf(“%d,%d,%d,%d“,thousand,hundred,ten,inp);
printf(“\n反序数字为:“);
printf(“%d%d%d%d\n“,inp,ten,hundred,thousand);
break;
case
3:
printf(“%d,%d,%d“,hundred,ten,inp);
printf(“\n反序数字为:“);
printf(“%d%d%d\n“,inp,ten,hundred);
break;
case
2:
printf(“%d,%d“,ten,inp);
printf(“\n反序数字为:“);
printf(“%d%d\n“,inp,ten);
break;
case
1:
printf(“%d“,inp);
printf(“\n反序数字为:“);
printf(“%d\n“,inp);
break;
}
}
5.8
企业发放的奖金根据利润提成。利润I低于或等于10万元时,奖金可提成10%
;利润高于10万元,低于20万元(10000010)
c=10;
switch(c)
{
case
0:
bonus=1*0.1;break;
case
1:
bonus=bon1+(i-100000)*0.075;break;
case
2
:
case
3:
bonus=bon2+(i-200000)*0.05;
break;
case
4:
case
5:
bonus=bon4+(i-400000)*0.03;break;
case
6:
case
7:
case
8:
case
9:
bonus=bon6+(i-600000)*0.015;break;
case
10:
bonus=bon10+(i-1000000)*0.01;
}
printf(“奖金是%10.2f“,bonus);
}
5.9
输入4个整数,要求按由大到小的顺序输出。
解:此题采用依次比较的方法排出其大小顺序。在学习了循环和数组以后,可以有更多的排序方法。
#include
main()
{
int
t,a,b,c,d;
printf(“请输入4个整数:“);
scanf(“%d,%d,%d,%d“,printf(“\n
a=%d,b=%d,c=%d,d=%d\n“,a,b,c,d);
if(a>b)
{t=a;
a=b;
b=t;}
if(a>c)
{t=a;
a=c;
c=t;}
if(a>d)
{t=a;
a=d;
d=t;}
if(b>c)
{t=a;
b=c;
c=t;}
if(b>d)
{t=b;
b=d;
d=t;}
if(c>d)
{t=c;
c=d;
d=t;}
printf(“排序结果如下:\n“);
printf(“%d,%d,%d,%d\n“,a,b,c,d);
}
5.10
有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。这4个塔的高度分别为10m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
程序如下:
#include
main()
{
int
h=10;
float
x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=-2,y4=-2,x,y,d1,d2,d3,d4;
printf(“请输入一个点(x,y):“);
scanf(“%f,%f“,d1=(x-x1)*(x-x1)+(y-y1)*(y-y1);
d2=(x-x2)*(x-x2)+(y+y2)*(y+y2);
d3=(x+x3)*(x+x3)+(y-y3)*(y-y3);
d4=(x+x4)*(x-x4)*(y+y4)*(y+y4);
if(d1>1
printf(“该点高度为%d\n“,h);
}
第六章
第六章
循环控制
6.1输入两个正整数m和n,求其最大公约数和最小公倍数。
main()
{long
m,n,i=1,j,s;
scanf(“%ld,%ld“,for(;i=65
else
if(c==32)
k++;
else
l++;}
printf(“i=%d,j=%d,k=%d,l=%d\n“,i,j,k,l);
}
6.3求Sn=a+aa+aaa+…+aa…aaa(有n个a)之值,其中a是一个数字。例如:2+22+222+2222+22222(n=5),n由键盘输入。
#include“math.h“main()
{int
n,sum=0,i=1,s=2;
scanf(“%d“,while(i1;i--)
{
if((k1%i==0)
flag=1;
break;
}
else
flag=0;
}
if(flag==0)
return(0);
}
int
min_mul(int
k1,int
k2)
{
int
max(int,int);
int
i,k;
k=max(k1,k2);
for(i=k;;i++)
{
if((i%k1==0)
break;
}
}
}
int
min(int
k1,int
k2)
{
int
min;
min=k1;
if(k1>k2)
min=k2;
return(min);
}