(一)改错题

输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉。计算公式如下:
c = 5×(f-32)/9
其中,c表示摄氏温度,f表示华氏温度。
源程序(有错误的程序)

#include <stdio.h>
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):

错误原因:for后面不加分号;

改正方法:把for()后面的分号去掉。

错误信息(2):

错误原因:for括号里面的符号错误。

改正方法:把for括号里面的逗号改为分号。

错误信息(3):

错误原因:编译没错误,但是运行结果出错,检查后发现for下面没有花括号,并且循环条件也有误,应该是加2,而不是加1

改正方法:for下面的语句用花括号括起来,把for++改为for+2,如图:

错误信息(5)

错误原因:公式错误,

改正方法:

错误信息:

错误原因:输出与定义的类型不符,

改正方法:把第十六行括号里边的%f改为%d,如图:

运行后结果无误,如图:

改后程序:

(二)学习总结

1.有如下程序:

include <stdio.h>

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;
}
详细描述程序的执行过程,即说明程序的每一步是执行的哪条代码,执行顺序如何。循环需描述前两次循环和最后一次循环的详细执行过程。最后说明程序实现的功能是什么。

答:由上至下依次进行
1、定义整形变量(int类型),i、num、odd、even;
2、给odd赋值为零,
3、给even赋值为零。
4、定义i=1
5、判断i是否小于等于10,如果i《=10成立进行下一步,否则结束
6、如果成立,输入num的值
7、如果num对2取余为0,令even=even+1
8、如果num对2取余不为0,则令odd=odd+1
9、然后执行i=i+1
10、继续判断条件i<=10
11、如此循环,直到i>10
12、结束循环,输出even和ood的值。

功能:判断输入的十个数中奇数和偶数的个数。

2.增量运算符
(1)运行下面程序,结果是什么?增量运算符在单独使用时,前缀和后缀形式有区别吗?

include <stdio.h>

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

答:运行结果:

增量运算符在单独使用时没区别,运行结果都一样。

(2)运行下面的程序,结果是什么?两条输出语句的执行过程是怎样的?说明什么问题?这两条输出语句执行完后,i和j的值分别是多少?

include <stdio.h>

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

结果:

i++为后缀的形式,先执行的是输出i=2,然后再执行i ++,所以输出的是i=2;++j为前缀,先执行j=2,j+1,然后再执行输出,所以输出的结果是j=3。所以说明增量运算符在语句中使用时不同,前缀形式的增量,先对被赋予增量的变量的值执行增/减量操作再执行后续运算;而后缀则相反,先执行其他运算,再将变量的值执行增/量操作。因此,在编程序等实际应用中,要注意变量的增量运算符的使用方法。

3.有些循环语句后面有{},有些没有,有些语句有缩进,运行下面的四个小程序,运行结果有什么不同?循环体的认定与缩格形式是否有关?与{}是否有关?那么,应该如何正确判断一个循环语句中的循环体?下面的程序中,哪几种格式是正确的缩进格式。

(1)

include <stdio.h>

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

(2)

include <stdio.h>

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

(3)

include <stdio.h>

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

(4)

include <stdio.h>

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

运行结果:
(1)

(2)

(3)

(4)

答:1,2,4输出的一行5,而3输出的是一列5。1和2程序就只有两个printf这个语句有区别,第二个有缩格,但是输出的结果是一样的,所以循环体的认定与缩格形式无关。 2和3程序,区别在于多了一个花括号{},但是输出结果不同,在比较一下3和4程序都有花括号{}但是括号的范围不同,结果不同,当printf("\n")在花括号外面时,就不参与循环,结果就不会换行,所以输出结果与{}有关,因此在我们判断的时候我们要看for后面有没有大括号在进行运行。

4.对其他你认为需要进行总结的内容进行总结。
本章我们学的主要是循环语句,内容比较繁琐,一定要细心,还要知道循环语句的控制条件是break和continue;break只能终止并跳出最近一层的结构。break只能用于循环语句和switch语句中。在循环语句中,break语句一般都是与if语句一起使用,continue语句只结束本次循环,而不是终止整个循环的执行。

