c语言博客作业——顺序结构,分支结构

0.PTA截图

1.本章学习总结

1.1学习内容总结

  • 学习随机函数使用:首先要生成随机数要使用#include<stdlib.h>这个头文件,如果要保证每次生成的随机数是不同的,我们还需要一个
    关于时间的头文件#include<time.h>,这样可以让时间做种子,从而使每次生成的随机数都不相同,接下来我们要取一定范围内的随机数可以进行以下操作。
    我们形如rand%100来取0到99之间的数。
    我们下面是具体的代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
    srand((time(0));//初始化种子为随机值,我的理解就是以时间为种子,时间不同,生成的随机数也不同。
    int i = 0;
    for(i=0;i < 5;++i){
        int num = rand() % 50 + 1;//产生一个1-50之间的数
        printf("%d ",num);
    }
    printf("\n");
    return 0;
}
  • if-else语句的基本格式为:
    if ( 表达式 )
    {
    语句1;
    }
    else
    {
    语句2;
    }

注意如果有多个if—else 组合在一起时,else与最接近的if匹配。

  • switch语句中有无break的区别,如果有break语句的话,如果case条件满足,这程序就会跳过switch语句,执行下一条语句;反之,则case条件满足后,程序仍会判断接下来的case条件是否满足。还有switch不能和continue连用。
  • 我写代码中switch语句使用的较少,下面来重新复习一下这个语句。
