C语言I博客作业07

这个作业属于那个课程
这个作业要求在哪里
我在这个课程的目标是
这个作业在那个具体方面帮助我实现目标
参考文献

1.PTA实验作业

1.1 统计学生成绩

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式

**输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。 **

输出格式

在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例

7
77 54 92 73 60 65 69

输出样例

1 0 2 3 1

1.1.1数据处理

数据表达:

我用了整形变量n,grade,i,a,b,c,d,e,其中n为输入的成绩数量,grade为输入的成绩,i用于判断循环的终止条件,a,b,c,d,e分别为对应成绩等级的人数

数据处理:

开始
i<-1
a=b=c=d=e=0
输入成绩的个数n
for(i<=n;i++)
{
         输入成绩grade   
         grade自除10
         switch(grade)
         {
	grade=10则a++;跳出当前语句
	grade=9则a++;跳出当前语句
	grade=8则b++;跳出当前语句
	grade=7则c++;跳出当前语句
	grade=6则d++;跳出当前语句
	grade=5或4或3或2或1或则e++;跳出当前语句
         }
}
         按顺序输出a,b,c,d,e的值
结束

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
5 60 65 66 23 0 0 0 0 3 2 输入5个成绩,D等的为3个,E等的为2个
6 87 96 75 64 32 33 1 1 1 1 2 输入6个成绩,A等的为1个,B等的为1个,C等的为1个,D等的为1个,E等的为2个

1.1.4 PTA提交列表及说明

1.答案错误:忘记将a,b,c,d,e赋值,导致自加的时候出错,后来将a,b,c,d,e赋值为0;
2.部分错误:将0分的情况丢掉了,后来加上了成绩为0分的情况;

1.2整数的分类处理

给定 N 个正整数,要求你从中得到下列三种计算结果:

  • A1 = 能被 3 整除的最大整数
  • A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
  • A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)

输入格式:

输入首先在第一行给出一个正整数 N,随后一行给出 N 个正整数。所有数字都不超过 100,同行数字以空格分隔。

输出格式:

在一行中顺序输出 A1、A2、A3的值,其间以 1 个空格分隔。如果某个数字不存在,则对应输出NONE

输入样例:

8
5 8 7 6 9 1 3 10

输出样例:

9 3 6.5

输入样例:

8
15 18 7 6 9 1 3 10

输出样例:

18 3 NONE

1.2.1 数据处理

数据表达:

我用了整形变量n,i,number,s,max,sum,count,flag,a,浮点型变量aerage,n为输入的正整数的个数,number为输入的正整数,max为能除断3中的最大值,sum为除3余下2的正整数的总和,s为正整数除以3的余数,count,flag,a,为计数器,分别用于贮存能整除3,除3余1,除3余2,的正整数的个数,average用于储存除3余2的正整数的平均值

数据处理:

开始
count=flag=a=0
输入正整数的个数
for(i=1;i<=n;i++)
{
        输入正整数number
        s<-number%3
        switch(s)
        {
	s=0,
	        if   max<numbe 则 max<-number
	        count++
	       跳出该语句
	s=1  flag++,跳出该语句
	s=2  sum自加number,a++,跳出该语句
        }
if  count=0 输出NONE
esle  输出max
if  flag=0 输出NONE
else     flag
if  a=0  输出NONE
else    avergae<-(sum/a) 输出averagr的值
}
结束

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
4 5 3 8 6 6 NONE 6.5 能除断3的最大数字为6,没有能除3余1的数字,能除3余2的数字的平均值为6.5
9 9 2 5 6 3 2 0 5 6 9 NONE 3.5 能除断3的最大数字为9,没有能除3余1的数字,能除3余2的数字的平均值为3.5
4 4 7 10 13 NONE 4 NONE 没有能除断3的,能除3余1的数字有4个,没有能除3余2的数字

1.2.4 PTA提交列表及说明


pta上面虽然没有错,但是我在devc++上面出过如下错误

段错误:将scanf语句里的&丢掉了,一直输出不了答案,后来将其加上才得以有答案输出。

2.代码互评

(孙梦姣)同学的代码

我的代码

1.她的代码有一个老师经常说到的问题,那就是代码的缩进,这样让读的人看起来很不舒服,如果哪着缩进不规范的代码去问别人,别人一般都是不想看的。
2.我的代码是先定义好变量再赋的值,因为这几变量的值都相等,连等可以让看代码的人更加直观。
3.总的来说,他的代码比我好在switch语句中用default来代替了后面低于60分的人让代码更加简洁,我的代码比她好在我用连等,可以让人更加直观的了解我变量的初始值,而且我的代码缩进比她要规范,如果让别人来选择代码观看,应该会选择我的。

(彭杰)同学的代码

我的代码

1.他的代码也不规范,首先,for循环没打大括号,而且缩进也不好,让我第一眼看下去的时候有点不想看,不过他自己学会去用数组了,但是我觉得这题目不用数组更好一点,因为用数组会加长这题运算的时间
2.我的代码将用来计数的变量和其他的变量分开来写,更加容易让人理解我写的是什么,并且我用英文单词来代表对应的变量,让读代码的人更加清楚明了我写的是什么。
3.他的代码和我的比起来,我的代码更加直观易懂一些,而且我代码的运行速度也比他要快,让别人来选择的话,一般情况都会选择我的。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第六周 25小时 434行 常用的数学函数,if-else语句,for语句,自定义函数 自定义函数不会用一个算法来运算多个式子
第七周 8小时 142行 二分支结构和用char输入字符 对于字符型的代码有点看不懂,getchar与putchar还不明白怎么运用
第八周 12小时 343行 多分支结构,switch语句 switch语句用得有点混乱,搞不清什么时候该结束
第九周 14个半小时 503行 自定义函数的用法,怎样用一个算法来运算多个式子 if语句的嵌套不明白是怎样分支的
第十周 8个半小时 181 do-while,while循环语句和continue语句 continue不知道怎么去运
第十一周 28个小时 1246 一维数组和二维数组的基本运用 数组用的不够熟练,老是犯错

3.2 累积代码行和博客字数

时间 博客字数 代码行数
第四周 645 0
第五周 645 0
第六周 1275 434
第七周 2523 576
第八周 3371 938
第九周 5414 1441
第十周 6930 1622
第十一周 9584 2868

3.3 学习内容总结和感悟

3.3.1 学习内容总结

3.3.2 学习体会!

1.这周一直都在刷题,不知不觉就过了一周了,不过感觉有所提升,学会了一些题目的算法,也会相同的方法去解答一些类似的题目,
2.在学习的过程中发现我们班的人想把C语言学好的人太少了,大家热情都不高,在给同学们打分的时候发现有部分同学都是在敷衍了事,甚至有同学只是交了一个标题,而且互相给的评论也只是敷衍了事,不会去看同学的博客园,这样根本没有达到老师想要的目的。
3.我觉得同学们的学习态度不好,在给同学们看代码错误的时候发现代码很相似,而且问他们为什么这样写,有许多的人说不出,让他讲他的思路给我听也说不出。

原文地址:https://www.cnblogs.com/b1356436060/p/11798275.html