(三)实验总结

1.统计学生平均成绩与及格人数

(1)题目
本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。

(2)流程图

(3)源代码

include<stdio.h>

int main()
{
int n,count=0,i,a;
double average=0;
scanf("%d",&n);

if(n==0)
{printf("average = %.1f\n",average);printf("count = %d",count); } else{for(i=1;i<=n;i++)
{scanf("%d",&a);average=average+a;if(a>=60){count=count+1;}else{count=count;}
}average=average/(double)n;printf("average = %.1f\n",average);printf("count = %d",count);}

return 0;
}

(4)测试数据及运行结果

(5)实验分析

本题条件语句较多,要注意花括号是否正确,其余没有什么太大的问题。

(6)本题PTA提交列表

2.到底是不是太胖了

(1)题目
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。
(2)流程图

(3)源代码

include<stdio.h>

include<math.h>

int main()
{
int n,h,w,i;
double x,y;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&h,&w);
if(h<=120&& h>=200 ||w<=50&& w>300)
{
printf("chao chu fan wei!");
}
else
{
x=w-(h-100)0.92;
y=fabs(x);
if(y<(h-100)0.920.1)
{
printf("You are wan mei!\n");
}
else if(x>(h-100)
0.920.1)
{
printf("You are tai pang le!\n") ;
}
else
{
printf("You are tai shou le!\n");
}

    }}
return 0;

}

(4)实验分析
对于完美身材的的判定有误差,总是不符合条件的也会判定为完美身材。原因是运用公式的时候有错误,绝对值被忽略,要加入fabs函数。

(5)本题PTA提交列表

3.统计学生成绩

(1)题目
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
(2)流程图

(3)源代码

include<stdio.h>

int main()
{
int i=1,n,mark,A=0,B=0,C=0,D=0,E=0;
scanf("%d\n",&n);
for(;i<=n;i++)
{
scanf("%d",&mark);
if(mark>100)
{
printf("mark is error");
}
else if(mark>=90)
{
A=A+1;

     }else if(mark>=80){B=B+1;}else if(mark>=70){C=C+1;}else if(mark>=60){D=D+1;}else{E=E+1;}}
printf("%d ",A);
printf("%d ",B);
printf("%d ",C);
printf("%d ",D);
printf("%d",E);return 0;

}
(4)实验分析

本题比较容易,只要注意每个判断时的条件运用正确就好。

(5)本题PTA提交列表

4.找出最小值

(1)题目
本题要求编写程序,找出给定一系列整数中的最小值。
(2)流程图

(3)源代码

include<stdio.h>

int main()
{
int a,n,i,min=32767;
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d",&n);
if(n<=min)
min = n;
else
min = min;
}
printf("min = %d",min);
return 0;
}

(4)实验分析
做本题时一定要注意min在一开始的赋值不是一,而是应该是一个超出变量范围的最大数。
(5)本题PTA提交列表

(四)博客互评
吴晗:http://www.cnblogs.com/moying456/p/7820181.html
何强:http://www.cnblogs.com/jjjj1234/p/7821160.html
李仁正:http://www.cnblogs.com/lrxlrz/p/7809529.html

转载于:https://www.cnblogs.com/panjiupeng/p/7819984.html

