课后题答案-C语言程序设计
更新时间:2023-03-15 03:56:01 阅读量: 教育文库 文档下载
《C语言程序设计能力教程(第二版)》课后作业及实训题
参考答案
第1章 进入C语言程序世界 二、
1. I love China!
printf(\
2. 6
项目实训题参考答案 解: 1.编写一个C程序,输出以下信息: main()
* * * * * * * * * * * * * * * * * * * * { I am a student! int a,b,c,v; * * * * * * * * * * * * * * * * * * * * a=10;
main() b=20; { printf(\ c=15; printf(\ v=a*b*c; printf(\ printf(\} } 2.已知立方体的长、宽、高分别是10cm、20cm、15cm,本程序运行结果为: 编写程序,求立方体体积。 v=3000
第2章 编制C程序的基础知识 一 选择题 C B A B A C C C 二 程序阅读题 1. 3,2,-8,2 3.000000,2.500000,-8.000000 2. ABC DE FGH why is 21+35 equal 52? 3. 3 1 4 3 2 3 1 2 4. 41 42 5. aa bb cc abc A N 项目实训题
1.定义一个符号常量M为5和一个变量n值为2,把它们的乘积输出。 #define M 5 main() { int n,c; n=2; c=M*n;
printf(\
2.编程求下面算术表达式的值。
(1)x+a%3*(int)(x+y)%2/4,设x=2.5,a=7,y=4.7;
(2)(float)(a+b)/2+(int)x%(int)y,设a=2,b=3,x=3.5,y=2.5。 (1)main()
{ int a=7;
float x=2.5,y=4.7;
printf(\(2)main()
{ int a=2,b=3;
float x=3.5,y=2.5;
printf(\
第三章 顺序结构程序设计 一 选择题
A C D C C 二 程序阅读题 1. x=3,a=2,b=3 2. z=12.700000 3. 1 2 1
a
2 1 2 三.编程题 编程题
1. 某工种按小时计算工资,每月劳动时间(小时)×每小时工资=总工资,总工资中扣除10%公积金,剩余的为应发工资。编写一个程序从键盘输入劳动时间和每小时工资,打印出应发工资。
解:
#include
float sj,gz,yfgz;
printf(\ scanf(\ yfgz=sj*gz*0.9;
printf(\}
本程序运行结果为:
time,salary:4,3
2.编写一个程序求出任意一个输入字符的ASCII码 解:
#include
char c;
printf(\ scanf(\
printf(\}
本程序运行结果为:
Input a string:a
3、编写一个程序用于水果店售货员算帐:已知苹果每斤2.50元,鸭梨每斤1.80元,香蕉每斤2元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付钱数,再输入顾客付款数,打印出应找的钱数。 解: main() {
float p,y,x,j,ys,g,fk;
printf(\scanf(\ys=2.5*p+1.8*y+2*x+1.6*j; printf(\scanf(\
2
fk=g-ys;
printf(\
printf(\}
本程序运行结果为:
apple,pear,banana,orange(weight)=1,2,3,4 fu kuan=100 result:
fukuan=100.00yuan shoukuan= 18.50yuan zhaohui= 81.50yuan 项目实训
1.假设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后可得到本利之和deposit。
#include
float rate=0.0225,capital,deposit; scanf(\ deposit=capital*pow(1+rate,n); printf(\
2.将一个三位数整数,正确分离出它的个位、十位和百位数字,并分别在屏幕上输出。 main()
{ int n,a,b,c;
scanf(\ a=n/100; b=n0/10; c=n0/1;
printf(\
第四章 选择结构程序设计 一、
B B C B C A 三、1. 0
2. 3 2 2 3. 10 20 0
4. ch>=’A’&&ch<=’Z’||ch>=’a’&&ch<=’z’ ch>=’0’&&ch<=’9’ ch==’ ’ 5. -1 四、上机操作
1. 从键盘输入一个英文字母,如果是大写字母,则将它变为小写字母输出;如果是小写字母,则将其变为大写字母输出。
#include
if(ch>='A'&&ch<='Z') ch+=32;
else if(ch>='a'&&ch<='z') ch-=32; putchar(ch);
putchar('\\n'); }
2. 根据输入的x值依据下列表达式,计算y的值。 2x (x>-1)
3
y = 3 (x=-1)
4+x (x<-1) 解: main() {
float x,y;
scanf(\ if(x>-1) y=2*x;
else if(x==1) y=3;
else y=4+x; printf(\}
本程序运行结果为: -2
y=2.000000
3.编写程序,输入一个整数,判断它是奇数还是偶数,若是奇数,输出“Is Odd“;若是偶数,输出“Is Even“。 main() { int x;
scanf(\
if(x%2==0) printf(\ else printf(\
4.设计应用程序,求二次方程ax2+bx+c=0的解。 #include
{ float a,b,c,disc,x1,x2,p,q; scanf(\
if(fabs(a)<=1e-6) printf(\ else
{ disc=b*b-4*a*c;
if(fabs(disc)< 1e-6) printf(\ else if(disc>1e-6)
{x1=(-b+sqrt(disc)/(2*a)); x2=(-b-sqrt(disc)/(2*a));
printf(\ else
{ p=-b/(2*a);
q=sqrt(-disc/(2*a));
printf(\
printf(\
5.按托运规则,行李不超过50公斤时,运费为0.15元/公斤,如超过50公斤,超过部分的运费为0.22元/公斤,现
有行李w公斤,编写一个程序计算运费。 解:
#include
float w,f,x;
printf(\ scanf(\ if(w<=50) x=0.15*w; else
4
x=0.15*50+0.22*(w-50);
printf(\}
本程序运行结果为: weight:20
6. 某商场给与顾客购物的折扣率如下: 购物金额<200元 不打折 500元>购物金额>=200元 9折 1000元>购物金额>=500元 8折 购物金额>=1000元 7.5折
输入一个购物金额,输出打折率、购物实际付款金额。 #include
{ float x,y,realx; scanf(\
if(x<=0) { printf(\ else
{ if(x<200) y=1.0;
else if(x<500) y=0.9; else if(x<1000) y=0.8; else y=0.75;} if(y!=0) {realx=x*y;
printf(\
项目实训
某托儿所收2岁到6岁的孩子,2岁、3岁孩子进小班(Lower class);4岁孩子进中班(Middle class);5岁、6岁孩子进大班(Higher class)。编写程序(用if语句和switch语句),输入孩子年龄,输出年龄及进入的班号。如:输入:3,输出:age:3,enter Lower class。
#include
printf(\ scanf(\
if(age>6||age<2) printf(\ else switch(age); {case 2:
case 3: printf(\ case 4: printf(\ case 5:
case 6: printf(\第五章 循环结构程序设计 一、选择题 C C A A D D 二、程序阅读题 1. sum=25
mul=3840.000000 2. 3.007051 3.* * * * * * * *
5
* * * * * * 三、操作题
1.求s=1+3+5+7+?100的值。
#include \main() {
int i,sum=0;
for(i=1;i<=100;i+=2) sum=sum+i;
printf(\}
2. 输入班级学生考试成绩,求考试平均成绩。约定当输入负数时,表示输入结束。 main()
{ float sum=0,score,ave; int n=0;
scanf(\ while(score>0) { n++;
sum=sum+score;
scanf(\ ave=sum/n;
printf(\
3.输入一行字符以@作结束标志,分别统计其中英文字母、空格、数字和其它字符的个数。 #include \main() { char ch;
int cha=0,space=0,digit=0,other=0; while((ch=getchar())!='@')
{ if (ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') cha++; else if (ch==' ') space++;
else if (ch>='0'&&ch<='9') digit++; else other++; }
printf(\
4.一张纸的厚度为0.1毫米,珠穆琅玛峰的高度为8848.13米,假如纸张有足够大,将纸对折多少次后可以超过珠峰的高度? main()
{ float h=8848.13,h0=0.0001,h1; int m=0; h1=h0;
while(h0<=h) { h0=2*h0;
printf(\ m++; }
printf(\
5、 编写一个程序求出满足下列条件的四位数,该数是一个完全平方数;第一、三位上数之和为10,第二、四位上数
之积为12。
解:
#include
int i,j,a,b,c,d; for(i=32;i<=99;i++) {
j=i*i; a=j/1000;
6
b=j/100-a*10;
c=j/10-a*100-b*10;
d=j-a*1000-b*100-c*10; if(a+c==10&&b*d==12) printf(\ } }
本程序运行结果为: 1296 9216
6、 一个正数与3的和是5的倍数,与3的差是6的倍数,编写一个程序求符合条件的最小数。
解:
#include
int n; n=1;
while(1) {
n=n+1;
if((n+3)%5==0&&(n-3)%6==0)break; }
printf(\}
本程序运行结果为: n=27
7、 已知xyz+yzz=532,其中x、y、z都是数字,编写一个程序求出x、y、z分别是多少。
解:
#include
int x,y,z,i;
for(x=1;x<=9;x++) for(y=1;y<=9;y++) for(z=0;z<=9;z++) {
i=100*x+10*y+z+100*y+10*z+z;
if(i==532) printf(\ }
}
本程序运行结果为:
x=3,y=2,z=1
8、学校有近千名学生排队,5人一行余2人,7人一行余3人,3人一行余1人,求学生人数。
解:
#include
int n;
for(n=1000;n>=10;n--)
if(n%5==2&&n%7==3&&n%3==1)break; printf(\}
本程序运行结果为: n=997
9.验证歌德巴赫猜想:任意一个大于6的偶数均可表示为两个质数的和。
7
#include
{ int i,x;
int p,q,k1,k2;
printf(\ scanf(\
for(p=3;p<=x/2;p+=2) {k1=k2=1; q=x-p;
if(p>2)
for(i=2;i
if(q%i==0) k2=0;
if(k1==1&&k2==1) printf(\
10.一个数恰好等于它的平方数的右端,这个数称为同构数 。如 :5的平方是25,25的平方是625。找出1~1000之间的全部同构数 。 #include \ main() { int i,j,k=0; for (i=2;i<1000;i++) { if (i/10==0) j=1; /*因为i是整型,所以是整除*/ else if (i/100==0) j=2; else if (i/1000==0) j=3; if ((long int)i*i%(int)pow(10,j)==i) /*同构数的定义*/ { k++; /* 计数器*/ printf(\ if (k%5==0) printf(\ printf(\}
项目实训
1. 编写程序求1-1/2+1/3-1/4+?+1/99-1/100的值
#include \main() {
int i, s=-1; float sum=1.0;
for(i=2;i<=100;i++) sum=sum+1.0*s/i; printf(\}
2.曾有一位印度国王要奖赏他的聪明能干的宰相达依尔。达依尔只要求在国际象棋的棋盘格上放置小麦粒,第一格放1粒,第二格放两粒,第三格放4粒,第四格放8粒,??,最后能有多少小麦粒呢? main()
{ float i ,s=1,t=1; for (i=1;i<=63;i++) { t*=2; s+=t; }
printf(\
3.打印水仙花数,即一个三位数各位上的数字之和等于它本身,如:153=13+53+33 。 main()
{int k1,k2,k3,i;
for (k1=1;k1<=9;k1++) for (k2=0;k2<=9;k2++)
8
for (k3=0;k3<=9;k3++)
{ i=k1*k1*k1+k2*k2*k2+k3*k3*k3; if (i==k1*100+k2*10+k3) printf(\
4.编制电视歌手大奖赛评分程序,要求评委人数和每位评委的打分从键盘输入,去掉一个最高分,再去掉一个最低分,求评委给出的最后得分。 main()/* TV大奖赛 */ {int n,i=1;
float x,max,min,sum=0;
printf(\scanf(\
printf(\scanf(\max=x;min=x;sum=x; while (i scanf(\ sum+=x; if (max else if (x printf(\ 5.打印下列图形。 * * * * * * * * * * * * * * * * * * * * * * * * * main() { int i,j; for (i=1;i<=5;i++) { for (j=1;j<=5-i;j++) printf ( \ for (j=1;j<=5;j++) printf (\ printf(\ 第六章 数组 一、选择题 D A D A A C C A D 二、程序阅读题 1 3 5 7 9 11 2 4 6 8 10 12 13 13 13 13 13 13 三、上机实训题 1、分别用冒泡法和选择排序法对十个随机整数进行排序。 参考教材 2、编写一个程序计算字符串中值为x(x由键盘输入)的字符个数。 #include \#include \main() 9 { char a[20],x; int n=0,i=0; printf(\ gets(a); printf(\ x=getchar(); while(a[i]!='\\0') {if (a[i]==x) n++; i++; } printf(\ if(x[i]>ave) printf(\3、编写一个程序判定用户输入的正数是否为“回文数”,所谓回文数是指数正读反读都相同。 #include { int buffer[10],i,k,b; long number,n; printf(\ scanf(\ k=0; n=number; do { buffer[k]=n; k=k+1; n=n/10; } while(n!=0); b=1; for(i=0;i<=(k-1)/2;i++) if(buffer[i]!=buffer[k-1-i]) b=0; if(b) printf(\ else printf(\4、求二维数组的周边元素之和 #include int a[3][3]={{3,-2,1,2},{0,1,3,-2},{3,1,0,4}}; int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) for(i=0;i<3;i++) if (i==0||j==0||j==2||i==2) sum=sum+a[i][i]; printf(\ } 5、编写程序找出一个二维数组的鞍点。即该位置上的元素在该行最大,但是在该列最小。 main() { int i,j,k,max,maxi,maxj,flag1,flag2; int a[2][3]={{1,2,3},{4,5,6}}; flag2=0; for (i=0;i<2;i++) { max=a[i][0]; for (j=0;j<3;j++) if (a[i][j]>max) { max=a[i][j]; maxj=j;} for (k=0,flag1=1;k<2 && flag1;k++) if (a[k][maxj] if (flag1) {printf(\ 10 flag2=1; } } if (!flag2) printf(\ 项目实训: 1、评定奥运会某参赛选手的成绩。设某参赛选手的某项目有8位评委,要求去掉一个最高分和一个最低分,给出其最后得分。 #include int x[N],i,max,min,score=0; printf(\/*输入N个数,存入数组中*/ for(i=0;i { scanf(\ /*赋初值*/ max=min=x[0]; /*将第一个数默认为最大或最小值*/ for(i=1;i if(max printf(\ } 2、 打印出以下杨辉三角形(要求打印出10行)。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ? ? ? ? #define N 11 main() { int i,j,a[N][N]; for (i=1;i { a[i][i]=1;a[i][1]=1;} for (i=3;i for (j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for (i=1;i { for (j=1;j<=i;j++) printf(\ printf(\ printf(\ #define N 11 main() { int i,j,a[N][N]; for(i=1;i a[i][i]=1; a[i][1]=1; 11 } for(i=3;i for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i for(j=1;j<=i;j++) printf(\ printf(\ } printf(\ } 本程序的运行结果为: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 3、一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中。不用strcpy函数。拷贝时,‘\\0’也要拷贝过去。‘\\0’后面的字符不拷贝。 解: #include \main() { char from[80],to[80]; int i; printf(\ scanf(\ for(i=0;i<=strlen(from);i++) to[i]=from[i]; printf(\} 本程序的运行结果为: the result:Input string:student 第七章 函数 一、选择题 B D C B B D A A D 二、程序阅读 1. x=10 2. 7 3. sum=6 4. 4 三、编程题 1、写一个判定偶数的函数,在主函数中输入一个整数,输出是否是偶数的信息。 int even(x) int x ; { if (x%2==0) return(1); else return(0); } 12 main() { int x; scanf(\ if (even(x)) printf(\ else printf(\ 2、统计 400~499 这些数中 4 这个数字出现的次数,要求判断一个数有几位4这个数字用函数实现。 main() { int i,k=0; for(i=400;i<=499;i++) k=k+num(i); printf (\ num(x) int x; { int y,k=0; while(x!=0) { y=x; if(y= = 4) k++; x=x/10; } return(k);} 3、找出1000之内的所有“完数”,要求判断一个数是否为完数用函数实现。 main() { int i; for (i=1;i<1000;i++) if (wan(i)) printf (\ printf (\ wan(x) int x; { int i,k; k=0; for (i=1;i<=x/2;i++) if (x%i= =0) k=k+i; if (k= =x) return (1); else return (0); } 项目实训: 1、已有变量定义和函数调用语句:int x=57;isprime (x);函数isprime ( )用来判断一个整型数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime 函数。 isprime (int a) { } 解: main() { int x=57; int isprime(int); if (isprime(x)) printf(“%d is prime.”,x); else printf(“%d is not prime.”,x); } isprime (int a) {int i; for(i=2;i return 1;} 2、 13 输入10个学生的成绩,分别用函数实现: (1)求平均成绩; (2)按分数高低进行排序并输出。 解:main( ) {float average(float b[]); void sort(float b[]); float a[10],j,aver; printf(\ for(j=0;j<10;j++) scanf(\ aver=average(a); printf(\ sort(a); for(j=0;j<10;j++) printf(\ } float average(float b[ ]) {int j; float sum=0,aver; for(j=0;j<10;j++) sum=sum+b[j]; aver=sum/10.0; return(aver); } void sort(float b[ ]) {int i,j,max,k; for(i=0;i<10;i++) {max=b[i]; k=i; for(j=i+1;j<10;j++) if(max {max=b[j]; k=j;} b[k]=b[i]; b[i]=max; } } 本程序运行结果为: input 10:45 12 86 85 79 84 85 96 45 89 96.00 89.00 86.00 85.00 85.00 12.00 14 84.00 79.00 45.00 45.00
正在阅读:
课后题答案-C语言程序设计03-15
第三节课 光现象 测试题03-31
读书节闭幕式主持词05-05
七江镇校车安全管理工作考核办法05-13
穆斯林演讲稿大全05-31
个人资金归集业务协议10-22
公司人事档案管理制度06-05
完整中职哲学与人生教案12-27
发展和改革局2021年工作总结暨2022年工作计划08-02
小学三年级语文上册期末总复习资料大全02-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 课后
- 程序设计
- 答案
- 语言
- 四年级奥数作业
- 陕西科技大学化工原理试题A
- 精品参考范文(除夕祝福短信)除夕微信红包祝福语(2018)-可编辑修改
- 2018年高考物理二轮复习 专题02 力与物体的平衡(讲)
- 党员在换届选举中心得体会
- 青岛版六年级下册数学第五单元奥运奖牌信息窗2第二课时
- 558圆头锁眼机的维修
- 行政处罚自由裁量权适用规则(节选)
- 《突发事件应对法》讲稿
- 2019-2025年中国食品溯源系统行业市场发展模式调研研究报告 - 图文
- HSE作业指导书
- Word2010公需科目答案96分汇编
- ECT检查时应注意什么
- 2017-2023年中国拉丝机市场发展策略及投资潜力可行性预测报告(目录)
- 2018-2019年小学数学广西三年级专题试卷真题试卷含答案考点及解析
- 《中国革命与中国共产党》读后感
- 政府经济学重点
- 2015年国家公务员考试申论备考:文章写作之体裁篇
- 深圳中级职称电气工程师考试大纲及详解
- 检验科生化组六西格玛室内质量控制标准操作方法