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

| 这个作业属于哪个班级 | C语言--网络2011/2012 |
| ---- | ---- | ---- |
| 这个作业的地址 | C博客作业00--顺序分支结构 |
| 这个作业的目标 | 初步认识C语法,掌握数据表达、printf、scanf语法及分支结构内容 |


1.本章学习总结

1.1 学习内容总结

  1. 数据的输入输出
  • scanf("%d",&x);//调用scanf()函数输入数据,变量名x前面要加&,且int型数据使用%d,float型数据使用%f,double型数据使用%lf,%lf中的l是long的首字母。
  • printf("%d",x);//调用printf()函数输出数据,int型数据用%d,float和double型数据都用%f,而不是输入时的%lf,且输出参数必须和格式控制字符串中的格式说明相对应。
  1. 对于数学函数的涉及
  • 当题目涉及数学函数时,需要调用数学函数,需包含头文件math.h,即在编译器开头输入#include<math.h>,如要想输入x的二次方,就需调用pow函数来输入“pow(x,2)”来达到目的。
  1. if-else语句的使用
if (x != 0) {
	y = 1 / x;  /*x!=0为真时执行*/
}
else {
	y = 0;/*x!=0为假时执行*/
}
  • 例如上述使用if-else语句来计算分段函数,x不等于0时执行第一个语句,否则执行第二个语句。
  1. for语句的使用
  • for语句是由三个表达式与一个循环语句组合而成,且每个表达式之间用分号隔开,for后面不能使用分号,且当循环语句由多条语句构成时,需用大括号把他们括起来变成一条复合语句,因为for语句规定循环体语句只能是一条语句,例如下列输出华氏摄氏温度转换表中的部分代码

for (fahr = lower; fahr <= upper; fahr++) {
	celsius = (5.0 / 9.0) * (fahr - 32);
	printf("% d% 6.1f\n", fahr, celsius);
}

for (fahr = lower; fahr <= upper; fahr++) 
	celsius = (5.0 / 9.0) * (fahr - 32);/*语句1*/
	printf("% d% 6.1f\n", fahr, celsius);/*语句2*/

两段代码中区别在于一个大括号,但是在第二个代码中因为for语句只有一条循环体语句,所以循环体语句只包括语句1,而语句2被当作for的下一条语句,不参与循环,所以若不加大括号则代码错误,从而不能得到正确结果。

  • for语句中i++相当于i=i+1,即循环一次i的值增加1,如计算1+2+·····+n的和时为实现i值从1变到n,就需要设置i++来达到每次i增加1的目的。
  • 若循环中存在正负交替,则可以定义一个变量flag,初始值flag=1,每次循环执行flag=-flag实现正负交替变化。
  1. switch语句实现多分支结构
  • switch语句可以处理多分支选择问题,其中break语句一般分为三种情况:(1)在switch语句的每个语句段都使用break语句;(2)在switch语句中不使用break语句;(3)在switch语句的部分语句段中使用break语句。
  1. 嵌套的if语句实现多分支结构
  • 如果if-else语句的内嵌语句是另一条基本的if语句,就形成了嵌套的if-else语句。
  • if和else的匹配原则:else与最靠近它的,没有与别的else匹配过的if相匹配。
  • 内嵌的if最好不要省略else部分,这样if的数量和else的数量相同,从内层到外层一一对应,结构清晰不易出错。

1.2 编程技巧总结

1. 判断一个数a是否是偶数

  • 利用求余符号“%”,若“a % 2 == 0”则说明a为偶数,否则a不为偶数。

2. 取某个三位数十位做法。

  • 假设三位数a的值为123,先利用a与10做除法,因为两个数都是整型,所以做除法后一定得到整数12,再利用12与10求余即得到十位数的数字。代码形式为:(123/10)%10

3.判断整除做法

  • 判断一个数是否能被另一个整数整除需要用到求余符号,假设两个数为a和b,若a能被b整除,只需要a与b求余等于0,即a%b==0.

4.变量值的定义

  • 在一个含有多个变量的代码中,尽量做到见名知意,而不是都用简单的a,b,c,d...表示,这样代码的阅读效果会变差。

1.3 本章学习体会

  • 学完本章后拿到题目不会再像之前一样无从下手,并且有些题目还可以选择多种方法,最终都会得到相同的结果。在代码方面自己对于三个数之间相互赋值还不怎么理解,希望在以后的学习中能逐渐明白。
  • 由于开学前对计算机基本不了解,听慕课也不怎么理解,所以基本没写pta,现在上课以来,靠书本及老师的讲解逐渐学会了一些简单编程,这两周以来完成了顺序结构、分支结构并且已经开始做浙大版《C语言程序设计实验与习题指导(第3版)》。

2.PTA实验作业

2.1 前天是哪天

2.1.1 数据处理

数据表达:用int定义了年y,月m,天d。
数据处理:使用了if-else和if-else的嵌套结构。

2.1.2 代码截图

2.1.3 PTA提交列表及说明

  • 初始时错用if-else结构导致2号跨小月结果错误,并且闰年和非闰年表达错误,在一番咨询后最终修正。

2.2计算油费

2.2.1 数据处理

数据表达:用int定义了加油量a,汽油品种b;char定义字符型变量c;double定义了费用cost和汽油价格price。
数据处理:用了if-else语句

2.2.2 代码截图

2.2.3 PTA提交列表及说明

  • 初始时提交发现答案错误,检查之后发现自己在定义字符型变量c时错用了double类型,换成char类型后提交仍然答案错误,在超星上看完视频后才明白在输入时数值和字符型数据之间要空格隔开,修正后提交答案正确。

2.3求中间数

2.3.1 单步调试截图

  • 首先在scanf语句的下一句设置断点。

  • 点击开始调试,并输入数据。


  • 若要监视变量值是否输入正确,可以在scanf语句中单击每个变量,选择添加监视就能知道每个变量值。

  • 再点击逐语句就能知道程序运行的步骤,就可知道程序是否按照在按照我们的设置在运行。

2.3.2 代码截图

2.3.3 PTA提交列表及说明

  • 因为赋值运算还没怎么理解,所以写的程序相比于赋值法会有所麻烦。
posted @ 2020-11-08 22:21  ····。。  阅读(176)  评论(0编辑  收藏  举报