C语言程序设计第五次作业相关推荐

  1. C语言程序设计第五次作业——循环结构(1)

    (一)改错题 1.题目 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5 ...

  2. C语言程序设计第五次作业——循环结构1

    (一)改错题 输出华氏摄氏温度转换表:输入两个整数lower和upper,输出一张华氏摄氏温度转换表,华氏温度的取值范围是{lower,upper},每次增加2℉.计算公式如下: c = 5×(f-3 ...

  3. 东北大学java期末试卷,[东北大学]18年6月考试《Java语言程序设计I》考核作业(答案)...

    Java语言程序设计 I    试 卷(作业考核 线上)  B  卷 学习中心:            院校学号:             姓名 (共        页) 总分 题号 一 二 三 四 ...

  4. C++语言程序设计第五版 - 郑莉(第六章课后习题)

    第6章   数组.指针与字符串 6-20 实现一个名为 SimpleCircle 的简单圆类.其数据成员 int* itsRadius 为一个指向其半径值的指针,存放其半径值.设计对数据成员的各种操作 ...

  5. C++语言程序设计第五版 - 郑莉(第四章课后习题)

    第4章  类与对象 4-9设计并测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角坐标,根据坐标能计算矩形的面积. #include <iostream> using n ...

  6. C++语言程序设计第五版 - 郑莉(第七章课后习题)

    第7章  继承与派生 7-5 定义一个基类 Shape,在此基础上派生出 Rectangle 和 Circle,二者都有 getArea()函数计算对象的面积.使用 Rectangle类创建一个派生类 ...

  7. C++语言程序设计第五版 - 郑莉(第五章课后习题)

    第5章  数据的共享与保护 5-7定义一个Cat类,拥有静态数据成员 numOfCats,记录Cat的个体数目:静态成员函数getNumOfCats(),读取numOfCats.设计程序测试这个类,体 ...

  8. C++语言程序设计第五版 - 郑莉(第九章课后习题)

    第9章  群体类和群体数据的组织 9-1 编写程序提示用户输入一个班级中的学生人数 n,再依次提示用户输入 n 个人在课程 A 中的考试成绩,然后计算出平均成绩,显示出来.请使用本书第 9 章中的数组 ...

  9. C++语言程序设计第五版 - 郑莉(第二章课后习题)

    第2章  C++简单程序设计 2-25 编写一个完整的程序,实现功能:向用户提问"现在正在下雨吗?",提示用户输入Y 或N.若输入为Y,显示"现在正在下雨.": ...

  10. C++语言程序设计第五版 - 郑莉(第十一章课后习题)

    第11章  流类库与输入输出 11-3 使用 I/O 流以文本方式建立一个文件 test1.txt,写入字符"已成功写入文件!",用其他字处理程序(例如 Windows 的记事本程 ...

最新文章

  1. 二元学习法3.0:三把学习大剑,打通学习的底层密码_学习方法
  2. python3.X 使用schedule实现定时任务
  3. STM32_DMA 标准初始化设置解释
  4. 在UE中自由绘制基本图元的几种方法
  5. 如何获取android源码
  6. iphone电池怎么保养_手机电池不耐用怎么办啊?平时要怎么保养呢?我来告诉你...
  7. Linux搭建测试环境步骤
  8. 解决笔记本拔掉电源线和插上电源线鸣笛问题
  9. 微信小程序:独家全新娱乐性超高的喝酒神器
  10. CMOS基础知识(一)
  11. Excel-VBA:文本转换数字
  12. 视频文件(任意文件)二进制读写
  13. 【转】MIT牛人解说数学体系
  14. FICO凭证错误:BKPFF$PRDCLN800在FI中达到的项目最大编号
  15. 软件工程大作业进度报告
  16. 高中数学数列公式7种方法(方法全,例子全,归纳细)
  17. console.log()用法
  18. 数学分析:数项级数的概念
  19. linux断电分区表丢失,linux修复丢失的分区表
  20. 2020-09-28-浙江大学软件学院面试有感

热门文章

  1. 密码学-密钥管理与分发
  2. 【DVB】【Cert】DVD相关认证简介
  3. PostScript语言教程(一、介绍)
  4. asa清空配置_思科ASA基本配置
  5. HTML5中英文对照字典,VRay中英文对照表
  6. 17个好用免费的ftp软件工具推荐,支持中文
  7. Java 的package 機制 王森
  8. 三国演义人物出场次数统计
  9. 注册了DELPHI盒子
  10. css_径向渐变 radial-gradient()/css generator样式生成器