switch(表达式)
{
case 常量1:语句序列1;break;
case 常量2:语句序列2;break;
.....
default : 语句序列 n+1;

  • 字符的输入和输出:字符输入的话用%c,且字符与数字间不要留空格,因为空格也是字符,会导致输出错误。

  • 格式化输入与输出:
    1.格式化输出函数printf( );:该函数在系统文件stdio.h中声明,一般调用格式为“printf(格式控制字符串,输出参数1…输出参数2);”格式控制字符串用双引号括起来,表示输出的格式,输出参数是一些要输出的数据,可以是常量、变量或表达式。在输出格式控制说明中,可以加宽度限制词,制定数据的输出宽度,以达成一些题目的格式要求,或使输出内容变得整齐、清晰。
    2.格式化输入函数scanf( );:该函数同样在系统文件stdio.h中声明,一般调用格式“scanf(格式控制字符串,输入参数1…输入参数2);”格式控制字符串用双引号括起来,表示输入的格式,输入参数必须和格式控制字符串中的格式控制说明相对应,并且类型、个数和位置要一一对应。在需要输入的变量前一定要加上“&”进行取地址运算,否则会出现变量无法读入的情况。
    3.字符输入函数getchar( ):设ch是字符型变量,该函数一般调用格式为“ch = getchar( );”功能是从键盘输入一个字符,并赋值给变量ch,但是该函数只能读入一个字符。
    4.字符输出函数putchar( ):设ch是字符型变量,该函数一般调用格式为“getchar(输出参数);”功能是输出输出参数的字符型变量或常量,该函数只能输出一个字符。

  • C语言的3种基本数据类型是整型、字符型和浮点型:

1.整型 int 取值范围:-2147483648~+2147483648
2.短整型 short 取值范围:-32768~+32768
3.长整型 Long 取值范围:-2147483648~+2147483648
4.字符型 char 取值范围:-128~+127
5.单精度浮点型 float 取值范围:-/+3.4e38
6.双精度浮点型 double 取值范围:-/+1.7e308

1.2编程技巧总结

  • 1.2.1:取某一位数的个位数(假设这个数为n,其个位数是m)则m=n%10。
  • 1.2.2:判断一个数能否被另一个数整除(假设两个数分别为m,n)则判断方法为m%n==0。
  • 1.2.3:输出一个要精确位数的浮点数的操作为printf("%.nf",m)其中n为几就是保留几位小数。
  • 1.2.4:
  • 平方根函数sqrt(x):计算x−−√。如是sqrt(4.0)的值为2.0。
  • 绝对值函数fabs(x):计算|x|.如fabs(-3.56)的值为3.56。
  • 幂函数pow(x,n):计算xn。如pow(1.1,2)的值为1.21。
  • 指数函数exp(x):计算ex。如exp(2.3)的值为9.974182。
  • 以e为底的对数函数log(x):计算logx。如log(123.45)的值为4.815836。
  • 1.2.5:交换两个数字并输出:
    常用temp作为中间量来实现两个数字的交换
    如以下代码:
temp = num1; num1 = num2; num2 = temp;
  • 1.2.6:在输出一个数,%nd,表示这个数占据了n个位置输出,并且数字是在这n个位置的最后一个位置,如果是用%-nd,则会占据第一个位置输出。
  • 1.2.7:flag的妙用
    1:flag一般只有0和1两个值,例如在求像1—1/2+1/3—1/4+.....1/n这样的和是可以利用flag控制各项前的符号。
    2: flag可以避免多出口。代码截图见下:

    这里用flag,避免用了return 0;从而使该程序只有一个出口。

1.3本章学习体会

  • 按逻辑从大到小的来说,先是顺序结构,然后是分支结构。顺序结构只要按着顺序来就行,任何程序肯定都有顺序结构,现在感觉不是那么的难,但随着课程的深入,各种分支,循环,数组,指针之类的加进去,难度就上来了。重在理解每一个模块。思维规范化。分支结构就是一个选择的语句,条件满足选择执行,条件不满足,则不执行。分支结构又包括if语句,if else语句,switch语句三大类。因为作业是又经过修改的,自开学来已经过去了好几个月了,所以对老师的教学方针有了更深入的了解。问过了网络其它班级的,也问过软件的同学,可以说我们班的作业是最全面的,虽然有时有过抱怨,但是仔细想想其实这样挺好的。发展学习更全面更透彻。
  • 这两周代码写了估计有几十道,收获是挺大的,但总是感觉自己在凭着感觉做题,完全没有自己相关的思维逻辑形成。我也想有相关的思维逻辑,但就是做不到,总是想到哪里写到哪里,这种做题方式效率太低了,求解惑怎样能够形成我的逻辑。

2PTA实验作业

2.1:前天是哪天(当时写的时候闰年转月份出错,导致半对,才修改的)

具体情形是:下面这两个判断闰年和平年的语句想了一段时间,一会要考虑&和||的优先级,一会要回忆高中学过的怎样写出一个表达式的否命题。主要卡在了这么一个点上,(具体错误截图没有了,只有最后一次提交的截图。)

2.1.1:

数据表达:用了变量 year ,month ,day来表示年,月,日。这三个变量都定义为整型变量。(年月日只能是整数)
数据处理:按日 月 年的逻辑进行分析(运用分支结构,逐层分析。)
思路:首先输入年,月,日。然后我首先是用分支结构对日进行判断,如果日大于2的话,年,月都不用做变化,月份也直接减2输出就可以了;如果日小于2的话,则又进行月份的分支进行判
断,其中有两类特殊情况又要讨论,一个是月份为一是年份也要减1,一个是三月时退回二月要考虑平年和闰年的情况。其它月份按正常计算就行。


2.2:自选一题,内容要和字符型数据处理有关的题目

计算邮费
数据处理:定义了四个变量 整型变量:油量(oil),油的类型(type);字符型变量:顾客选择的服务类型:m; 浮点型变量:最后要输出的油(payment)
这题对于我来说的难点:一:那是刚开学的实验课,我不知道如何对字符型变量进行定义;二:如何进行if语句内的判断,例如if(c=='m'),当时m加单引号这点也不清楚。

2.3:自选一题,介绍单步调试如何检查错误

2.3.1 单步调试截图

2.3.2 代码截图

2.3.3 PTA提交列表及说明


  • 这一题应该算是正式上课后写的第一题。通过这题,终于对分支结构有了初步的认识,也通过这题在老师的讲解下学会的单步调试的简单运用。
    单步调试的过程:先添加断点,然后在本地windows调试器中开始调试,然后可以选择逐语句,然后点击菜单栏中的调试,然后点击逐过程。在菜单栏可以看到变量的值。
posted @ 2020-11-08 22:52  灰烬小飞侠  阅读(282)  评论(0编辑  收藏  举报