C博客作业01--分支、顺序结构
0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
1.C语言的发展历史与背景
*通过对C语言的发展历史的简单介绍,能简单了解计算机语言的一些共性,同时也能大概了解到计算机语言的发展历程以及对世界、对社会发展的重要影响。
2.第一个程序“Hello world!”
*通过编译以及运行第一个程序,让我们对编程有了一次最初的体验,是开始不断学习新知识的起点。
3.数据类型
C语言数据类型中,最常用的是int(整型)、char(字符型)、float(单精度浮点数)和double(双精度浮点数)。取值范围如下:
- int(整型): 取值范围:-2147483648~+2147483648
- char(字符型): 取值范围:-128~+127
- float(单精度浮点型): 取值范围:-/+3.4e38
- double(双精度浮点型): 取值范围:-/+1.7e308
4.顺序结构
该结构主要运用if else语句,主要格式为:
if
{
...
}
else
{
....
}
学会了if else语句,就可以写出一些可以进行简单判断的程序,如分段函数:
5.选择结构
选择结构又叫分支结构,顾名思义,就是在一个程序里能够出现多个分支,其中最具代表性的就是switch语句,主要格式为:
switch (判断条件)
{
case 判断条件:
语句;
break;
default:
语句;
break;
}
switch语句与if else除了有效率上的优势以外,也有一些独特的特点,例如如果不break,就会一直往下执行下面的语句,可以利用这个特性来写出一些进行累加的语句,如:
#include<stdio.h>
int main()
{
int year, month, day;
int sum = 0, February = 28;
scanf("%d/%d/%d", &year, &month, &day);
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
February = 29;
}
switch (month) {//利用switch的特性,让之前的月份的天数相加,依次来达到计算天数的目的
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 += February;
case 2: sum += 31;
case 1: sum += 0;
break;
}
sum += day;
printf("%d", sum);
return 0;
}
1.2本章学习体会
学习感受
通过对一些基础语法的学习,已经能够解决一些相对简单的编程问题,也对编程产生了浓厚的兴趣,希望接下来能不断努力,不断提高自己的编程水平。
教学意见
希望老师上课能够扩展一些经典代码,或者是一些网课的补充(因为预习过一些,希望能听一些新的)
前两周代码量
前两周代码量:654(仅PTA)
2.PTA实验作业
2.1 7-7 猜数字游戏
2.1.1数据处理
int theNum随机数
int yourNum用于存放操作者猜的数
int N规定猜的次数
int time=0实际猜的次数
int flag=0判断是否猜对
其中因为跳出输入循环时,有猜对和达到规定次数两种情况,所以利用flag可以使程序更加简洁。
2.1.2代码截图
2.1.3本题可拓展内容
*随机数可以计算机生成,而不是操作者自己输入,如
2.1.4 PTA提交列表及说明
*第一次因为变量大小写没注意错了
*第二次对了,然后加了注释又交了一遍
2.2 7-10 计算天数
2.2.1 数据处理
int year:存储年份
int month:存储月份
int day:存储日期
int sum = 0:存储总和
int February = 28:默认二月为28天
因为二月的天数与闰年有关,所以要单独拿出来考虑
2.2.2 代码截图
2.2.3 本题可扩展功能
可以进行同一年内两个日期之间的天数计算,实现方法如下
将计算天数的语句改成函数,先分别计算这两个日期是第几天,然后相减,从而得出结果。
2.2.4 PTA提交列表及说明
2.3 7-2 求幂级数展开的部分和
2.3.1 数据处理
double x:存储实数x
int count=0:项数减一
double denominator=1:存储分母
double num:存储每一项的值
double sum=0:存储总和
从第二项开始,每一项的分母都是项数减一的阶乘,而x的次幂也是项数减一,所以count从0开始递增,然后用初始化为1的变量denominator来一直去乘count,从而得到分母,即项数减一的阶乘。
2.3.2 代码截图
2.3.3 本题可扩展功能(重点加分项,扩展越多,则加分越多)
暂无
2.3.4 PTA提交列表及说明
*第一次提交时,存储分母的变量类型为int,然后最大的情况通过不了,分母因为不断阶乘而越变越大,也超出了int的范围,后来改成double后就通过了
*以后无论什么代码,写之前一定要准确地判断变量类型,否则就会出现超出范围的错误。
3.阅读代码
1.本段代码巧妙地运用了运算符/,利用(n+3)/4,简单快捷地就求出了所需的纸的页数。
2.本段代码巧妙地利用按位与运算与异或运算,用0和1分别表示纸张的左右两边,分别从最小和最大两头开始,一左一右录入二维数组。
3.在输出时同样巧妙地利用按位与,来判断纸张的正反。
看完acm的代码,我深刻的意识到自己对编程的理解与运用还是不够灵活,希望往后能不断通过题目的练习,知识的学习而不断提高,有朝一日也能解决acm中的难题