C博客作业01--分支,顺序结构

0.展示PTA总分


1.本章学习总结

1.1 学习内容总结

1.首先是一个完整的C语言程序的构成。

#include<stdio.h>                (1)  //编译预处理命令。后面调用的scarf() 函数在系统文件studio. h中声明。
int main()                             (2)  //定义了一个名字为main的函数,该函数返回值是整型数,参数在函数名后面的括号中。
{
int a,b;                                 (3)  //定义了两个整型变量a b,用于存放整数
scanf("%d %d",&a,&b);       (4)  //scanf格式化输入语句,将a,b输入到计算机中。其中&为寻址操作符。变量a,b的地址是在编译阶段分配的。
if(a>b)
{
 printf("%d\n",a);
}else 
{
printf("%d\n",b);           (5)         //使用if-else语句,判断a,b之间大小关系。
}

return 0;                              (7)//结束main() 函数运行。使用0用来检查程序运行是否正常。return 0是正常退出,return 非零是异常退出,这是返回给控制台的,不在编的程序的控制范围内,是给操作系统识别
} 

在写C语言程序的时候为了书写清晰、便于阅读、便于理解、便于维护,在编写程序时应遵循以下规则:

  • 1、一个说明或一个语句占一行,例如:包含头文件、一个可执行语句结束都需要换行;

  • 2、函数体内的语句要有明显缩进,通常以按一下Tab键为一个缩进;

  • 3、括号要成对写,如果需要删除的话也要成对删除;

  • 4、当一句可执行语句结束的时候末尾需要有分号;

  • 5、代码中所有符号均为英文半角符号。


2.变量,常量,与数据类型。

我经常会搞混数据类型与数据之间的对应关系,所以经常犯错。


3. 进行计算与关系判断

  • 1.常用运算符

    注意:
    • (1)加减乘的运算与常识运算一样,但是除法''/''表达的是整除的含义。当前后两数据都是整数型时,只取结果整数部分,余数舍去。如1/3结果为0,如果想表达其原本含义,则可以写成1.0/3.0。如果是两个整数型变量(如int a,b;),计算其除法可写成a*1.0/b;
    • (2)%表示取余,即两球相处,取其余数,舍去结果整数部分。合理使用整除和取余可以判断输入数字位数,判断奇偶,判断素质等。

  • 2.逻辑运算符

  • 3.常用的数学函数
    C语言中,数学函数是函数的一种。指专门进行数学运算的函数,一般都在<math.h>头文件下。
    常用数学函数列表:

4.分支结构及其应用

  • if_else

    如果表达式的值为真,则执行代码块1,否则执行代码块2。

  • switch语句
    switch语句语法结构:

    流程图如下:

    switch语句相当于给计算机下达一个跳转的命令,跳转到相应的case,如果没有相应的case承接则执行default。遇见break;则直接跳出switch。

5.简单的循环结构

  • for语句

    • 它的执行过程如下:

      第一步:执行表达式1,对循环变量做初始化;
      
      第二步:判断表达式2,若其值为真(非0),则执行for循环体中执行代码块,然后向下执行;若其值为假(0),则结束循环;
      
      第三步:执行表达式3;
      
      第四步:执行for循环中执行代码块后执行第二步;
      
      第五步:循环结束,程序继续向下执行。
      

  • while语句
    • 其中表达式表示循环条件,执行代码块为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体代码块。

    • 使用while语句应注意以下几点:

      • 1、while语句中的表达式一般是关系表达或逻辑表达式,当表达式的值为假时不执行循环体,反之则循环体一直执行。

      • 2、一定要记着在循环体中改变循环变量的值,否则会出现死循环(无休止的执行)。

      • 3、循环体如果包括有一个以上的语句,则必须用{}括起来,组成复合语句。


  • do_while语句
  • do-while循环语句的语义是:它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。

1.2 本章学习体会

  • 学习体会:
    • 通过两周的学习,认识到了这门学科的 痛苦 有趣。首先我觉得编程是个很有趣的过程,你要把你的想法通过语法处理达到让计算机理解的目的,这个过程就像是扶养一个孩子长大的过程。不过,有时候这个孩子并不是那么听话。他会一直出错。作为编程者就是在不断犯错中成长的。我觉得这就是学习的意义所在。
    • 不过有时候犯错真的很痛苦,尤其是你知道错了,不知道怎么改的时候。通过运用vs调试,不断修改,优化,才能做出一个完美的程序。编程,乃至学习,不就是一个不断追求完美的过程吗?
  • 代码量计算:
    • 两周pta粗略计算680行。

2.PTA实验作业

