zoukankan      html  css  js  c++  java
  • 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中的难题

  • 相关阅读:
    Python之二维数组(list与numpy.array)
    too many values to unpack
    python 寻找可迭代(list)的目标元素的下表方法
    zip函数
    map函数
    Sokcet代码错误类型
    PL-VIO Docker测试
    如何检索国外博士论文
    EuRoc V203数据集的坑
    Tracking of Features and Edges
  • 原文地址:https://www.cnblogs.com/Guangyang/p/11631950.html
Copyright © 2011-2022 走看看