博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言程序设计第五次作业
阅读量:6425 次
发布时间:2019-06-23

本文共 5614 字,大约阅读时间需要 18 分钟。

(一)改错题

输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉。计算公式如下:

c = 5×(f-32)/9
其中,c表示摄氏温度,f表示华氏温度。
输入输出样例1:
  Enter lower:32
  Enter upper:35
  fahr celsius
  32 0.0
  34 1.1
输入输出样例2:
  Enter lower:40
  Enter upper:30
  fahr celsius
源程序(有错误的程序)

#include 
int main(void){ int fahr , lower, upper; /* fahr表示华氏度 */ double celsius; /* celsius表示摄氏度 */ printf("Enter lower:"); scanf("%d",&lower); printf("Enter upper:"); scanf("%d",&upper); printf("fahr celsius\n"); /* 显示表头 */ /* 温度转换 */ for (fahr = lower , fahr <= upper, fahr ++) ; celsius = 5 /9 * (fahr - 32.0); printf("%3.0f %6.1f\n", fahr, celsius); return 0; }

错误1:1253610-20171108212114872-1313286481.png

原因1:在for循环中,分号写成了逗号,而且在括号后加了分号,格式错误

改正1:将逗号改成分号,去掉括号后的分号
进行编译之后有错
错误2:1253610-20171108212920278-1859175208.png

原因2:经检查代码发现输出类型有错,源代码fahr是整型,应用%d,结果用成了%f

改正2:将%f改为%d
编译发现错误3
错误3:1253610-20171108214039294-1597424672.png

原因3:观察发现公式写错了,原公式c = 5×(f-32)/9,而在此处公式 celsius = 5 /9 * (fahr - 32.0);

改正3:将公式改正确
编译出现错误4
错误4:1253610-20171108214636309-1573139616.png

原因4:开始没有观察出什么错误,但是在看了半天之后发现for后边有多条语句,没有加大括号

改正4:在for语句后加上大括号
编译出现错误5
错误5:1253610-20171108215322544-113415147.png

原因5:1253610-20171108215446013-791827773.png

在for循环中,每次都增加,而在输出的情况中,不是每次都输出

改正5:将原题目中的fahr++改为fahr+=2

编译出现正确结果
1253610-20171108220140919-381235409.png

1253610-20171108221027278-2000731106.png

正确代码

#include 
int main(void) { int fahr , lower, upper; /* fahr表示华氏度 */ double celsius; /* celsius表示摄氏度 */ printf("Enter lower:"); scanf("%d",&lower); printf("Enter upper:"); scanf("%d",&upper); printf("fahr celsius\n"); /* 显示表头 */ /* 温度转换 */ for (fahr = lower ;fahr <= upper; fahr +=2) { celsius =5*(fahr-32.0)/9; printf("%d %6.1f\n", fahr, celsius); } return 0; }

(二)学习总结

1.有如下程序:

#include 
int main(){ int i,num,odd,even;odd = 0;even = 0; for(i = 1; i <= 10;i++){ scanf("%d",&num); if(num % 2 == 0) { even++; } else { odd++; } } printf("%d %d",even,odd); return 0; }

第一步:定义整形变量i,num,odd,even

第二步:给整形变量赋值
第三步:执行for循环,给变量i赋值为1,给定循环次数为10,i执行完加1
第四步:输入数据num
第五步:执行if语句,判断输入数据是否能被2整除,若能整除even+1,若不能odd+1
第六步:输出数据even和odd
此程序执行功能是判断输入的数据奇数和偶数的个数
2.增量运算符
(1)运行下面程序,结果是什么?增量运算符在单独使用时,前缀和后缀形式有区别吗?

#include 
int main(){ int i,j;i = 2;j = 2;i++;++j;printf("i = %d\n",i);printf("j = %d\n",j); return 0; }

运行结果是i=3,j =3

增量运算符在单独使用时前缀与后缀形式是没有区别的,只有在混合表达式中才有区别
(2)运行下面的程序,结果是什么?两条输出语句的执行过程是怎样的?说明什么问题?这两条输出语句执行完后,i和j的值分别是多少?

#include 
int main(){ int i,j;i = 2;j = 2; printf("%d\n",i++);printf("%d\n",++j); return 0; }

运行结果1253610-20171111185416138-73739806.png

第一条输出语句是先输出i的值,然后执行i++
第二条语句是先把j的值加1,然后输出,说明在表达式计算中,前缀与后缀的计算结果是不一样的
执行完结果是i =2,j=3
3.有些循环语句后面有{},有些没有,有些语句有缩进,运行下面的四个小程序,运行结果有什么不同?循环体的认定与缩格形式是否有关?与{}是否有关?那么,应该如何正确判断一个循环语句中的循环体?下面的程序中,哪几种格式是正确的缩进格式。
(1)

#include 
int main(){ int i;for(i = 1;i <= 5;i++) printf("*");printf("\n"); return 0; }

(2)

#include 
int main(){ int i;for(i = 1;i <= 5;i++) printf("*"); printf("\n"); return 0; }

