C语言I博客作业07
一.表格
这个作业属于哪个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-1/homework/9935 |
我在这个课程的目标是 | 把C语言学精,熟练掌握编程技术,努力找到简单代码的写法 |
这个作业在哪个具体方面帮助我实现目标 | PTA上做题,devc++慢慢掌握调试,熟练使用WPS做图形 |
参考文献 | 百度百科,其他同学作业,《C Primer Plus》,教科书 |
二.本周作业
1.PTA实验作业
1.1
题目内容描述:计算天数:本题要求编写程序计算某年某月某日是该年中的第几天。
1.1.1数据处理
- 数据表达:i,y,m,d,sum(变量);运算,赋值(怎么来);int(整型)
- 数据处理:
#include<stdio.h>
int main ()
{
int i,y,m,d,sum;//定义年,月,日为整型
scanf("%d/%d/%d",&y,&m,&d);//输入年,月,日
sum=d;//把天数赋值给sum
for(i等于1;i小于月份;i一直加1){//如果i大于等于月份就退出循环
switch(i){
case 1:case 3:case 5:case 7:case 8:case 10:case 12://数字表示月份
sum=sum+31;break;//当i等于1,3,5,7,8,10,12之中时,结果等于累加的sum,跳出循环
case 4:case 6:case 9:case 11:
sum=sum+30;break;//当i等于4,6,9,11之中时,结果等于累加的sum,跳出循环
case 2:if((y%4==0&&y%100!=0)||(y%400==0))//判断是否为闰年:年份除以4余数为0并且除以100余数不为0或者除以400余数为0
sum=sum+29;//2月有29天
else//不是闰年
sum=sum+28;//2月有28天
}
}
printf("%d",sum);//输出switch语句总sum的值
return 0//程序结束
}
1.1.2实验代码截图
1.1.3造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2002/3/02 | 61 | 题目样例 |
2000/3/02 | 62 | 题目样例 |
2012/12/31 | 366 | 闰年 |
2019/12/31 | 365 | 不是闰年 |
1.1.4PTA提交列表及说明
编译错误:刚开始不知道switch语句用法;看了书之后便会了
部分错误:试了一下用数组写,发现数组里面的不在范围内;我还不熟,还是老老实实用学过的
部分错误:没有认真看题目。
答案错误:月份的大小弄反了
答案错误:输出加了一个&;把&删了
1.2
题目内容描述:给定 N 个正整数,要求你从中得到下列三种计算结果:
- A1 = 能被 3 整除的最大整数
- A2 = 存在整数 K 使之可以表示为 3K+1 的整数的个数
- A3 = 存在整数 K 使之可以表示为 3K+2 的所有整数的平均值(精确到小数点后 1 位)
1.2.1数据处理
数据表达:N,k,A1,A2,i,num,c,A3,sum(变量);赋值,运算(如何来);int(整型);double(浮点型)就A3,sum为浮点型
数据处理:
#include<stdio.h>
int main ()
{
int N,k,A1=0,A2=0,i,num,c=0;//定义i,N,k,A1,A2,i,num,c为整型;其中0赋值给A1,A2,c
double A3,sum=0;//定义A3,sum为浮点型;0赋值给sum
scanf("%d",&N);//输入个数N
for(i等于1;i小于等于N;i一直加1){//直到i大于N,跳出循环
scanf("%d",&num); //输入数
switch(num%3){//数除以三
case 0:if(num>A1)
A1=num;break;//如果余数等于0,并且数比A1大,数的值赋给A1,跳出循环
case 1:A2++;break;//余数为1,A2一直加1,不等于1,跳出循环
case 2:c++;sum=num+sum;A3=sum/c;break;//余数为2,c一直加1,sum等于数+sum,A3为平均数,不满足便跳出循环
}
}
if(A1==0)
printf("NONE ");//如果A1等于0,输出NONE
else
printf("%d ",A1);//相反便输出A1
if(A2==0)
printf("NONE ");//如果A2等于0,输出NONE
else
printf("%d ",A2);//相反便输出A2
if(c==0)
printf("NONE");//如果c等于0,输出NONE
else
printf("%.1f",A3);//相反便输出A3
return 0;//程序结束
}
1.2.2实验代码截图
1.1.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 | 使用题目样例 |
7(空一行)1 3 5 7 9 11 13 | 9 3 8.0 | 随便打7个数 |
6(空一行)1 1 1 2 2 2 | NONE 3 2.0 | 打出重复数 |
1.1.4PTA提交列表及说明
多种错误:第一次出现这种错误,emmm,这个是代码错误和答案错误;我把switch语句一些调了出来,便不是了
部分错误:条件没看清楚;把A1,A2,c赋值为0
答案错误:我定义sum,c都为整型;必须一个为浮点型不然不能显示小数
编译错误:没认真检查,输出加了个&;删除&
2.代码互评
2.1.1 同学代码截图(石柯同学)
2.1.2自己代码截图
- 我们的不同之处.
- 她定义的变量比我少
- 她用if-else结构先判断满足分数的个数,然后再用switch结构输出满足的值;我是直接输入分数除以10,然后直接带入switch结构,带入满足的语句算出个数。
- 她的代码很清晰,我的代码较简单
2.2.1同学代码截图(刘彦同学)
2.2.2自己代码截图
- 我们的不同之处.
- 他用了switch分开判断闰年总天数,和不是闰年总天数
- 他的代码看着像个阶梯有点多,不过这份代码一下子就能理解,我的代码比较简单
- 他对switch语句运用的挺好,这点我应该向他学习
3.学习总结
3.1学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
七/5/11-8/11 | 三天 | 140 | switch语句用法 | 如果x为浮点型,y,z为整型为什么x=y/z答案不对 |
六/28/10-2/11 | 3天 | 130 | 嵌套if-else语句,格式以及如何应用 | 不太清楚Devc++怎么调试 |
五/22/10-25/10 | 3天 | 100 | 用法如何定义函数,格式以及如何应用 | 暂时没有 |
四/15/10- 18/10 | 3天 | 80 | 循环结构,流程图,数学函数 | 数学公式的表达,为什么整数除以变量有一个要用括号括起来还要乘以1.0 |
三/9/10-13/10 | 3天 | 70 | f-else,&&用法,字母%用法,数学函数 | PTA每次答案错误,都十分难找出来。不得已重打 |
3.2累计代码行和博客字数
3.3学习内容总结和感悟
3.3.1学习内容总结
3.3.2学习体会
- 这周学了switch语句,break用法,一大节课不能讲很多内容,但课上的内容真的很容易学
- 这周去ATD课程学了一下数组和?:的用法,不过还是只知道一些皮毛,但我对于c语言理解更深了。
- 题目不难,但刚用switch还是有些乏力,不过经过书籍以及百度,我已经理解了用法,而且可以【case 常量:case 常量:】一直下去
- Devc++调试可能我还是不会,我很好奇:?:是不是等于if-else语句