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语句是提前结束函数的唯一办法。
- [C语言return返回值的说明,来自百度][https://zhidao.baidu.com/question/421834611.html