相关文章推荐
5.小于60为E。
输入格式 :输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式 :在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

1.1.1 数据处理

数据表达 :用了变量i,N,consult,A,B,C,D,E,score.其中,N,score是通过直接输入得到的,A,B,C,D,E,i,cousult是通过赋值得到的.变量score为双精度浮点型,变量A,B,C,D,E,i,N,consult为整型.
数据处理 :N表示输入正整数,score表示输入的分数,consult表示分数/10的商,A,B,C,D,E五个变量分别储存五分制五个等级的数目.
所用表达式 :1.A=B=C=D=E=0;consult=score/10;
定义变量,赋值,输入正整数N.
for(i=1;i<=N;i++){
输入N个学生的百分制成绩,consult=score/10;
consult 9||10,A++;break;
consult
8,B++;break;
consult 7,C++;break;
consult
6,D++;break;
consult==其他,E++;break;}
输出A,B,C,D,E的数目

1.1.2 实验代码截图

1.1.3 造测试数据

1. 编译错误 :我定义A,B,C,D,E五个变量分别储存五分制五个等级的数目,我的语句是intA,B,C,D,,E;中间多打了一个逗号。
2. 部分正确 :没有考虑打100分的情况,我用的case 9:A++;break;正确的语句是case 10:case 9:A++;break;
3. 编译错误 :在将100考虑进去之后,我的常量表达式与语句段用的分号隔开,正确的语句是case 10:case 9:A++;break;

1.2 整数的分类处理

给定 N 个正整数,要求你从中得到下列三种计算结果:
A1 = 能被 3 整除的最大整数
A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
输入格式 :输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。
输出格式 :在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE。

1.2.1 数据处理

数据表达 :用了变量N,i,a[100],A1,A2,A3,count,compliment.其中N,a[100]通过直接输入得到.i,A1,A2,A3,count,compliment.通过赋值得来.数据类型全为整型.
数据处理 :N表示输入正整数,i表示循环变量,a[100]表示定义1个数组a,它有100个整型元素,A1表示能被3整除的最大整数,A2表示存在整数K使之可以表示为3K+1的整数的数,A3表示存在整数K使之可以表示为3K+2的所有整数的和,count表示存在整数K使之可以表示为3K+2的所有整数的个数,compliment表示输入正整数与3的余数.
所用表达式 :A1=-1;A2=A3=count=0;compliment=a[i]%3;compliment;0;1;2;A2++;A3+=a[i];
流程结构 :定义变量与赋值,输入正整数N.
for(i=0;i<N;i++){
输入数组a[100]的N个正整数,compliment=a[i]%3;
输入选项compliment
case 0-2,运行相应的语句段;}
if(A1
-1) printf("NONE");
else printf("%d",A1);
if(A2 0) printf(" NONE");
else printf(" %d",A2);
if(A3
0) printf(" NONE");
else printf(" %.1f",A3*1.0/count);

1.2.2 实验代码截图

1.2.3 造测试数据

1. 编译错误 :字母打错,我的代码是sacnf("%d",&N);正确的应该是scanf("%d",&N);
case 0:后面的语句段条件不充分,我的代码是case 0:A1=a[i];break;忽视了a[i]%3 0&&a[i]>A1条件.
正确的语句是case 0:if(a[i]%3
0&&a[i]>A1) A1=a[i];break;
3. 部分正确 :我将数组a定义为int a[N];正确的定义是int a[100];

数组定义: 数组的长度在定义时必须确定,如果无法确定需要处理的数据数量,至少也要估计其上限,并将该上限值作为数组长度.
-- 引用自《C语言程序设计P153》P153

2.代码互评

我的代码 :
同学代码(1) :
代码差异 :1.定义变量不同,同学(1)多定义了一个变量feb,分闰月和非闰月,分别等于29天和28天.
2.同学(1)的代码更加简洁.而且逻辑也非常清晰,这是我没有考虑到的.
3.同学(1)的case后面的语句段是每个月份的天数相加,而我的是直接写出总天数.
我的代码 :
同学代码(2) :
代码差异 :1.定义变量不同,同学(2)在定义变量的时候还一起赋值,这样更加简洁.
2.同学(2)switch语句中的break语句使用方式和我的不同,我每个语句段的末尾都使用break跳出循环.而他只在default后面break跳出循环.
3.求和方式不同,我是先在本子上算出每个月对于的具体天数,而同学(2)使用sum+=去进行加法求和.

3.学习总结

3.1 学习进度条

周数/日期 这周所花的时间 学到的知识点简介 目前比较疑惑的问题 500行左右 if-else的嵌套,学习逻辑运算,条件语句,字符类型以及字符型数据的输入与输出 对字符型数据的输入与输出了解太少,缺乏练习,没有理解到getchar()字符输入函数与putchar()字符输出函数以及它们的运用 第七周(11/05--11/07) 24个小时 720行左右 使用switch语句的三种情况,在switch语句中使用break语句,数组的定义与使用 continue语句的使用,for语句的嵌套循环

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会

在这次课程中,我学习了switch语句与break语句,利用switch语句可以处理多分支选择问题,而switch语句中的break可以有三种不同的用法,以便解决不同需求的问题.而对于本次PTA作业,琛姐强制要求我们用switch语句去解答,有的题可以直接用if-self轻松解决,而用switch反而会更加麻烦,我想老师要求我们去用switch解答是想让我们比较对待不同问题去利用多种方式解答的不同效果与难易程度.许多题目可以利用自定义函数去简化代码.而在C语言的学习上,更多的是靠自学,如果仅仅是上课听老师讲那么一点是完全不够的,如果想在编程学习上走得很远,还需要自己的不懈努力和刻苦钻研.加油! 锲而舍之朽木不折!锲而不舍金石可镂!

 
推荐文章