C语言I博客作业07

问题 答案
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 作业链接
我在这个课程的目标是 学会并掌握C语言基本知识,能够相关C语言的各种代码
这个作业在那个具体方面帮助我实现目标 学会使用switch语句
参考文献 C语言程序设计(第3版)、百度、360浏览器

1.PTA实验作业(20分/题)

1.1 7-12 统计学生成绩 (15 分)

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

1.1.1数据处理

数据表达:我用了N、i、mark、sum、A、B、C、D、E这些变量,其中N和mark都是用scanf函数来赋值,i定义初始值为1,sum是用if-else语句来进行赋值,A、B、C、D、E定义初始值都为0,它们都是整型;
数据处理:数据用到的表达式为for(i=1; i<N; i++)、case 常量表达式: 语句段;流程结构用了for循环、if-else语句、switch语句
伪代码:
    Begin(算法开始)
    输入N的值
    for(i=1; i<=N; i++)  //进行for循环
    输入mark
    if mark>=90
    则sum=1
    if mark>=80
    则sum=2
    if mark>=70
    则sum=3
    if mark>=60
    则sum=4
    else sum=5
    switch(sum)
    case 1: A累加; 退出; 
    case 2: B累加; 退出;
    case 3: C累加; 退出;
    case 4: D累加; 退出;
    case 5: E累加; 退出;
    输出A、B、C、D、E的值 
    End(算法结束)

1.1.2实验代码截图

1.1.3 造测试数据

输入数据 输出数据 说明
7,77 54 92 73 60 65 69 1 0 2 3 1 用题目所给数据
5,100 100 100 100 100 5 0 0 0 0 都为满分
5,90 80 70 60 50 1 1 1 1 1 五分制中都有人

1.1.4 PTA提交列表及说明

提交列表说明:
    1.答案错误:在后面出现了sum这个变量,而在前面没有定义sum;
    2.答案正确:int后面加一个sum答案就正确了。

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

题目内容描述:给定 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、a1、a2、k、max、number、sum、integer这9个变量,其中i、a1、a2、k、max、sum定义的初始值为0,n和integer通过scanf函数来赋值,number是通过if判断语句来进行赋值,除了sum是浮点型,其余都是整型;
数据处理:数据用到的表达式为for(i=0; i<n; i++)、integer%==1~3、case 常量表达式:语句段;流程结构用了for循环、if-else语句、switch语句;
伪代码:
    Begin(算法开始)
    int n,i,integer,a2=0,a1=0,k=0,max=0,number;
    double sum=0;
    输入n值
    for(i=0; i<n; i++)
    输入integer值
    if integer%3==0
    则number=1{
    if integer>max
    则max=integer}
    if integer%3==1
    则number=2
    if integer%3==2
    则number=3
    k累加1
    switch (number)
    case 1: 把max的值赋给a1; 退出;
    case 2: a2累加; 退出;
    case 3: sum不断累加integer的值; 退出;
    if a1==0
    则输出NONE
    否则输出a1的值
    if a2==0
    则输出NONE
    否则输出a2的值
    if sum==0
    则输出NONE
    否则输出sum/k的值
    End(算法结束)

1.2.2 实验代码截图

1.2.3 造测试数据

输入数据 输出数据 说明
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 题目所给数据
5,6 2 1 4 5 6 2 3.5 随机数

1.2.4 PTA提交列表及说明

提交列表说明:
    1.编译错误:后面用到a1而前面没有定义a1;
    2.多种错误:有两个表达式用错变量;
    3.格式错误:在printf输出时都在输出变量后面空格,然后都改在前面空格;
    4.格式错误:在第一个printf("NONE")表达式中也在前面空格;
    5.答案正确:改正错误后答案正确。

2.代码互评(5分)

题目:7-10 计算天数

同学代码截图

自己代码截图

不同之处:
    1.定义的变量不同;
    2.switch语句里面的语句表达式不同,第一个同学只写了平年的表达式,第二个同学分大月、小月;
    3.switch语句末尾用了default。

3.学习总结(15分)

3.1 学习进度条(5分)

这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周(9/17-9/22) 5小时 43行 学会写最简单的代码
第二周(9/24-10/4) 6小时 62行 学会温度转换
第三周(10/6-10/13) 11小时 86行 学会写函数程序 不知道怎么在什么情况下调用scanf()函数
第四周(10/14-10/20) 10小时 105行 for循环语句和循环结构 不知道定义多少个变量
第五周(10/21-10/27) 10.5小时 114行 学会怎样去定义一个函数和它的基本格式 对于函数题的编程不知道该怎么样去设计
第六周(10/28-11/3) 12小时 135行 学会二分支结构和if-else语句 对于输入一个正整数,然后输入对应数量的数值的代码编写存在迷惑
第七周(11/4-11/10) 13.5小时 173行 学会怎样用switch简化代码的复杂性 使用switch语句时怎么能够很好的与其他语句很好的衔接

3.2 累积代码行和博客字数(5分)

3.3 学习内容总结和感悟(5分)

3.3.1 学习内容总结

这周我们学习了C语言中的switch语句,switch有的时候可以简化if-else语句的繁琐性,还可以实现多分支结构,当符合条件时用break跳出然后输出。switch语句要与前面有很好的衔接,而且要思考怎么去设计常量表达式可以体现出程序有条不紊。

3.3.2 学习体会

这一周的PTA作业题目的量减少了好多,但是题目的难度系数越来越大,而且老师规定必须每个题目要用switch语句,有些题目好用,但有些题目感觉上不怎么好用,因为我理不清逻辑关系,并且还存在题目都没有看懂。我觉得switch语句的关键在于那个常量表达式,如果没有理清关系,就会导致答案出错。当然,这都需要自己去不断努力,而且还得需要不断坚持多练,才可以让自己变得更加优秀。
原文地址:https://www.cnblogs.com/classtest123/p/11808715.html