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中的难题

posted @ 2019-10-07 23:00  ZGGYY  阅读(289)  评论(6编辑  收藏  举报