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分数截图#
- 2.3, 2.4作业
- 第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.此题只用写出自定义函数,不用写出裁判测试程序样例,看清题目要求