C语言程序设计(何钦铭)课后习题作业_第1页
C语言程序设计(何钦铭)课后习题作业_第2页
C语言程序设计(何钦铭)课后习题作业_第3页
C语言程序设计(何钦铭)课后习题作业_第4页
C语言程序设计(何钦铭)课后习题作业_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章习题

1、对C语言来说,下列标示符中哪些是合法的,哪些是不合法的?

Total,_debug,Large&Tall,Counter1,begin_

答:合法的:_debug^Counter1>begin_o

不合法的:Total、Large&Talk

2、改写1.4节中的流程图1.2,求1—100中能被6整除的所有整数的和。

3、改写1.4节中的程序,求1—100中能被6整除的所有整数的和,并在编程环境中验证该

程序的运行结果。

答:程序为:

#include<stdio.h>

intmain(void)

inti,sum=O;

for(i=l;i<=100;i++)

if(i%6==0)sum=sum+i;

printf("sum=%d\n",sum);

return0;

)

4、对于给定的整数n(n>l),请设计一个流程图判别n是否为一个素数(只能被1和自己

整除的整数),并分析该流程图中哪些是顺序结构、哪些是分支结构和循环结构。

第二章作业

1.编写程序,输入两个整数num和num2,计算并输出她们的和、差、积、商。

答:程序:

#include<stdio.h>

voidmain()

