C语言程序设计何钦铭课后习题作业.docx
《C语言程序设计何钦铭课后习题作业.docx》由会员分享,可在线阅读,更多相关《C语言程序设计何钦铭课后习题作业.docx(41页珍藏版)》请在冰豆网上搜索。
![C语言程序设计何钦铭课后习题作业.docx](https://file1.bdocx.com/fileroot1/2023-2/4/32013ffd-50c4-498b-abfa-6570e909935d/32013ffd-50c4-498b-abfa-6570e909935d1.gif)
C语言程序设计何钦铭课后习题作业
第一章习题
1、对C语言来说,下列标示符中哪些是合法的,哪些是不合法的?
Total,_debug,Large&Tall,Counter1,begin_
答:
合法的:
_debug、Counter1、begin_。
不合法的:
Total、Large&Tall。
2、改写1.4节中的流程图1.2,求1—100中能被6整除的所有整数的和。
3、改写1.4节中的程序,求1—100中能被6整除的所有整数的和,并在编程环境中验证该程序的运行结果。
答:
程序为:
#include
intmain
{
inti,sum=0;
for
ifsum=sum+i;
printf<"sum=%d\n",sum>;
return0;
}
4、对于给定的整数n〔n>1,请设计一个流程图判别n是否为一个素数〔只能被1和自己整除的整数,并分析该流程图中哪些是顺序结构、哪些是分支结构和循环结构。
第二章作业
1.编写程序,输入两个整数num和num2,计算并输出她们的和、差、积、商。
答:
程序:
#include
voidmain<>
{
intnum1,num2,y1,y2,y3,y5;
doubley4;
printf<"请输入两个数:
num1,num2\n">;
scanf<"%d%d",&num1,&num2>;
y1=num1+num2;
y2=num1-num2;
y3=num1*num2;
y4=num1*1.0/num2;
y5=num1%num2;
printf<"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千瓦时以内的,电价为0.53元/千瓦时;超出50千瓦时的用电量,电价上调0.05元/千瓦时。
编写程序,输入用户的月用电量〔千瓦时,计算并输出该用户应支付的电费〔元。
答:
程序:
#include
voidmain<>
{
doublex,y;
printf<"请输入月用电量:
x\n">;
scanf<"%lf",&x>;
if{
y=0.53*x;
printf<"电费y=%lf\n",y>;
}
else{
y=0.58*x;
printf<"应支付电费y=%lf\n",y>;
}
}
3.编写程序,输入实数x和正整数n,计算xn,,不允许调用pow〔函数求幂。
答:
程序:
#include
voidmain<>
{
doublex,power;
inti,n;
printf<"请输入:
x,n\n">;
scanf<"%lf%d",&x,&n>;
power=1.0;
for
power=power*x;
printf<"power〔x,n=%lf\n",power>;
}
4.编写程序,输入两个正整数m和n,求∑〔i2+1/i〔i从m到n。
答:
程序:
#include
voidmain<>
{
inti,m,n;
doublesum;
sum=0;
printf<"input:
m,n\n">;
scanf<"%d%d",&m,&n>;
for
sum=sum+;
printf<"sum=%lf\n",sum>;
}
5.编写程序,输入一个正整数n,计算1-2/3+3/5-4/7+5/9-6/11+…的前n项之和。
答:
程序:
#include
voidmain<>
{
inti,n;
doublesum,item,flag;
flag=1;sum=0;
printf<"input:
n\n">;
scanf<"%d",&n>;
for{
item=/<2*i-1>;
flag=-flag;
sum=sum+item;}
printf<"sum=%lf\n",sum>;
}
6.某用户为购房办理商业贷款,选择了按月等额本息还款法,计算公式如下,在贷款本金〔loan和月利率〔rate一定的情况下,住房贷款的月还款〔money取决于还款月数〔month
。
客户打算在5—30年的范围内选择还清贷款的年限,想得到一张"还款年限—月还款额表"以供参考。
编写程序,输入贷款本金loan和月利率rate,输出"还款年限—月还款额表",还款年限的范围是5—30年,输出时分别精确到年和元。
Money=loan*rate<1+rate>month/[<1+rate>month-1]
答:
程序:
#include
#include
voidmain<>
{
intlower,upper,month,year,loan;
doublemoney,rate;
lower=5;upper=30;
printf<"请输入贷款本金:
loan\n">;
scanf<"%d",&loan>;
printf<"请输入月利率:
rate\n">;
scanf<"%lf",&rate>;
printf<"还款年限\t月还款额\n">;
for
{
month=year*12;
money=,month>>/,month>-1>;
printf<"%d\t\t%lf\n",year,money>;}
}
7.编写程序,输入一个正整数n,求∑2i〔i从1到n,可调用pow〔函数求幂。
答:
程序:
#include
#include
voidmain<>
{
inti,n;
doublesum,item;
sum=0;
printf<"input:
n\n">;
scanf<"%d",&n>;
for
{
item=pow<2,i>;
sum=sum+item;}
printf<"sum=%lf\n",sum>;
}
8.编写程序,输入一个正整数n,求e=∑i!
〔i从0到n。
要求定义和调用函数fact计算n!
函数类型是double.
答:
程序:
#include
doublefact;
voidmain<>
{
inti,n;
doublesum;
sum=0;
printf<"input:
n\n">;
scanf<"%d",&n>;
for
{
sum=sum+fact;}
printf<"sun=%lf\n",sum>;
}
doublefact
{
inti;
doubleproduct;
product=1.0;
for{
product=product*i;}
returnproduct;
}
第三章作业
1.
#include
#include
voidmain<>
{
inta,b,c;
doubles,area,perimeter;
printf<"请输入三角形三条边:
a,b,c\n">;
scanf<"%d%d%d",&a,&b,&c>;
ifc&&a+c>b&&b+c>a>
{
perimeter=a+b+c;
s=/2.0;
area=sqrt**>;
printf<"三角形的周长perimeter=%.2lf\n三角形的面积area=%.2lf\n",perimeter,area>;
}
}
2、
#include
#include
voidmain<>
{
doublesalary,tax,rate;
printf<"请输入职工的月薪:
salary\n">;
scanf<"%lf",&salary>;
ifrate=0;
elseifrate=5;
elseifrate=10;
elseifrate=15;
elserate=20;
tax=rate*/100;
printf<"职工应缴个人所得税tax=%.2lf\n",tax>;
}
3、
#include
voidmain<>
{
doublem,n,y;
printf<"请输入行驶里程<公里>:
m\n等待时间<分钟>:
n\n">;
scanf<"%lf%lf",&m,&n>;
if<<=3>y=10;
elseif<<=10>y=2*;
elsey=2*10+3*;;
printf<"乘客应付车费y=%d\n",</10.0>>;
}
4、
#include
voidmain<>
{
inti,n,A,B,C,D,E;
doublescore,total;
printf<"请输入一个数n:
\n">;
scanf<"%d",&n>;
total=0;A=0;B=0;C=0;D=0;E=0;
for
{
printf<"请输入第#%d个学生成绩:
\n",i>;
scanf<"%lf",&score>;
total=total+score;
if=90>
A++;
elseif=80>
B++;
elseif=70>
C++;
elseif=60>
D++;
else
E++;
}
printf<"平均成绩=%lf\n",total/n>;
printf<"等级成绩个数:
\nA=%d\nB=%d\nC=%d\nD=%d\nE=%d\n",A,B,C,D,E>;
}
5、
#include
voidmain<>
{
intyear;
printf<"21世纪所有的闰年:
\n">;
for
if=0||year%400==0>
printf<"%d\n",year>;
}
第四章作业
2、
#include"stdio.h"
#include"math.h"
doublefact;
voidmain<>
{
inti,n;doublex,s;
printf<"请输入一个实数x:
\n">;
scanf<"%lf",&x>;
s=0;i=1;
while</fact>>=0.00001>{
s=pow*1.0/fact+s;
i++;
}
printf<"s=%.2lf\n",s>;
}
doublefact
{
inti;
doubleresult;
result=1;
for
result=result*i;
returnresult;
}
3、
#include"stdio.h"
intmain
{
intx,a,count,sum;
printf<"请输入一个整数x:
\n">;
scanf<"%d",&x>;
sum=0;count=0;
ifx=-x;
do{
a=x%10;
sum=sum+a;
x=x/10;
count++;
}while=0>;
printf<"位数=%d\n",count>;
printf<"各个位数之和为:
%d\n",sum>;
return0;
}
5、
#include"stdio.h"
voidmain<>
{
inta,n,i=1,s=0,t=0;
printf<"请输入两个正整数a,n=:
\n">;
scanf<"%d%d",&a,&n>;
while{
t=t+a;
s=s+t;
a=a*10;
++i;
}
printf<"a+aa+aaa+…+aa…a=%d\n",s>;
}
7、
#include"stdio.h"
voidmain<>
{
inti,j,k,l,n;
printf<"1-10000之间的水仙花数有:
\n">;
for
{
i=n/1000;
j=n/100%10;
k=n/10%10;
l=n%10;
if
{
printf<"%-5d",n>;
}
}
printf<"\n">;
}
9、
#include"stdio.h"
#include"math.h"
voidmain<>
{
inti,n,m,j,k;
i=0;
printf<"请输入一个多位整数:
\n">;
scanf<"%d",&n>;
k=n;
while=0>
{
i++;
k=k/10;
}
k=n;
m=pow<10,i-1>;
printf<"逐位输出:
%d",n/m%10>;
printf<",">;
for0;j=j/10>
{
n=k/j;
printf<"%d",n%10>;
if=1>
printf<",">;
}
}
11、
#include"stdio.h"
voidmain<>
{
intp,r,n,m,temp;
printf<"请输入两个正整数:
\n">;
scanf<"%d%d",&n,&m>;
if
{
temp=n;
n=m;
m=temp;
}
p=n*m;
while=0>
{
r=n%m;
n=m;
m=r;
}
printf<"最大公约数为:
%d\n",n>;
printf<"最小公倍数为:
%d\n",p/n>;
}
13、
#include"stdio.h"
voidmain<>
{
inti,j;
for{
for
printf<"">;
for
printf<"*">;
printf<"\n">;
}
for{
for
printf<"">;
for
printf<"*">;
printf<"\n">;
}
}
第五章
1.
#include
#include
longfac
{
longsum;
if
sum=a;
else
sum=*a>+fac;
return;
}
main<>
{
inta,n,i;
longtemp,sum=0;
printf<"请输入一个数a,n\n">;
scanf<"%d%d",&a,&n>;
for
{
temp=fac;
sum+=temp;
}
printf<"它们的和是=%ld",sum>;
return0;
}
2.
#include
intcountdight;
intmain
{
intnumber;
printf<"输入一个数:
">;
scanf<"%d",&number>;
countdight;
return0;
}
countdight
{
inta,count;
count=0;
while=0>
{
a=number%10;
number=number/10;
if
count++;
}
printf<"%d\n",count>;
returncount;
}
3.
#include
intfib;
intmain
{
intm,n,num1;
num1=1;
printf<"请输入两个正整数m和n=1,n<=10000>\n">;
scanf<"%d%d",&m,&n>;
if=m&&num1<=n>
fib;
return0;
}
intfib
{
inti,x1,x2,x,t;
x1=1;
x2=1;
for
{
x=x1+x2;
printf<"%5d",x>;
t=x;
x1=x2;
x2=t;
}
printf<"\n">;
returnx;
}
5.
#include
voidis;
intmain
{
intn,m,num1;
num1=1;
printf<"输入两个数m和n=1,n<=1000>\n">;
scanf<"%d%d",&m,&n>;
if=m&&num1<=n>
is;
return0;
}
voidis
{
inti,j,k;
for
{
i=num/100;
j=num/10%10;
k=num%10;
if
printf<"%5d",num>;
}
printf<"\n">;
}
6.
#include
intreverse;
intmain
{
intx;
printf<"请输入一个正整数:
\n">;
scanf<"%d",&x>;
reverse;
return0;
}
intreverse
{
while=0>
{
printf<"%d",number%10>;
number=number/10;
}
printf<"\n">;
returnnumber;
}
第七章作业
1.
#include
voidmain<>
{
inti,j=0,k=0,n,p,q,max,min;
inta[10];
printf<"请输入n<1的值:
\n">;
scanf<"%d",&n>;
printf<"请输入%d个数:
\n",n>;
for
{
scanf<"%d",&a[i]>;
min=a[0];max=a[9];
if{
min=a[i];
k=i;
}
ifmax>{
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;
for
{
printf<"%8d",a[i]>;
printf<"\n">;
}
4.
#include
intmain
{
intm,n,i,j,sum;
inta[6][6],x[80];
printf<"请输入m,n<1<=m,n<=6>的值:
\n">;
scanf<"%d%d",&m,&n>;
printf<"请输入%d个数:
\n",m*n>;
for
for
scanf<"%d",&a[i][j]>;
for{
for
printf<"%4d",a[i][j]>;
printf<"\n">;
}
for{
sum=0;
for
sum=sum+a[i][j];
x[i]=sum;
}
for
printf<"%d\n",x[i]>;
return0;
}
5.
#include
voidmain<>
{
inta[3][3],max,max1,max2,i,j,flag=1;
printf<"请输入9个数:
\n">;
for
for
scanf<"%d",&a[i][j]>;
for
{
max=a[i][0];
for
{
if