C语言新知

一. 思维导图#

二. 语法认识#

1.if-else##

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

1.if-else语句条件成立后执行打括号里的;想要执行多个语句,一定要用大括号形成语句块
2.嵌套的if-else
3.else的匹配:else总是和最近的if匹配;缩进格式不能暗示else的匹配
4.if后面的分号
5.错误使用==和= :if只要求()里的值是零或非零

2.switch##

switch(控制表达式){
    case 常量表达式1:语句段1;break;
    case 常量表达式2:语句段2;break;
    ...
    case 常量表达式n:语句段n;break;
    default:语句段n+1;break;
 }

1.控制表达式只能是整数型的结果
2.常量表达式可以是常数也可以是常数计算的表达式
3.如果语句段后没有break,就顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止

3.for##

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

1.求和的程序,记录结果的变量初始化为零;求积的程序,记录结果的变量初始化为1
2.循环控制变量i只在循环里被使用了,在循环外没有任何用处,所以我们可以把变量的定义写到for语句里
3.表达式1:初始化循环变量 表达式2:进入循环体语句的条件 表达式3:改变循环变量的值

4.while##

while(语句){
    复合语句;
} 

1.循环体内要有改变条件的机会
2.可能循环一次也没有执行
3.条件成立是循环继续的条件

5.do-while##

do{
   复合语句;
}while();

1.先进循环,再判断,循环最少做一遍
2.注意与while的区别,合理使用

6.break以及continue##

switch(整形表达式)
{ 
    case 常量表达式1:  语句1;break;
    … 
    case 常量表达式n:  语句n;break;
    default:  语句n+1;

}

for(语句1; 语句2; 语句3)
{
    语句1;
     continue;
    语句2;
        
}

1.在条件后加一个break就会跳出整个循环体,不会再进行后面多余的循环,使得效率提高
2.某语句后是continue,会跳过continue后的语句,进行下一次循环

三. pta分数截图#

  1. 2.3, 2.4作业
  2. 第3章作业
  3. 4.1作业

四. pta代码分析#

题目一##

第三章作业T10

#include<stdio.h>
int main()
{
	int score, A, B, C, D, E,N,i;
	scanf("%d", &N);
	A = B = C = D = E = 0;
	for (i = 1; i <= N; i++) {
		scanf("%d", &score);
		if (score >= 90) {
			A++;
		}
		else if (score < 90 && score >= 80) {
			B++;
		}
		else if (score < 80 && score >= 70) {
			C++;
		}
		else if (score < 70 && score >= 60) {
			D++;
		}
		else {
			E++;
		}

	}
	printf("%d %d %d %d %d",A,B,C,D,E);
	return 0;
}

思路###

由题干可知该题是多分支结构,可以写成else-if的联级
1.确定变量类型 2.初始化变量 3.多分支结构

注意###

1.输入时一定要有取地址符号 & 不能缺少
2.正确命名变量
3.会用 && 和 ||
4.每个if ,else后有{},注意{}的缩进,使代码美观

题目二##

4.1作业T3

#include<stdio.h>
int main()
{
	int N, a, sum;
	sum = 0;
	a = 0;
	scanf("%d", &N);
	while (N > 0) {
		if (N % 10 >= 0) {
			a++;
		}
		sum = sum + N % 10;
		N = N / 10;
	}
	printf("%d %d", a, sum);
	return 0;
}

思路###

1.求正整数N的位数需要用到循环,我选择用while
2.求各位数之和要先知道各位数, 在求位数的循环中放入N % 10 可知每个数的个位数, 再用N = N / 10;将该数的个位数划去, 这样原数据的十位数就是新数据的各位, 直到不满足进入循环条件,跳出循环

注意###

1.划左边用 %
2.划右边用 /

题目三##

2.3,2.4作业函数题T1

double mypow(double x, int n)
{
	double a = 1.0;

	int i;

	for (i = 1; i <= n; i++)

		a *= x;

	return a;
}

思路###

该题要自定义函数,x的n次方相当于n个x相乘,所以用一个循环让x乘n次

注意###

1.自定义函数是最开始声明要有 “;”
2.此题只用写出自定义函数,不用写出裁判测试程序样例,看清题目要求

posted @ 2019-10-15 22:15  zhuzii  阅读(154)  评论(1编辑  收藏  举报