(3)

#include 
int main(){ int i;for(i = 1;i <= 5;i++){ printf("*"); printf("\n");}return 0; }

(4)

#include 
int main(){ int i;for(i = 1;i <= 5;i++){ printf("*");} printf("\n");return 0; }

1253610-20171111190758919-1333637241.png

1253610-20171111190908934-442035206.png
1253610-20171111191040481-648723946.png
1253610-20171111191131778-1584406002.png

由以上的运行结果可知循环体的认定与缩格形式无关但是与{}有关,{}里边的是循环体,外边的则不进入循环,(3)(4)缩进是正确的

(三)实验分析

一:(1)题目
本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
输入格式:
输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。
输出格式:
按照以下格式输出:
average = 成绩均值
count = 及格人数
其中平均值精确到小数点后一位。
(2)流程图
1253610-20171110180918481-1716884431.png
1253610-20171110180939403-2053182888.png

(3)源代码

#include
int main(){int n,count,i,sum,score;float average=0;sum=0,count=0,score=0;scanf("%d",&n);for(i=1;i<=n;i++) { scanf("%d",&score); sum=sum+score; if(score>=60) count+=1; } if(n>0) { average=(float)sum/n;printf("average = %.1f\n",average);printf("count = %d\n",count);} else {printf("average = %.1f\n",average);printf("count = %d\n",count); }return 0; }

(4)实验分析

错误1:不知道强制转换怎么弄,输入整形如何转换成浮点型,输出显示总是0,研究了很久
改正1:查了资料,又试了几次,才将结果弄正确

(5)提交列表

1253610-20171110130013169-450452623.png

二:

(1):题目
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。
输入格式:
输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。
输出格式:
为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!。
(2)流程图
1253610-20171111211924184-1198242475.png

(3)源程序

#include
int main(){int i,N,x;double a,b,y;scanf("%d",&N);for(i=0;i
=(a+b)) { printf("You are tai pang le!\n"); } else if(y<=(a-b)) { printf("You are tai shou le!\n"); } else { printf("You are wan mei!\n"); }}return 0;}

(4)实验分析

首先没有读懂题目的意思,不知道怎么做,研究了很久,和同学交流才做对的
(5)提交列表
1253610-20171110182151153-1417518812.png
1253610-20171110182249075-1738526485.png
1253610-20171110182327028-2037653798.png

三:(1)题目

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
(2)流程图
1253610-20171111201905122-1871829018.png
1253610-20171111201919559-1683691709.png

(3)源程序

#include
int main(){int n,i,score,y=0,l=0,j=0,h=0,c=0;scanf("%d",&n);for(i=1;i<=n;i++){ scanf("%d",&score); if(score>=90) y=y+1; else if(score>=80) j=j+1; else if(score>=70) h=h+1; else if(score>=60) l=l+1; else c=c+1;}printf("%d %d %d %d %d",y,j,h,l,c);return 0; }

(4)实验分析

此题没有什么太大难度,比较简单
(5)提交列表
1253610-20171110183708294-1736670806.png

四:(1)题目

本题要求编写程序,找出给定一系列整数中的最小值。
输入格式:
输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
输出格式:
在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
(2)流程图
1253610-20171111201515481-409689407.png

(3)源程序

#include
int main(){int n,i,min,number;scanf("%d",&n);scanf("%d",&number);min=number;for(i=2;i<=n;i++){scanf("%d",&number);if(min>number){min=number;}}printf("min = %d",min);return 0; }

(4)实验分析

不知道先与哪个数比较,没有一个值在内容中可以与之比较,得先输入一个值记录
(5)提交列表
1253610-20171110184024825-1909910889.png
四:博客互评
(1)陈魔:
(2)vahalla:
(3)曲儿说:

转载于:https://www.cnblogs.com/xing--/p/7806535.html

你可能感兴趣的文章
J2EE十三个规范小结
查看>>
算法(第四版)C#题解——2.1
查看>>
网关支付、银联代扣通道、快捷支付、银行卡支付分别是怎么样进行支付的?...
查看>>
大数据开发实战:Stream SQL实时开发一
查看>>
C++返回引用的函数例程
查看>>
dll 问题 (转)
查看>>
REST API用得也痛苦
查看>>
test for windows live writer plugins
查看>>
Tiny210 U-BOOT(二)----配置时钟频率基本原理
查看>>
代理模式
查看>>
javaweb学习总结(二十四)——jsp传统标签开发
查看>>
让script的type属性等于text/html
查看>>
linux 文件系统sysvinit 流程分析
查看>>
体素科技:2018年,算法驱动下的医学影像分析进展
查看>>
Vue 折腾记 - (8) 写一个挺靠谱的多地区选择组件
查看>>
VS Code折腾记 - (3) 多图解VSCode基础功能
查看>>
『翻译』Node.js 调试
查看>>
我的iOS开发之路总结(更新啦~)
查看>>
Java NIO之拥抱Path和Files
查看>>
微信原图泄露的只能是 Exif ,你的隐私不在这!!!
查看>>