问题 |
答案 |
这个作业属于那个课程 |
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语句的关键在于那个常量表达式,如果没有理清关系,就会导致答案出错。当然,这都需要自己去不断努力,而且还得需要不断坚持多练,才可以让自己变得更加优秀。