C语言I博客作业07

问题 回答
这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 C语言I博客作业07
我在这个课程的目标是 完全独立的编译一个小游戏程序并正常运行。
这个作业在那个具体方面帮助我实现目标 掌握多个确定条件的情况,掌握多分支结构switch语句的使用
参考文献 《C语言程序设计》《C Primer Plus》

1.PTA实验作业

1.1计算天数

本题要求编写程序计算某年某月某日是该年中的第几天.

1.1.1数据处理

数据表达:变量i,year,month,day,sum,用int定义而来,类型为整型。
数据处理:条件表达式,关系表达式,逻辑表达式和switch语句分支结构。

定义要输入的变量年月日,循环次数i,与天数的和;
调用scanf函数输出年月日;
switch语句(月份的选择)
{
case 1:输入为1月份时的天数和;break;
case 2:输入为2月份时的天数和;break;
case 3:输入为3月份时的天数和;break;
case 4:输入为4月份时的天数和;break;
case 5:输入为5月份时的天数和;break;
case 6:输入为6月份时的天数和;break;
case 7:输入为7月份时的天数和;break;
case 8:输入为8月份时的天数和;break;
case 9:输入为9月份时的天数和;break;
case 10:输入为10月份时的天数和;break;
case 11:输入为11月份时的天数和;break;
case 12:输入为12月份时的天数和;break;
default:printf函数输出错误;break;
}
总天数=月份天数和+输入日期的天数;
if(判断是否为闰年)
{
if(判断输入月份是否大于二)
{
满足以上条件,总天数和+1;
}
}
ptintf输出总天数和;
返回零;
}

1.1.2实验代码截图


1.1.3 造测试数据

输入 输出 说明
2001/10/10 283 非闰年
2012/01/24 24 闰年
2019/11/07 311 非闰年

1.1.4 PTA提交列表及说明

1.编译错误:case与数字之间应该空格,之前没空显示编译错误。

1.2 统计学生成绩

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。

1.2.1 数据处理

数据表达:用int定义变量i,N,grade,shu,ABCDE,类型为整型。
数据处理:条件表达式,赋值表达式,和switch语句分支结构。

定义循环次数,个数,除数,五个等级变量并赋值为零;
调用scanf函数,输入个数n;
for(循环的初始,条件,变化)
{
scanf输入变量成绩;
求出出数;
switch(除数)对应不同case
{
case 10:
case 9:A等级个数自增;break;
case 8:B等级个数自增;break;
case 7:C等级个数自增;break;
case 6:D等级个数自增;break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:E等级个数自增;break;
}
}
ptintf输出五个等级个数;
返回零;
}

1.2.2 实验代码截图

1.2.3 造测试数据

输入 输出 说明
5
45 84 37 97 35
1 1 0 0 3 成绩相差大
5
55 66 77 88 99
1 1 1 1 1 成绩分布平均
5
56 67 78 68 88
0 1 1 2 1 成绩相差小

1.2.4 PTA提交列表及说明

1.编译错误:switch语句后面需要用{}括起来
2.编译错误:case与后接数字之间应空格
3.编译错误:将应该分开写的case 1;case 2;.....写成case 1.2.3....;
4.答案错误:在int定义的ABCDE时忘记赋值为零,系统直接默认定义为一,所以答案错误,将ABCD赋值为零。
5.答案错误:在输出中各数之间应空格,所以%d之间应有空格。

2.代码互评

同学代码截图


自己代码截图

1.两位同学的思路都是将二月分成两种情况,一种是闰年的一种不是闰年的,然后分开书写,但我觉得这样代码比较繁琐,而且观看起来比较吃力的感觉,认为自己的代码可能更简便一些。
2.同学都是在case语句后面调用printf函数输出来表达天数,而我直接定义一个天数和的变量。
3.同学的代码虽乍一看比较麻烦,但是多看一会也能看懂,我的可能需要看久点来慢慢分析各代码的含义。不易让人读懂。

3.学习总结

3.1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第三周10.9-10.12 两天 188 对代码数据的处理了解,比如类型结构等 什么时候用int,double声明变量,逻辑运算符的运用等
第四周10.16-10.18 一天半 190 如何用double型数据使用lf%,怎样在程序中用for语句实现循环,可指定循环次数 循环体中的关系表达式的正确运用
第五周10.23-10.26 两天 226 运算符的优先级顺序,自定义函数的编写,对数据参数的了解 具体如何在题目中定义函数,参数又应放在哪里才是正确位置
第六周10.30-11.2 三天 348 分支结构应用,逻辑运算符的使用 在使用if-else语句时{}的位置与格式,语句一多就搞不清楚了
第七周11.5-11.8 两天半 300 switch语句作为分支结构应用 伪代码到底该如何编写,写的详细和正规代码没什么两样,写的粗略思路又不够清晰

3.2 累积代码行和博客字数

3.3 学习内容总结和感悟

3.3.1 学习内容总结

1.switch语句用于分支选择。
2.switch语句的执行过程:先计算关键字switch后的表达式的值,然后在各个case语句里查找哪个值和这个表达式的值相等,如果相等,程序执行相应的分支语句后继续往下执行,直到碰上break语句或switch语句的结束。
3.case语句后面跟的必须是常量或常量表达式,并且之间要空格。
4.在case后面的各常量表达式的值不能相同,否则会出现错误。
5.在case后面,允许有多个语句,可以不用{}括起来。
6.各case语句和default的顺序可以变动,default语句可以省略不用。

3.3.2 学习体会

  • 本次课程新加了伪代码的书写,便于理清思路,能够快速准确的写出代码。
  • 对编代码渐渐得心应手了。
  • 在编程过程中遇到困难是难免的,自己会主动查找相关资料,甚至是拓展开的相关知识点进行学习。
原文地址:https://www.cnblogs.com/oyxyoyxyo/p/11795811.html