2.1.1

  • 首先需要求出每一项的数值,设这个数值为number,观察number与循环数i之间的关系可以发现规律:number=number*10+a; 然后求和,设和为sum, sum=sum+number;
  • 数据表达
    • 定义整型变量int a; int n;分别表达输入的数字以及循环的次数。
    • 定义整型变量 int number; int sum 表示制造的数。

2.1.2


2.1.3

  • 关于运行超时的问题:按照操作系统中的说法,它给每一个进程都设定了时间的上限,超过一定的时间后就会报错。
  • 进行循环语句练习时语法十分简单,但是要使写出的程序达到自己的预期就需要模拟。可以先设开头或者结尾简单的数来判断是否符合条件。

2.1.4

  • Q1:运行超时:
  • A1:按照操作系统中的说法,它给每一个进程都设定了时间的上限,超过一定的时间后就会报错,所以,可能是写的程序里面算法使用的循环次数太多,或者是代码里面出现一些因为打字错误而导致的死循环。刚开始对for中的条件设置错误导致了死循环;
  • Q2:格式错误:
  • A2:这也是做pta时经常遇见的问题,系统会将答案直接与运算结果对比,最好的解决方法就是把上面的输出结果直接复制上去,看有多少空格。

2.2.1

  • 该题实际上是一个分段函数的问题。
    设一个变量distance表示路程,设另一个变量time表示时间。其中有起步价格,但是不管走多远,只要有停车和堵车,就计算花时间的费用,即time money=time/5*2。运用if-else结构,分别计算不同路程段的费用。两费用和就是总费用。
  • 数据处理
    • 由于花费的钱以及路程都是有小数部分的,所以定义double money表示花费的钱,double distance 表示路程;
    • 时间按每五分钟计算,所以定义 int time; 表示路上花费的时间。

2.2.2


2.2.3

  • 结果要求四舍五入,刚开始不知道,上网查询后了解到%. 0f可以做到。精确到个位。

2.2.4

  • Q1:刚开始的时侯总是错误,得出的结果是乱七八糟的数字
    A:后来vs调试后知道变量distance应该是双精度浮点型double,而我用的是int
  • Q2:期间按每5分钟2元计收,不足5分钟则不收费
    A:一开始的做法是time1.0/52不能包含不足5分钟不收费的情况,后来,看出来是自己想多了。直接time/5*2即可。

2.3.1

  • 思路
    • (1)将第一个数作为最小数,依次和第二,三个数进行比较。两次比较重如果有任意一个比第一个小,则将两个数交换 ;
    • (2)在(1)步后,得到第一个数为最小数。再将第二个数与第三个数比较大小后即可实现三个数从小到大排序。
  • 数据处理
    • 定义三个整型数(即输入的三个数)int number1,number2,number3;
    • 定义一个临时储存变量 int store;

2.3.2



2.3.3

上百度查阅了解到还有其他排列方法:

  • 1.选择排序法:从一列数中,选择第一个作为最小数,依次和后面的数进行比较。如有比第一个数小的数,则交换两个数。最后排到该列数都倒数第二个时,这列数就从小到大排好了顺序。

  • 2.冒泡排序法:思路与选择排序法一致。不同的是,冒泡排序将第一个作为最大数,然后再和该数后的数进行比较。

2.3.4

  • 刚开始完全没有思路,通过舍友的帮助才知道可以设一个临时变量store对最小值进行存储。

3.阅读代码

3.1优秀代码

3.2受到的启发

  • 1.代码太难了,呜呜呜~
  • 1.C语言中,fun函数是用调用主函数的。它是指用fun来定义一个函数或是方法,这样在引用时可以用fun表示。
  • 2.C语言标准库中没有fun函数。fun函数是自定义函数,是使用来举例或作语法演示的,需要在使用前自行定义声明。fun一词没什么特别含义,也可以换成别的名称,如"abc"或者"shenchao"。它只表示引用之前出现的函数,以调用它执行一些需求,int fun(int x,int y)只是一个举例的函数名而已,以及其声明的参数类型。
  • 虽然还是没有怎么看懂这些代码,但是通过查阅资料,让我加深了对return 作用的理解。
    • [C语言return返回值的说明,来自百度][https://zhidao.baidu.com/question/421834611.html
      ]:
      • 1、没有返回值的函数为空类型,用void表示。
      • 2、return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值。
      • 3、函数一旦遇到 return 语句就立即返回,后面的所有语句都不会被执行到了。从这个角度看,return 语句还有强制结束函数执行的作用。
      • 4、return语句是提前结束函数的唯一办法。
posted @ 2019-10-07 19:01  不会soma  阅读(319)  评论(3编辑  收藏  举报