• C语言I博客作业07


    这个作业属于那个课程 C语言程序设计II
    这个作业属于那个课程 C语言I作业07
    我在这个课程的目标是 希望能够在学完后能够自己做出一个C语言的小游戏
    这个作业在那个具体方面帮助我实现目标 熟练使用分支结构和对switch语句的使用
    参考文献 C语言程序设计

    1.PTA实验作业

    1.1 (7-12统计学生成绩

    本题要求编写程序读入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 数据处理

    • 数据表达:此题定义了九个整型变量i, n, score, x, A, B, C, D, E;i是作为一个中间变量调动循环结构的进行,n主要是用于for循环的第二表达式,用作确定循环次数,score用作输入的同学的分数;x为switch的选择种类;A、B、C、D、E分别为成绩的五个档次。

    • 数据处理:

      #include<stdio.h>
      int main()
      {
      	A = B = C = D = E = 0;
      	输入样本数量;
      	for (i = 1; i <= n; i++)
      	{
      		输入成绩;
      		成绩除10;
      		switch (x)
      		{
      		x=9或10:A自增; 跳出循环;
      		x=8:B自增; 跳出循环;
      		x=7:C自增; 跳出循环;
      		x=6:D自增; 跳出循环;
      		x<6:E自增; 跳出循环;
      		}
      	}
      	按顺序输出A、B、C、D、E;
      	return 0;
      }
      

    1.1.2 实验代码截图

    1.1.3 造测试数据

    输入 输出 说明
    7 77 54 92 73 60 65 69 1 0 2 3 1 同sample,有分数段为0
    1 0 0 0 0 0 1 最小N,最小分数
    1 100 1 0 0 0 0 最大随机N,各个分数段全有,有最大100分

    1.1.4 PTA提交列表及说明

    编译错误:

    1. scanf我打成了scnaf
    2. A,B,C,D,E没有进行初始化处理,后来在定义函数后加上了A = B = C = D = E = 0;

    部分正确:没有考虑到100分的情况,后来是在case 9:后面加上了case 10:

    1.2(7-13整数的分类处理

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

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

    输入格式:

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

    输出格式:

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

    输入样例 1:

    8
    5 8 7 6 9 1 3 10 
    

    输出样例 1:

    9 3 6.5 
    

    输入样例 2:

    8
    15 18 7 6 9 1 3 10
    

    输出样例 2:

    18 3 NONE
    

    1.2.1 数据处理

    • 数据表达:此题定义了五个整形变量i,n,x,A1,A2,num,其中i是作为一个中间变量调动循环结构的进行;n主要是用于for循环的第二表达式,用作确定循环次数;A1 = 能被 3 整除的最大整数;A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数;num为switch的选择种类;此外还定义了三个双精度浮点型变量sum,cnt,A3;sum将作为对于符合x % 3 == 2情况下的数的累加;cnt则是作为对于符合x % 3 == 2情况下的数的数量的的记录;A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值
    • 数据处理:
    #include<stdio.h>
    int main()
    {
    	输入样本数量;
    	for (i = 0; i < n; i++)
    	{
    		输入数值;
    		判断是否符合A1;
    		{
    			选择符合A1的最大值;
    		}
    		判断是否符合A2;
    		{
    			A2++;记录符合A2的数的数量;
    		}
    		判断是否符合A3;
    		{
    			求平均值;
    		}
    	}
    	没有一个符合A1,A2,A3
    	{
    		定义一个标志1;
    	}
    	没有一个符合A2,A3
    	{
    		定义一个标志2;
    	}
    	没有一个符合A1,A3
    	{
    		定义一个标志3;
    	}
    	没有一个符合A1,A2
    	{
    		定义一个标志4;
    	}
    	没有一个符合A3
    	{
    		定义一个标志5;
    	}
    	没有一个符合A2
    	{
    		定义一个标志6;
    	}
    	没有一个符合A1
    	{
    		定义一个标志7;
    	}
    	A1,A2,A3都有符合的
    	{
    		定义一个标志8;
    	}
    	switch (num)
    	{
    	标志1:输出("NONE NONE NONE");跳出循环;
    	标志2:输出("%d NONE NONE", A1);跳出循环;
    	标志3:输出("NONE %d NONE", A2);跳出循环;
    	标志4:输出("NONE NONE %.1lf", A3);跳出循环;
    	标志5:输出("%d %d NONE", A1, A2);跳出循环;
    	标志6:输出("%d NONE %.1lf", A1, A3);跳出循环;
    	标志7:输出("NONE %d %.1lf", A2, A3);跳出循环;
    	标志8:输出("%d %d %.1lf", A1, A2, A3);跳出循环;
    	}
    	return 0;
    }
    

    1.2.2 实验代码截图



    1.2.3 造测试数据

    输入 输出 说明
    8 5 8 7 6 9 1 3 10 9 3 6.5 样例1等价,3种都有
    8 15 18 7 6 9 1 3 10 18 3 NONE 样例2等价,缺第3种
    8 3 6 9 12 15 18 21 24 24 NONE NONE 全被3整除
    8 4 7 10 13 16 19 22 25 NONE 8 NONE 全是3k+1型
    8 5 8 11 14 17 20 23 26 NONE NONE 15.5 全是3k+2型
    1 1 NONE NONE NONE 最小N

    1.2.4 PTA提交列表及说明

    部分正确:第一次的答案错误是由于思路错了的原因,这就不细说了
    部分正确:第二次的答案错误是因为我没有将各种情况都一一进行分类的讨论,而是直接由A1,A2,A3的取值情况进行对num的复制,导致最后switch只能判断最后面的A3情况

    2.代码互评

    赵佳伟同学的代码:

    柏朝晖同学的代码:

    我的代码:

    赵佳伟同学用的是数组进行的输入,这点我之前没有想到,后来自己仔细读了下代码发现用数组来计算简单了很多

    柏朝晖同学与我的代码比较相似,唯一的区别就是他将case 10与case 9是分成两行写的,我是并在一起写的

    3.学习总结

    3.1 学习进度条

    周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
    第六周 20小时 372 if-else语句和数学函数 暂无
    第七周 10小时 226 分支结构 暂无
    第八周 12小时 110 for循环结构 暂无
    第九周 16小时 200 函数的声明,定义和调用 暂无
    第十周 20小时 323 分支结构,字符型数据类型,ASCII码,逻辑运算符 对于字符型数据类型的运用还是不熟练,需要多加练习
    第十一周 18小时 788 分支结构,switch语句,简单的数组的使用 对于数组的了解还是不够,下周还是要多加学习

    3.2 累积代码行和博客字数

    周数 博客字数 代码行数
    4 0 0
    5 828 0
    6 1985 372
    7 4362 598
    8 5711 708
    9 7731 908
    10 9487 1231
    11 11610 2019

    3.3 学习内容总结和感悟

    3.3.1 学习内容总结

    3.3.2 学习体会

    这一周挺充实的,因为许多事情都已经定了下来所以现在没有之前的不确定的感觉,这样挺好的,现在每周二,三的晚上我们现在开始刷题训练了,刷题的感觉还是挺爽的,就是有点上头和耗脑细胞

  • 相关阅读:
    生产环境经常用到的命令
    JDK 安装部署
    oracle备份脚本
    HTTP与HTTPS的区别
    TCP和UDP的优缺点及区别
    Web服务器优化
    DDOS攻击的三种常见方式
    Xss Csrf DDOS sql注入及防范
    session共享
    Cookie防伪造防修改
  • 原文地址:https://www.cnblogs.com/just-like-this/p/11815380.html
Copyright © 2020-2023  润新知