c语言16章.docx
- 文档编号:24740494
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:20
- 大小:21.69KB
c语言16章.docx
《c语言16章.docx》由会员分享,可在线阅读,更多相关《c语言16章.docx(20页珍藏版)》请在冰豆网上搜索。
c语言16章
我和一个朋友自己编写的书后习题答案
附题目
列出的所有程序均在Dev C++ 4.9上编译成功,没有语法错误。
第一章 概述
习题1.5
编写一个C语言程序,要求输出以下信息:
***************
How are you !
***************
#include
int main()
{
printf(“***************\n”);
printf(“How are you !
\n”);
printf(“***************\n”);
return 0;
}
习题1.6
编写一个C语言程序,从键盘输入x,y,z三个变量,并输出其中的最小值。
#include
int main()
{
/* 定义整型变量 */
int x,y,z,min;
/* 输入*/
printf(“请输入 x,y,x:
”);
scanf(“%d,%d,%d”,&x,&y,&z);
/* 判断最小值 */
min=x; if(y if(z /* 输出 */ printf(“最小的数: %d\n”,min); return 0; } 作者: songfei 发表时间: 2007-9-91: 35: 00 第1楼 第三章 算法和基本程序设计 习题3.4 编写程序,输入三角形的3个边长a,b,c,求三角形的面积area。 其中,S=(a+b+c)/2。 #include #include int main() { float a,b,c,area,s; printf("请输入 a,b,c: "); scanf("%f,%f,%f",&a,&b,&c); s =(a+b+c)/2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("面积: %f\n",area); return 0; } 习题3.5 编写程序,输入四个数,并求出它们的平均值。 #include int main() { int a,b,c,d; float average; printf(“请输入 a,b,c,d : ”); scanf(“%d,%d,%d,%d”,&a,&b,&c,&d); average =(a+b+c+d)/4.0; printf(“平均值: %f\n”,average); return 0; } 习题3.6 从键盘上输入一个整数,分别输出它的个位数,十位数和百位数。 #include int main() { int x,y,z,num; printf("请输入一个数: "); scanf("%d",&num); /* 分离个位,十位,百位的方法 */ x=num%10; y=(num/10)%10; z=(num/100)%10; printf("个: %d\n十: %d\n百: %d\n",x,y,z); return 0; } 习题3.7 从键盘上输入一个大写字母,并将其转换成小写字母并输出。 #include int main() { char c; printf("请输入一个字母: "); scanf("%c",&c); printf("转换后: %c\n",c+32); return 0; } 作者: songfei 发表时间: 2007-9-91: 36: 00 第2楼 第四章 选择分支结构程序设计 习题4.2 输入四个数a、b、c、d,把这四个置由小到大输出。 #include int main() { int a,b,c,d; int t; /* 临时变量 */ printf(“请输入 a,b,c,d: ”); scanf(“%d,%d,%d,%d”,&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=b;b=c;c=t;} if(b>d) {t=b;b=d;d=t;} if(c>d) {t=c;c=d;d=t;} printf(“结果: %d,%d,%d,%d\n”,a,b,c,d); return 0; } 习题4.3 编程序按下式计算y的值,x的值由键盘输入。 #include int main() { double x,y; printf("请输入 x: "); scanf("%lf",&x); /* 多个if … else嵌套 */ if(x>=0&&x<20) y=5*x+11; else if(x<40) y=sin(x)+cos(x); else if(x<60) exp(x)-1; else if(x<80) y=log(x+1); else y=0; printf("y=%lf\n",y); return 0; } 习题4.4 用条件表达式的嵌套来完成此题: 学习成绩≥90分的同学用A表示,70~89分之间的用B表示,60~69分之间用C表示,60分以下的用D表示。 #include int main() { int mark; char res; printf(“请输入成绩: ”); scanf(“%d”,&mark); if(mark>=90) res=’A’; else if(mark>=70) res=’B’; else if(mark>=60) res=’C’; else res=’D’; printf(“结果 : %c\n”,res); return 0; } 习题4.5 计算器程序。 用户输入运算数和四则运算符,输出运算结果。 #include int main() { int a,b; float res; char t; printf(“请输入运算符(+ - * /): ”); scanf(“%c”,&t); printf(“请输入 a,b: ”); scanf(“%d,%d”,&a,&b); switch (t) { case‘+’ : res=a+b;break; case‘-‘ : res=a-b;break; case‘*’ : res=a*b;break; case‘/’ : res=(float)a/b;break; } printf(“结果: %f”,res); return 0; } 习题4.6 企业发放的奖金根据利润提成。 利润(I)低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万的部分,可提成5%;40万到60万之间时,高于40万的部分,可提成3%;60万到100万之间时,高于60万的部分可提成1.5%,高于100万时,超过100万的部分按1%提成。 从键盘输入当月的利润,求应发放的奖金总数。 #include int main() { long i,sum; printf("请输入利润 I: "); scanf("%ld",&i); if(i<100000) sum=i*0.1; else if(i<200000) sum=10000+(i-100000)*0.075; else if(i<400000) sum=17500+(i-200000)*0.05; else if(i<600000) sum=27500+(i-400000)*0.03; else if(i<1000000) sum=33500+(i-600000)*0.015; else sum=39500+(i-1000000)*0.01; printf("奖金总数: %ld\n",sum); return 0; } 作者: songfei 发表时间: 2007-9-91: 38: 00 第3楼 第五章 循环结构程序设计 习题5.1 编写一个程序,计算-32768~+32768之间的任意整数(由键盘输入)中个位奇数的平方和。 #include int main() { int n,ge,shi,bai,qian,wan,sum=0; printf("请输入一个数: \n"); scanf("%d",&n); ge=n%10; /* 分离各位数 */ shi=n/10%10; bai=n/100%10; qian=n/1000%10; wan=n/1000; if(ge%2==1) sum+=ge*ge; if(shi%2==1) sum+=shi*shi; if(bai%2==1) sum+=bai*bai; if(qian%2==1) sum+=qian*qian; if(wan%2==1) sum+=wan*wan; printf("总合是 %d\n",sum); return 0; } 习题5.2 编写程序,判断从键盘输入的整数X的正负性和奇偶性。 #include int main() { int n,data; printf("请输入一个数: \n"); scanf("%d",&n); if(n>=0) printf("X 是正数\n"); else printf("X 是负数\n"); if(n%2==1) printf("X 是奇数\n"); else printf("X 是偶数\n"); return 0; } 习题5.3 鸡兔问题: 鸡兔共30只,脚共有90个。 编写一个程序,求鸡、兔各有多少只。 #include int main() { int i,j; /* 枚举法(穷举法) */ for(i=0;i<=30;i++) { j=30-i; if(2*i+4*i==90) printf("鸡: %d\n兔: %d\n",i,j); } return 0; } 习题5.4 编写一个程序,求 s=1+(1+2)+(1+2+3)+ …… +(1+2+3+4+ …… +n) 的值。 #include int main() { int n,i,j,s=0; printf("请输入n : \n"); scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=i;j++) s+=j; printf("s=%d\n",s); return 0; } 习题5.5 编写一个程序,求 的值。 #include int main() { int i,s=1; float n=1.0,t=1,sum=0; for(i=1;i<=100;i++) { sum+=t; n++; s=-s; t=s/n; } printf("结果: %f",sum); return 0; } 习题5.7 编写一个程序,求e的近似值,当通项小于10-7时停止计算。 #include #include int main() { int n=1; float e=1,t=1,s=1.0; while(fabs(t)>=1e-6) { e+=t; n++; s*=n; t=1/s; } printf("e=%10.6f\n",e); return 0; } 习题5.8 编写程序,打印以下图形(行n由键盘输入)。 ******* ****** ***** **** *** ** * #include int main() { int i,j,n; printf("请输入 n: "); scanf("%d",&n); for(i=0;i { for(j=1;j printf(" "); for(j=1;j printf("*"); printf("\n"); } return 0; } 习题5.9 编写一个程序,打印乘法“九九表”,即 第一行为1x1=1,1x2=2,……,1x9=9 第二行为2x1=2,2x2=4,……,2x9=9 …… 第九行为9x1=9;9x2=18,……,9x9=81 #include int main() { int i,j,sum; for(i=1;i<10;i++) { for(j=1;j<10;j++) { sum=i*j; printf("%d*%d=%2d\t",i,j,sum); } printf("\n\n"); } return 0; } 习题5.10 从键盘输入若干个学生某门课的成绩,计算出平均成绩,并输出低于60分的学生成绩,当输入负数时结束输入。 #include int main() { int i=0; float n,sum=0; printf("请输入成绩(负数结束): \n"); scanf("%f",&n); if(n>=0&&n<60) printf("此学生考试不及格,分数%f\n",n); while(n>=0) { sum+=n; i++; scanf("%f",&n); if(n>=0&&n<60) printf("不及格,分数%f\n",n); } sum=sum/i; printf("The average is: %f\n",sum); return 0; } 习题5.11 编写一个程序,输出3~100间的全部素数,每行10个。 #include #include int main() { int m,k,i,n=0; printf("3 to 100: \n"); for(m=3;m<=100;m+=2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) { printf("%3d",m); n++; if((n%10)==0) printf("\n"); } } return 0; } 习题5.13 编写一个程序,小学生可以用这个程序进行两个数的四则运算自我检测。 要求: 测验者可以选择难度(如取加减乘除或位数为不同难度),可以选择每次做的题数n,电脑会对结果进行正确或者错误的评判。 题目中的运算数据应随即产生。 #include #include #include #define N 3 /* 测验的题数 */ int main() { int i,m,n,t,p,sum,k,j,cnt=0; /*初始化随机数 */ srand((unsigned)time(NULL)); /* 简易菜单 */ printf("\n-------速算-------\n\n"); printf("1.加\n2.减\n3.乘\n4.除\n"); printf("请选择: \n"); scanf("%d",&t); for(i=1;i<=N;i++) { k=rand()%100; /* 产生0~99的随即数 */ j=rand()%100; switch(t) { case 1: sum=k+j; printf("%d+%d=? \n",k,j); break; case 2: sum=k-j; printf("%d-%d=? \n",k,j); break; case 3: sum=k*j; printf("%d*%d=? \n",k,j); break; case 4: sum=k; printf("%d/%d=? \n",k*j,j); break; } printf("和=: \n"); scanf("%d",&p); if(sum==p) { cnt++; /* 作对的题数加一 */ printf("正确! \n"); } else printf("错误! \n"); } /* for */ printf("你已经作对了 %d 个题! \n",cnt); return 0; } 作者: songfei 发表时间: 2007-9-91: 40: 00 第4楼 第六章 函数 习题6.3 编写一个程序,已知一个圆筒的半径、和高,计算该圆筒的体积。 #define PI 3.14159 #include /* 定义一个函数 */ float v(float r,float h) { return PI*r*r*h; } int main() { float rs,hs; printf(“请输入 r,h: ”); scanf(“%f,%f”,&rs,&hs);; /* 函数调用 */ printf(“体积 v= %f”,v(rs,hs)); return 0; } 习题6.4 编写一个求水仙花数的函数,求100到999之间的全部水仙花数。 所谓水仙花数,是指一个三位数,其各位数字的立方和等于该数。 例如: 153是一个水仙花数: 153=13+53+33 #include int shuixianhua(int num) { int data,ten,hun; data=num%10; ten=num/10%10; hun=num/100%10; if(num==data*data*data+ten *ten*ten+hun*hun*hun) return 1; else return 0; } int main() { int i; printf("水仙花数: "); for(i=100;i<1000;i++) if(shuixianhua(i))printf("%5d",i); return 0; } 习题6.5 编写一个函数,输出整数m的全部素数因子。 例如: n=120,因子为2,2,2,3,5 #include int fun(int n) { int i; for(i=2;i<=n;) { if(n%i==0) { n=n/i; printf("%d ",i); } else i++; } } int main() { int m; printf("请输入一个数: "); scanf("%d",&m); fun(m); } 习题6.6 编写一函数,求10000以内所有的完数。 所谓完数是指一个数正好是它所有约数之和。 例如: 6就是一个完数,因为6的因子有1,2,3,并且6=1+2+3。 #include #define N 10000 /* 函数声明 */ int test(int n); int main() { int i,j; for(i=1;i { j=test(i); if(i==j) printf("%6d",i); } return 0; } /* 函数定义 */ int test(int n) { int i,sum=0; for(i=1;i<=n/2;i++) if(n%i==0)sum+=i; return sum; } 习题6.7 如果有两个数,每一个数的所有约数(除它本身以外)的和正好等于对方,则称这两个数互为满数。 求出10000以内所有的互满数,并显示输出,并求一个数和它所有约数(除它本身)的和用函数实现。 #include #define N 10000 int test(int n); int main() { int i,m,n; for(i=1;i { m=test(i); n=test(m); if(i==n&&i printf("%6d%6d\n",m,n); } } int test(int n)/* 计算第一个数字 */ { int i,sum=0; for(i=1;i<=n/2;i++) if(n%i==0) sum+=i; return sum; } 习题6.8 编写一个计算幂级数的递归函数。 #include int fun(int i,int j);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 16