C语言程序设计何钦铭课后习题作业Word格式文档下载.docx
《C语言程序设计何钦铭课后习题作业Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计何钦铭课后习题作业Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。
y4=num1*num2;
y5=num1%num2;
num1,num2和y1=%d\nnum1,num2差y2=%d\nnum1,num2积y3=%d\nnum1,num2商y4=%lf\nnum1,num2余y5=%d\n"
y1,y2,y3,y4,y5);
}
2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电价分为两个“阶梯”:
月用电量50千瓦时以内的,电价为元/千瓦时;
超出50千瓦时的用电量,电价上调元/千瓦时。
编写程序,输入用户的月用电量(千瓦时),计算并输出该用户应支付的电费(元)。
doublex,y;
请输入月用电量:
x\n"
%lf"
x);
if(x<
=50){
y=*x;
电费y=%lf\n"
y);
else{
应支付电费y=%lf\n"
3.编写程序,输入实数x和正整数n,计算xn,,不允许调用pow()函数求幂。
doublex,power;
inti,n;
请输入:
x,n\n"
%lf%d"
x,&
n);
power=;
=n;
power=power*x;
power(x,n)=%lf\n"
power);
4.编写程序,输入两个正整数m和n,求∑(i2+1/i)(i从m到n。
)
voidmain()
inti,m,n;
doublesum;
sum=0;
input:
m,n\n"
m,&
for(i=m;
sum=sum+(i*i+i);
sum=%lf\n"
}
5.编写程序,输入一个正整数n,计算1-2/3+3/5-4/7+5/9-6/11+…的前n项之和。
doublesum,item,flag;
flag=1;
sum=0;
n\n"
%d"
i++){
item=(flag*i)/(2*i-1);
flag=-flag;
sum=sum+item;
6.某用户为购房办理商业贷款,选择了按月等额本息还款法,计算公式如下,在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款(money)取决于还款月数(month)
。
客户打算在5—30年的范围内选择还清贷款的年限,想得到一张“还款年限—月还款额表”以供参考。
编写程序,输入贷款本金loan和月利率rate,输出“还款年限—月还款额表”,还款年限的范围是5—30年,输出时分别精确到年和元。
Money=loan*rate(1+rate)month/[(1+rate)month-1]
intlower,upper,month,year,loan;
doublemoney,rate;
lower=5;
upper=30;
请输入贷款本金:
loan\n"
loan);
请输入月利率:
rate\n"
rate);
还款年限\t月还款额\n"
for(year=lower;
year<
=upper;
year++)
{
month=year*12;
money=(loan*rate*pow((1+rate),month))/(pow((1+rate),month)-1);
%d\t\t%lf\n"
year,money);
7.编写程序,输入一个正整数n,求∑2i(i从1到n),可调用pow()函数求幂。
doublesum,item;
for(i=0;
item=pow(2,i);
8.编写程序,输入一个正整数n,求e=∑i!
(i从0到n)。
要求定义和调用函数fact(n)计算n!
,函数类型是double.
doublefact(intn);
sum=sum+fact(i);
sun=%lf\n"
doublefact(intn)
inti;
doubleproduct;
product=;
product=product*i;
returnproduct;
第三章作业
1.
inta,b,c;
doubles,area,perimeter;
请输入三角形三条边:
a,b,c\n"
%d%d%d"
a,&
b,&
c);
if(a+b>
c&
&
a+c>
b&
b+c>
a)
perimeter=a+b+c;
s=(a+b+c)/;
area=sqrt(s*(s-a)*(s-b)*(s-c));
三角形的周长perimeter=%.2lf\n三角形的面积area=%.2lf\n"
perimeter,area);
2、
doublesalary,tax,rate;
请输入职工的月薪:
salary\n"
salary);
if(salary<
=850)rate=0;
elseif(salary<
=1350)rate=5;
=2850)rate=10;
=5850)rate=15;
elserate=20;
tax=rate*(salary-850)/100;
职工应缴个人所得税tax=%.2lf\n"
tax);
3、
doublem,n,y;
请输入行驶里程(公里):
m\n等待时间(分钟):
%lf%lf"
if((m+n/<
=3)y=10;
elseif((m+n/<
=10)y=2*(m+n/;
elsey=2*10+3*(m+n/;
;
乘客应付车费y=%d\n"
(int)((y*10+/);
4、
inti,n,A,B,C,D,E;
doublescore,total;
请输入一个数n:
\n"
total=0;
A=0;
B=0;
C=0;
D=0;
E=0;
请输入第#%d个学生成绩:
i);
scanf("
score);
total=total+score;
if(score>
=90)
A++;
elseif(score>
=80)
B++;
=70)
C++;
=60)
D++;
else
E++;
printf("
平均成绩=%lf\n"
total/n);
等级成绩个数:
\nA=%d\nB=%d\nC=%d\nD=%d\nE=%d\n"
A,B,C,D,E);
5、
intyear;
21世纪所有的闰年:
for(year=2000;
3000;
if(year%4==0&
year%100!
=0||year%400==0)
%d\n"
year);
第四章作业
#include"
"
doublex,s;
请输入一个实数x:
s=0;
i=1;
while((pow(x,i)/fact(i))>
={
s=pow(x,i)*fact(i)+s;
i++;
s=%.2lf\n"
s);
doubleresult;
result=1;
result=result*i;
returnresult;
intx,a,count,sum;
请输入一个整数x:
count=0;
0)x=-x;
do{
a=x%10;
sum=sum+a;
x=x/10;
count++;
}while(x!
=0);
位数=%d\n"
count);
各个位数之和为:
return0;
inta,n,i=1,s=0,t=0;
请输入两个正整数a,n=:
while(i<
=n){
t=t+a;
s=s+t;
a=a*10;
++i;
a+aa+aaa+…+aa…a=%d\n"
7、
inti,j,k,l,n;
1-10000之间的水仙花数有:
for(n=10;
n<
10000;
n++)
i=n/1000;
j=n/100%10;
k=n/10%10;
l=n%10;
if(i*1000+j*100+k*10+l==i*i*i+j*j*j+k*k*k+l*l*l)
{
%-5d"
n);
}
9、
inti,n,m,j,k;
i=0;
请输入一个多位整数:
k=n;
while(k!
=0)
k=k/10;
m=pow(10,i-1);
逐位输出:
n/m%10);
"
for(j=m/10;
j>
0;
j=j/10)
n=k/j;
n%10);
if(j!
=1)
11、
intp,r,n,m,temp;
请输入两个正整数:
n,&
m);
if(n<
m)
{
temp=n;
n=m;
m=temp;
p=n*m;
while(m!
r=n%m;
m=r;
最大公约数为:
最小公倍数为:
p/n);
13、
inti,j;
=3;
for(j=0;
j<
=2-i;
j++)
"
=2*i;
*"
}
=2;
=i;
=4-2*i;
第五章
#include<
longfac(intn,inta)
longsum;
if(n==1)
sum=a;
else
sum=(long)(pow(10,n-1)*a)+fac(n-1,a);
return(sum);
main()
inta,n,i;
longtemp,sum=0;
请输入一个数a,n\n"
i++)
temp=fac(i,a);
sum+=temp;
它们的和是=%ld"
2.
intcountdight(intnumber,intdight);
intnumber;
输入一个数:
number);
countdight(number,2);
countdight(intnumber,intdight)
inta,count;
count=0;
while(number!
a=number%10;
number=number/10;
if(a==dight)
count++;
returncount;
3.
intfib(intn);
intm,n,num1;
num1=1;
请输入两个正整数m和n(m>
=1,n<
=10000)\n"
if(num1>
=m&
num1<
=n)
fib(n);
intfib(intn)
inti,x1,x2,x,t;
x1=1;
x2=1;
n;
x=x1+x2;
%5d"
x);
t=x;
x1=x2;
x2=t;
returnx;
5.
voidis(intnum);
intn,m,num1;
输入两个数m和n(m>
=1000)\n"
is(num1);
voidis(intnum)
inti,j,k;
for(num=1;
num<
1000;
num++)
i=num/100;
j=num/10%10;
k=num%10;
if(i*100+j*10+k*1==i*i*i+j*j*j+k*k*k)
num);
6.
intreverse(intnumber);
intx;
请输入一个正整数:
reverse(x);
intreverse(intnumber)
number%10);
number=number/10;
returnnumber;
第七章作业
{
inti,j=0,k=0,n,p,q,max,min;
inta[10];
请输入n(1<
10)的值:
\n"
请输入%d个数:
a[i]);
min=a[0];
max=a[9];
if(a[i]<
min){
min=a[i];
k=i;
if(a[i]>
max){
max=a[i];
j=i;
p=a[9];
a[9]=a[j];
a[j]=p;
q=a[0];
a[0]=a[k];
a[k]=q;
%8d"
a[i]);
4.
intm,n,i,j,sum;
inta[6][6],x[80];
请输入m,n(1<
=m,n<
=6)的值:
m*n);
m;
a[i][j]);
%4d"
a[i][j]);
sum=0;
sum=sum+a[i][j];
x[i]=sum;
x[i]);
5.
inta[3][3],max,max1,max2,i,j,flag=1;
请输入9个数:
scanf("
for(i=0;
max=a[i][0];
for(j=0;
{
if(a[i][j]>
max)
{
max=a[i][j];
max1=j;
}
}
for(max2=0;
max2<
max2++)
if(max>
a[max1][max2])
flag=0;
break;
if(flag==1)prin