C语言I博客作业07
一、本周教学内容&目标
第3章 分支结构 3.1-3.2 使学生熟悉多分支结构、字符型数据类型和逻辑运算符。
二、本周作业头
问题 | 答案 |
---|---|
这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/2019TA/homework/9927 |
我在这个课程的目标是 | 掌握字符型数据类型以及了解逻辑运算符的优先级 |
这个作业在那个具体方面帮助我实现目标 | 练习markdown语法以及自主寻找资料的能力 |
参考文献 | 百度 博客 |
三、本周作业##
1. PTA作业###
**1.1 7-13 整数的分类处理 **.
1.1.1 数据处理
-
数据表达:提出整形A1,A2,浮点型A3,提出的number[101]用于存储输入的正整数,count作为计数器记录符合A3条件的正整数个数,i用于for循环,n表示将要输入的正整数个数;
-
数据处理:
#include<stdio.h>
int main(void)
{
int n, i, A2 = 0, A1 = 0;
//提出整形的A1,A2并赋值为0
double A3 = 0;
//提出浮点型来存储平均值
int number[101];
//提出数组来存储给的N个正整数
int count=0;
//用于计算A3是由多少个值相加而来
scanf("%d\n", &n);
// 输入将要输入多少正整数
for (i = 0; i < n; i++)
// 进行循环
{
scanf("%d", &number[i]);
// 输入正整数
if ((number[i] % 3 == 0) && (number[i] > A1))
// 判断能否被3整除,并且进行比较
{
A1 = number[i];
// 找出符合A1条件的最大值
}
else;
switch ((number[i]-1)%3)
// 取余
{
case 0:
A2++;
// 为0符合A2条件,使A2加一
default:
break;
}
switch ((number[i]-2)%3)
// 取余
{
case 0:
A3 += number[i];
// 符合A3的正整数相加得到和
count++;
// 符合 A3条件的正整数的个数
default:
break;
}
}
if (count != 0)
// 判断存在不存在A3条件的正整数
{
A3 = A3 / count;
// 存在就得到平均数
}
switch (A1)
{
case 0:
printf("NONE ");
// 判断符合A1的正整数存在否
break;
default:
printf("%d ",A1);
// 存在就输出A1
break;
}
switch (A2)
{
case 0:
printf("NONE ");
// 判断符合A2的正整数存在不
break;
default:
printf("%d ",A2);
// 存在输出A2
break;
}
if (A3 == 0)
//判断A3存在正整数不
printf("NONE");
else
printf("%.1f", A3);
//并进行相应的反应操作
return 0;
}
1.1.2 实验代码截图
给定 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.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
3 1 2 3 | 3 1 2.0 | 随机输入 |
3 4 7 10 | NONE 3 NONE | 输入正整数都符合A2 |
2 5 8 | NONE NONE 6.5 | 输入正整数都符合A3 |
3 3 6 9 | 9 NONE NONE | 输入正整数都符合A1 |
1.1.4 PTA提交列表及说明
1.部分正确:未得到平均值,只是得到了总和,添加count计数参与相加的正整数个数,让总和除以count来得到平均值;
2.部分正确:同上(出现这个答案错误是因为我想查看提交结果)
3.答案正确:....
**1.2 7-10 计算天数 **.
1.2.1数据处理
- 数据表达:提出用于输入年月日的整形year,month,day,以及来计算天数的整形sum;
- 数据处理:
#include<stdio.h>
int main()
{
int year = 0, month = 0, day = 0;
// 提出年月日
int sum = 0;
// 计算天数
scanf("%d/%d/%d", &year, &month, &day);
// 输入年月日
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
// 判断闰年
{
switch (month)
// 通过月来判断
{
case 12:
sum += 30;
case 11:
sum += 31;
case 10:
sum += 30;
case 9:
sum += 31;
case 8:
sum += 31;
case 7:
sum += 30;
case 6:
sum += 31;
case 5:
sum += 30;
case 4:
sum += 31;
case 3:
sum += 29;
case 2:
sum += 31;
//sum来计算天数
default:
break;
}
}
else
// 非闰年的操作
{
switch (month)
{
case 12:
sum += 30;
case 11:
sum += 31;
case 10:
sum += 30;
case 9:
sum += 31;
case 8:
sum += 31;
case 7:
sum += 30;
case 6:
sum += 31;
case 5:
sum += 30;
case 4:
sum += 31;
case 3:
sum += 28;
case 2:
sum += 31;
default:
break;
}
}
sum = sum + day;
// 加上当前月份的天数
printf("%d", sum);
// 输出天数
return 0;
}
1.2.2 实验代码截图
本题要求编写程序计算某年某月某日是该年中的第几天。
输入格式:####
输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
输出格式:####
在一行输出日期是该年中的第几天。
输入样例1:####
2009/03/02
输出样例1:####
61
输入样例2:####
2000/03/02
输出样例2:####
62
1.2.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
2046/11/26 | 330 | 随机进行测试 |
2012/02/29 | 60 | 闰年且二月第29天 |
2011/10/29 | 302 | 非闰年 |
1999/09/24 | 267 | 非闰年 |
1.2.4 PTA提交列表及说明
1.编译错误:尝试使用C++,结果PTA不支持,他们说是老师进行了限制,后改为C;
2.编译错误:本想加个stdio.h,再把输出改一下就行了,结果,编译不允许iostream存在;后删掉;
3.答案正确:....
2. 代码互评###
同学代码1:
同学代码2:
我的代码:
与第一份代码进行对比:同:都进行判断是否符合A1,A2,A3的条件(都是用取余来进行判断),并进行相关的操作;不同:他只是使用了一个非常小的switch来写了一点A3的判断;而我大多数使用switch进行A1,A2,A3的判断,而且我个人认为我的后面输出时写的比他的更加好一点;
与第二份进行对比:同:都是用switch来进行判断,通过余数来分别进行相应操作;不同:他的switch更加简便,一个switch导出了A1,A2,A3的一些结果,再通过输出过程中进行一些操作,来完善,而我的比较麻烦,但是我的输出的编写个人认为较他的更好,而且他的格式没我完善,但是他的那个switch用的好,我没想到,我的时分开的;
3. 学习总结###
3.1 学习进度条.
周/日期 | 这周所花时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
第七周 | 9小时 | 513 | 定义函数 | return的返回位置 |
第八周 | 12小时 | 467 | 局部变量与全局变量 | 暂无 |
第九周 | 12小时 | 483 | 数组 | 暂无 |
第十周 | 14小时 | 723 | 指针 | 暂无 |
第十一周 | 15小时 | 832 | 结构 | 暂无 |
3.2 累积代码行和博客字数.
3.3思维导图
3.3.1 学习内容总结与体会
本周结束了指针的学习,并了解了结构与C++类;指针指向地址,通过找寻地址来提出内容,&是取地址符,指针是不可以直接赋值的,原因在于,指针指向地址,输入可能会改变系统自带的一些数据,导致系统出现错误,所以指针直接赋值时不正确的;
学习仍在进行中,但是感觉与别人落后很多,而且感到直接的进度缓慢,是需要进行时间的规划,来使自己更加的高效化;也在进行这VS使用方面的学习,DEV暂时大概时不想用了,显示的方面太差,字体不好,但是使用VS也时常出现一些问题,也正在解决,总之,还行吧,感觉;