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

0.展示PTA总分

1 .顺序结构练习

2 .选择结构

1.本章学习总结

1.1 学习内容总结

  • 数据类型
  1. int:整型数,取值范围-2147483648~+2147483648
  2. float 单精度浮点型,可以带有小数点,取值范围-3.4e38~+3.4e38
  3. double 双精度浮点型,取值范围-1.7e308~+1.7e308
  4. char 字符类型 ASCII表
  5. 当输入数据时应考虑数据的大小,来决定使用什么样的数据类型,以防止数据溢出。
  • 输入输出函数
  1. 首先需要一个编译预处理命令 #include<stdio.h> 来声明函数
  1. 格式化输出函数 printf(“......”);
    printf(格式控制字符串,输出参数1,...,输出参数n); 格式控制字符串用双引号括起来,表示输出的格式;而输出参数则是一些要输出的数据,这些数据可以是常亮、变量或表达式。
    --- 引用自《c语言程序设计》
    2.格式化输入函数 sca%nf(“......”,&......);
    scanf(格式控制字符串,输出参数1,...,输出参数n); 格式控制字符串表示输入的格式,输入参数是变量地址(变量名前加&)。
    输入参数的形式为:变量名前加&,如&x。
    --- 引用自《c语言程序设计》
  • 数学函数
  1. 首先需要一个编译预处理命令 #include<math.h> 来声明数学函数
  2. 平方根函数sqrt(x):计算√ x。如是sqrt(4.0)的值为2.0。
  3. 绝对值函数fabs(x):计算|x|.如fabs(-3.56)的值为3.56。
  4. 幂函数pow(x,n):计算x的n次方。如pow(1.1,2)的值为1.21。
  5. 指数函数exp(x):计算e的x次方。如exp(2.3)的值为9.974182。
  6. 以e为底的对数函数log(x):计算\lnx。如ln(123.45)的值为4.815836。
    --- 引用自《c语言程序设计》
  • if-else语句

一般形式:

if(表达式)
    语句1;
else
    语句2;

先求解表达式,如果表达式的值为“真”,则执行语句1;否则(即表达式的值为“假”),则执行语句2。语句1和语句2最多执行一个。
举例:c02-选择结构 7-1 计算分段函数

#include<stdio.h>
#include<math.h>
int main()
{
	float x,result;
	scanf("%f", &x);

	if (x >= 0) { result = sqrt(x); }
	else result = pow(x+1,2)+2*x+1/x;

	printf("f(%.2f) = %.2f", x, result);
	return 0;
}
  • switch语句
switch (表达式)
    {
    case 常量表达式1:语句段1; break;
    …
    case 常量表达式n:语句段n;break;
    default:语句段n+1;break;
    }

该语句的执行流程为:首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的相应语句段,如果表达式的值与任何一个常量表达式都不相等,则执行default后的语句段,最后执行break;语句,跳出switch语句。

举例:c02-选择结构 7-9 成绩转换

#include<stdio.h>
int main()
{
	int achievement;
	scanf("%d", &achievement);

	switch (achievement / 10)
	{
	case 10:
	case 9:
		printf("A");
		break;
	case 8:
		printf("B");
		break;
	case 7:
		printf("C");
		break;
	case 6:
		printf("D");
		break;
	default:
		printf("E");
		break;
	}
	return 0;
}
  • for循环

一般形式:

for ( 表达式1; 表达式2; 表达式3)
    {
             循环体语句;
    }

for语句的执行流程是:先计算表达式1,再判断表达式2,若为“真”,则执行循环体语句,并接着计算表达式3,然后继续循环,若值为“假”,则结束循环,继续执行for的下一条语句。
表达式1:初值表达式,对循环变量赋初值,从而指定循环的起点。
表达式2:条件表达式,给出循环的条件,通常判断循环变量是否超过循环的终点。
表达式3:步长表达式,这个表达式是单次循环结束后需要执行的语句。
循环体语句:被反复执行的语句,只能是一条语句(或用大括号组成复合语句)。

举例:c03-单循环结构 7-1 求交错序列前N项和

#include<stdio.h>
#include<math.h>
int main()
{
	int N;
	int temp=1;
	int i;
	double sum=0;
	scanf("%d", &N);

	for (i = 1; i <= N; i++)
	{
		sum = sum + temp * (i *1.0/ (2 * i - 1));
		temp = -1 * temp;
	}
	
	printf("%.3f", sum);
	return 0;
}

1.2 本章学习体会

  1. 通过这两周的学习,我从只会写“hello world”的小白,变成了会解决一些简单问题的菜鸟,虽然并没有质的变化,但是这是一个良好的开端。虽然说C语言是比较好学的,但那是相对于其他语言而言,对于C语言不能够掉以轻心,还是要认真学习。在打代码是总是因为一些细节而出bug,而解决这些bug的过程无疑是艰辛的,有时候一两个小时都无法解决,这对我的自信造成了沉重的打击,这时候我会承认自己的失败,去请教他人,来解决问题,学习是一个人的事情,但一个人不能很好地学习。
  2. 希望老师在课堂上可以多讲一些书本上没有的知识。
  3. 代码量统计:867行(每个程序减去两行大括号)

2. PTA实验作业

2.1 c02-选择结构 7-3 输出三角形面积和周长

2.1.1 数据处理

  • 数据表达:
  1. int a,b,c; 储存三角形的边长。
  2. int area; 储存三角形的面积。
  3. int s; 中间量。
  4. int perimeter; 储存三角形的周长。
  • 数据处理:
    一个输入函数,一个if-else分支结构,两个输出函数。

2.1.2 代码截图

2.1.3 PTA提交列表及说明

Q:s = (a + b + c)/ 2,计算结果为整数
A:改为s = (a + b + c)*1.0 / 2。

2.2 c02-选择结构 7-2 判断偶数

2.2.1 数据处理

  • 数据表达:
  1. int a; 储存整数a。
  • 数据处理:
    一个输入函数,一个if-else分支结构,两个输出函数。

2.2.2 代码截图

2.2.3 PTA提交列表及说明


Q:if(a%2)理解为偶数条件成立。
A:当a为偶数时,a%2==0,在计算机中0为假。

2.3 c03-单循环结构 7-10 jmu-c-二进制转10进制

2.3.1 数据处理

  • 数据表达:
  1. double num2;存储二进制数字。
  2. int num10;存储十进制数字。
  3. int mask;存储num2的位数。
  4. int i;判断某个数字是否为二进制数字。
  • 数据处理
    一个输入函数,两个输出函数,一个while循环,两个if语句,一个switch选择结构。

2.3.2 代码截图

2.3.3 PTA提交列表及说明

Q1:无论输入的数是否为二进制,都会输出num10。
A1:在循环中当输入的数不为二进制时,mask=-1,并且,当mask!=-1时,输出num10。

Q2:多个1无法通过编译。
A2:int无法放下多个一,改用double。

3. 代码阅读

题目:输入某年某月某日,判断这一天是这一年的第几天?

源代码

选择这段代码的原因是我也做过这道题,但是代码十分冗长,因为对于闰年二月之后的月份天数的计算,我使用了另一个switch选择结构,但是这段代码是先将年份当做平年处理,最后再考虑闰年二月的特殊情况,这样子大大减少了代码量,也让我知道了做对题目并没有什么了不起,因为别人不仅做对了,而且做得更好。

posted @ 2019-10-07 15:22  极仙  阅读(402)  评论(3编辑  收藏  举报