(

intnum1,num2,y1,y2,y3,y5;

doubley4;

printf("请输入两个数:num1,num2\nH);

scanf("%d%d",&num1,&num2);

yl=numl+num2;

y2=numl-num2;

y3=numl*num2;

y4=numl*1.0/num2;

y5=numl%num2;

printf("numl,num2科」y1=%d\nnum1,num2差y2=%d\nnuml,num2积y3=%d\nnum1,num2

商y4=%lf\nnumhnum2余y5=%d\n",yl,y2,y3,y4,y5);

)

2.为了倡导居民节约用电,某省电力公司执行“阶梯电价”,安装一户一表的居民用户电

价分为两个“阶梯月用电量50千瓦时以内的,电价为0・53元/千瓦时;超出50千瓦时

的用电量,电价上调0.05元/千瓦时。编写程序,输入用户的月用电量(千瓦时),计算并

输出该用户应支付的电费(元)。

答:程序:

#include<stdio.h>

voidmain()

(

doublex,y;

printf(”请输入月用电量:x\nH);

scanf(H%lfn,&x);

if(x<=50){

y=0.53*x;

primf(“电费y=%lf\n';y);

)

else{

y=0.58*x;

printf("应支付电费y=%lf\n",y);

3.编写程序,输入实数x和正整数n,计算x)不允许调用pow()函数求第。

答:程序:

#include<stdio.h>

voidmain()

(

doublex,power;

inti,n;

printf("请输入:x,n\n");

scanf(n%lf%dn,&x,&n);

power=1.0;

for(i=l;i<=n;i++)

power=power*x;

printf(npower(x,n)=%lf\nH,power);

)

4.编写程序,输入两个正整数m和n,求E(i2+l/i)(i从m到n。)

答:程序:

#include<stdio.h>

voidmain()

(

inti,m,n;

doublesum;

sum=0;

printf("input:m,n\nu);

scanf(H%d%dn,&m,&n);

for(i=m;i<=n;i++)

sum=sum+(i*i+1.0/i);

printf("sum=%lf\n",sum);

)

5.编写程序,输入一个正整数n,计算1・2/3+3/5・4/7+5/9・6/11+i的前11项之和。

答:程序:

#include<stdio.h>

voidmain()

(

inti,n;

doublesum,item,flag;

flag=l;sum=O;

printf("input:n\n");

scanf(n%d",&n);

for(i=l;i<=n;i++){

item=(flag*i)/(2*i-1);

flag=-flag;

sum=sum+item;}

printf("sum=%lf\n",sum);

)

6.某用户为购房办理商业贷款,选择了按月等额本息还款法,计算公式如下,在贷款本金

(loan)和月利率(rate)一定的情况下,住房贷款的月还款(money)取决于还款月数(month)

o客户打算在5-30年的范围内选择还清贷款的年限,想得到一张“还款年限一月还款额

表”以供参考。编写程序,输入贷款本金loan和月利率rate,输出“还款年限一月还款额

表”,还款年限的范围是5—30年,输出时分别精确到年和元。

Money=loan*rate(1+rate)month/[(1+rate)month-1]

答:程序:

#include<stdio.h>

#include<math.h>

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(year=lower;year<=upper;year++)

(

month=year*12;

money=(loan*rate*pow((1+rate),month))/(pow((1+rate),month)-l);

printf(n%d\t\t%lf\nH,year,money);)

)

7.编写程序,输入一个正整数n,求£2,(i从1到n),可调用pow()函数求嘉。

答:程序:

#include<stdio.h>

#include<math.h>

voidmain()

(

inti,n;

doublesum,item;

sum=0;

printf("input:n\n");

scanf(,'%d,',&n);

for(i=0;i<=n;i++)

(

item=pow(2,i);

sum=sum+item;}

printf(,,sum=%lf\n',,sum);

8.编写程序,输入一个正整数n,求0=£门(i从0到n)。要求定义和调用函数fact(n)计

算n!,函数类型是double.

答:程序:

#include<stdio.h>

doublefact(intn);

voidmain()

(

inti,n;

doublesum;

sum=0;

printf("input:n\n");

scanf(n%d",&n);

for(i=0;i<=n;i++)

(

sum=sum+fact(i);}

printf(nsun=%lf\n",sum);

I

doublefact(intn)

(

inti;

doubleproduct;

product=1.0;

for(i=l;i<=n;i++){

product=product*i;}

returnproduct;

第三章作业

1.

#include<stdio.h>

#include<math.h>

voidmain()

(

inta,b,c;

doubles,area,perimeter;

printf("请输入三角形三条边:a,b,c\n");

scanf(H%d%d%dn,&a,&b,&c);

if(a+b>c&&a+c>b&&b+c>a)

perimeter=a+b+c;

s=(a+b+c)/2.0;

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("三角形的周长perimeter=%.21f\n三角形的面积area=%.21f\n",perimeter,area);

2、

#include<stdio.h>

#include<math.h>

voidmain()

(

doublesalary,tax,rate;

printf("请输入职工的月薪:salaryXn”);

scanf(u%lfn,&salary);

if(salary<=850)rate=0;

elseif(salary<=1350)rate=5;

elseif(salary<=2850)rate=10;

elseif(salary<=5850)rate=15;

elserate=20;

tax=rate*(salary-850)/100;

printf("职工应缴个人所得税tax=%.21f\n",tax);

)

3、

#include<stdio.h>

voidmain()

(

doublem,n,y;

printf(”请输入行驶里程(公里):m\n等待时间(分钟):n\n*1);

scanf(n%lf%lf',&m,&n);

if((m+n/5.0)<=3)y=10;

elseif((m+n/5.0)<=10)y=2*(m+n/5.0);

elsey=2*10+3*(m+n/5.0-10);;

printf("乘客应付车费y=%d\iT,(int)((y*10+0.5)/10.0));

)

4、

#include<stdio.h>

voidmain()

(

inti,n,A,B,C,D,E;

doublescore,total;

printf("请输入一个数n:\nH);

scanf(u%dn,&n);

total=0;A=0;B=0;C=0;D=0;E=0;

for(i=l;i<=n;i++)

printf("请输入第#%d个学生成绩:\n';i);

scanf(u%lf",&score);

total=total+score;

if(score>=90)

A++;

elseif(score>=80)

B++;

elseif(score>=70)

C++;

elseif(score>=60)

D++;

else

E++;

printf(u平均成绩=%1加10121/11);

printf("等级成绩个数:\nA=%d\nB=%d\nC=%d\nD=%d\nE=%d\nn,A,B,C,D,E);

)

5、

#include<stdio.h>

voidmain()

(

intyear;

printf(n21世纪所有的闺年:\nn);

for(year=2000;year<3000;year++)

if(year%4==0&&year%100!=0llyear%400==0)

printf(u%d\n'\year);

第四章作业

2、

#includenstdio.hn

#includeHmath.hH

doublefact(intn);

voidmain()

(

inti,n;doublex,s;

printf(”请输入一个实数x:\rT);

scanf(u%lfn,&x);

s=O;i=l;

while((pow(x,i)/fact(i))>=0.00001){

s=pow(x,i)*1.0/fact(i)+s;

i++;

)

printf("s=%.21f\n,\s);

)

doublefact(intn)

(

inti;

doubleresult;

result=l;

for(i=l;i<=n;i++)

result=result*i;

returnresult;

)

3、

#includeHstdio.h"

intmain(void)

(

intx,a,count,sum;

printf("请输入一个整数x:\n");

scanf(H%dn,&x);

sum=0;count=0;

if(x<0)x=-x;

do{

a=x%10;

sum=sum+a;

x=x/10;

count++;

}while(x!=0);

printf("位数=%(1\0”,<:011叫;

printf("各个位数之和为:%d\n”,sum);

return0;

)

5、

#includenstdio.hH

voidmain()

inta,n,i=l,s=O,t=O;

printf("请输入两个正整数a,n=:\nn);

scanf(u%d%d,',&a,&n);

while(i<=n){

t=t+a;

s=s+t;

a=a*10;

++i;

)

printf(na+aa+aaa+...+aa...a=%d\n",s);

)

7、

#includenstdio.h"

voidmain()

(

inti,j,k,Ln;

printf(n1-10000之间的水仙花数有:\n");

for(n=10;n<10000;n++)

(

i=n/1000;

j=n/100%10;

k=n/10%10;

l=n%10;

if(i*l000+j*100+k*10+l==i*i*i+j*j*j+k*k*k+l*l*l)

{

printf(“%-5d”,n);

printf("\n");

}

9、

#include"stdio.h"

#include"math.h"

voidmain()

(

inti,n,m,j,k;

i=0;

printf("请输入一个多位整数:\n");

scanf(u%dn,&n);

k=n;

while(k!=0)

i++;

k=k/10;

k=n;

m=pow(10,i-l);

printf("逐位输出:%d”,n/m%10);

printf(n/);

for(j=m/10;j>O;j=j/l0)

(

n=kyj;

printf(H%d';n%10);

if(j!=D

primfC'J);

)

}

11>

#includenstdio.hn

voidmain()

(

intp,r,n,m,temp;

printf(”请输入两个正整数:\n");

scanf("%d%d,',&n,&m);

if(n<m)

(

temp=n;

n=m;

m=temp;

}

p=n*m;

while(m!=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(i=0;i<=3;i++){

for(j=0;j<=2-i;j++)

printfC**');

for(j=0;j<=2*i;j++)

printf("*n);

printfCXn1');

)

for(i=0;i<=2;i++){

for(j=0;j<=i;j++)

printfCtM);

for(j=0;j<=4-2*i;j++)

printf(H*n);

printf(n\nn);

第五章

#include<stdio.h>

#include<math.h>

longfac(intn,inta)

(

longsum;

if(n==l)

sum=a;

else

sum=(long)(pow(10,n-1)*a)+fac(n-1,a);

retum(sum);

)

main()

(

inta,n,i;

longtemp,sum=0;

primf("请输入一个数a,n\nn);

scanf("%d%dn,&a,&n);

for(i=l;i<=n;i++)

(

temp=fac(i,a);

sum+=temp;

)

printf("它们的和是=%ki",sum);

return0;

2.

#include<stdio.h>

intcountdight(intnumber,intdight);

intmain(void)

(

intnumber;

printf("输入一个数个

scanf("%d",&number);

countdight(number,2);

return0;

countdight(intnumber,intdight)

(

inta,count;

count=0;

while(number!=0)

(

a=number%10;

number=number/10;

if(a==dight)

count++;

)

printf(M%d\nH,count);

returncount;

3.

#include<stdio.h>

intfib(intn);

intmain(void)

(

intm,n,numl;

numl=l;

printf("请输入两个正整数m^0n(m>=l,n<=10000)\nu);

scanf(H%d%dn,&m,&n);

if(num1>=m&&num1<=n)

fib(n);

return0;

intfib(intn)

(

inti,xl,x2,x,t;

xl=l;

x2=l;

for(i=0;i<n;i++)

(

x=xl+x2;

printf("%5d",x);

t=x;

xl=x2;

x2=t;

)

printf(n\nn);

returnx;

)

5.

#include<stdio.h>

voidis(intnum);

intmain(void)

(

intn,m,numl;

numl=l;

printf("输入两个数m和n(m>=1,n<=1000)\n");

scanf(u%d%d",&m,&n);

if(num1>=m&&num1<=n)

is(numl);

return0;

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)

printf(u%5du,num);

printf("\nH);

6.

#include<stdio.h>

intreverse(intnumber);

inimain(void)

(

intx;

printf("请输入一个正整数整)

scanf(u%d\&x);

reverse(x);

return0;

)

intreverse(intnumber)

(

while(number!=0)

(

printf(n%dn,number%10);

number=number/10;

)

printf("\nn);

returnnumber;

第七章作业

1.

#include<stdio.h>

voidmain()

inti,j=0,k=0,n,p,q,max,min;

inta[10];

printf("请输入n(l〈n<10)的值:\n〃);

scanf(〃%d〃,&n);

printf(“请输入%d个数:\n〃,n);

for(i=0;i<n;i++)

scanf(,,%d,/,&a[i]);

min=a[O];max=a[9];

if(a[i]<min){

min二a[i];

k=i;

)

if(a[i]>max){

max=a[i];

)

)

P=a[9];a[9]=a[j];a[j]=p;

q=a[O];a[O]=a[k];a[k]=q;

for(i=0;i<n;i++)

(

printf(〃%8d〃,a[i]);

printf(〃\n〃);

)

4.

#include<stdio.h>

intmain(void)

(

intm,n,i,j,sum;

inta[6][6],x[80];

printf("请输入m,n(K=m,n<=6)的值:\n〃);

scanf("%d%d〃,&m,&n);

printf(〃请输入%d个数:\n〃,m*n);

for(i=0;i<m;i++)

for(j=0;i<n;j++)

scanf&a[i][j]);

for(i=0;i<m;i++){

for(j=0;j<n;j++)

printf(〃%4d〃,a[i][j]);

printf(〃\n〃);

)

for(i=0;i<m;i++){

sum=O;

for(j=0;j<n;j++)

sum=sum+a[i][j];

x[i]=sum;

)

for(i=0;i<m;i++)

printf("%d\n",x[i]);

return0;

)

5.

#include<stdio.h>

voidmain()

(

inta[3][3],max,maxi,max2,i,j,flag=l;

printf(〃请输入9个数:\n〃);

for(i=0;i<=2;i++)

for(j=0;j<=2;j++)

scanf(〃%d〃,&a[i][j]);

for(i=0;i<=2;i++)

(

max二a[i][0];

for(j=0;j<=2;j++)

(

if(a[i][j]>max)

(

max=a[i][j];

maxl=j;

}

)

for(max2=0;max2<=2;max2++)

(

if(max>a[maxi][max2])

(

flag=0;

break;

}

)

if(flag==l)printf("鞍点是%d\n/z,a[max2][maxi]);

if(flag==0)printf(z,nonumber\n,z);

flag=l;

)

)

8.

#include<stdio.h>

#include<string.h>

intmain(void)

inti,n;chars[80];

printf(〃请输入n(n<80)的值:\n〃);

scanf("%d",&n);

printf("请输入%d个字符:\n〃,n);

for(i=0;i<n;i++)

scanf(〃%s〃,s);

for(i=0;s[i]!='\0';i++)

(

if(s[i]>=A,&&s[i]<=Z')

s[i]=155-s[i];

}

for(i=0;s[i]!='\0';i++)

putchar(s[i]);

printf(〃\n〃);

return0;

)

#include<stdio.h>

#include<string.h>

intmain(void)

(

inti,n;charf,s[80];

printf("Enterastring:,z);/*输入字符串*/

i=0;

while((s[i]=getchar())!='\n')

i++;

s[i]=,\0,;

n=0;

for(i=0;s[i]!='\0';i++){

if(s[i]<=7f&&s[i]>=20)

s[i]=s[i++];

else

break;

)

for(i=0;s[i]!='\0';i++)

putchar(s[i]);

return0;

)

第八章作业

1.

#include<stdio.h>

intmain(void)

(

charch;

inta[10];

inti,j,temp;

printf(”请输入10个整数:\n");

for(i=0;i<10;i++)

scanf("%d〃,&a[i]);

printf(〃请输入A或D:〃);

scanfC%c”,&ch);

if(ch二二'A')

(

for(i=0;i<9;i++)

{

for(j=i+l;j<10;j++)

(

if(a[i]>a[j])

(

temp=a[i];

a[i]=a[j];

a[j]=temp;

)

)

)

for(i=0;i<10;i++)

(

printf(,,%d\n,/,a[i]);

)

)

elseif(ch==,DJ)

(

for(i=0;i<9;i++)

(

for(j=i+l;j<10;j++)

if(a[i]<a[j])

temp=a[i];

a[i]=a[j];

a[j]=temp;

)

)

)

for(i=0;i<10;i++)

{

printf(,z%d\n,z,a[i]);

)

)

return0;

)

5.

#include<stdio.h>

#include<string.h>

voidmcopy(char*s,intm);

intmain(void)

(

inti,m,1;

charstr[100];

printf(〃请输入您要输入的字符串:〃);

gets(str);

printf(〃您将从原字符串的第m位复制新字符串,请输入m:\n〃);

scanf("%d",&m);

printf(〃复制后,新的字符串为:〃);

mcopy(str,m);

return0;

)

voidmcopy(char*s,intm)

(

printf(//%s\n,/,s+mT);

)

11.

#include<stdio.h>

#include<string.h>

voidfushu(char*p);

intmain(void)

charstr[80];

printf(〃请输入一个英语名词单词:〃);

scanf('%s”,str);

fushu(str);

puts(str);

return0;

)

voidfushu(char*p)

(

inti,1;

1=0;

for(i=0;*(p+i)!='\0';i++){

1++;

}

if(*(p+1-1)==,y'){

*(p+l)=e;

*(p+1+1)=,s*;

*(p+1+2)='\0';

}

else

if((*(p+lT)=='s')||(*(p+l-1)=='x')||((*(p+1-2)==,c)&&(*(p+lT)=='h'))||((*(p+

1-2)==,s*)&&(*(p+1-1)==,h,))){

*(p+l)=,e;

*(p+l+l)='s';

*(p+1+2)='\0';

)

elseif(*(p+l-1)=='o'){

*(p+D-e';

*(p+l+l)='s';

*(p+1+2)='\0';

}

else{

*(p+l)='s';

*(p+l+l)='\0';

}

)

12.

#include<stdio.h>

#include<stdlib.h>

intmain(void)

inti,j,a,n,sum,avg;

int*p;

printf("Entern:");

scanf(〃%d〃,&n);

if((p=(int*)calloc(n,sizeof(int)))==NULL){

printf(zzNotabletoallocatememory.\n,z);

exit(1);

}

printf(〃请输入%d个学生的成绩:\n〃,n);

for(i=0;i<n;i++){

scanf("%d",p+i);

)

sum=0;

for(i=0;i<n;i++)

sum=sum+*(p+i);

avg=sum/n;

for(i=0;i<n-l;i++){

for(j=i+l;j<n;j++){

if(*(p+i)>*(p+j)){

a=*(p+i);

*(p+i)=*(p+j);

*(p+j)=a;

}

)

)

printf(〃学生的平均成绩是:%d\n〃,avg);

printf(〃学生的最高成绩是:为d\n〃,*(p+nT));

printf(〃学生的最低成绩是:%d\n〃,*p);

return0;

)

第九章作业

1.

#include<stdio.h>

struct{

inthour,minute,second;

}time;

int.main(void)

(

,,,,

scanf(%d:%d:%d>time,hour,time,minute,time,second);

time.second++;

if(time.second==60){

time.minute++;

time.second=0;

if(time.minute==60){

time.hour++;

time.minute=0;

if(time.hour==24)

time.hour=0;

)

)

printftime,hour,time,minute,time,second);

return0;

)

2.

structsi{

charcl,c2;

intn;

);

structs2{

intn;

structsim;

};

intmain(void)

(

printf(z,\n\t%d\t%d\t%c\nz,,m.n,m.m,m.n,m.m.cl,m.m.c2);

return0;

)

8.

#include<stdio.h>

ftdefineN10

structperson(

charnum[10];

charname[20];

doublejbgz,jj,zc,sfgz;

);

structpersongz[N];

intmain()

{inti,index;

printf(〃请输入%d名工人的基本信息:\n〃,N);

for(i=0;i<N;i++)

(

printf(〃请输入第%d名工人的基本信息:\n〃,i+1);

scanf(,z%s%s%lf%lf%lf,z,gz[i].num,gz[i].name,&gz[i].jbgz,&gz[i].jj,&gz[i].zc)

printfC%d名工人的基本信息:\n〃,N);

printf(〃编号\t姓名\t基本工资\t奖金\t支出\t实发工资\n〃);

for(i=0;i<N;i++)

printf(z,%s\t%s\t%.21f\t\t%.21f\t%.21f\t%.21f\nz/,gz[i].num,gz[i].name,gz[i].

jbgz,gz[i].jj,gz[i].zc,gz[i].sfgz=gz[i].jbgz+gz[i].jj-gz[i].z

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论