知识总结
一.思维导图
二.if-else;switch;for;while;do-while;
break;continue;
-
if(条件){ 语句; } else{ 语句; }
常见问题*:1. “{}”的书写不完整。2. 对于else附属于哪个if
-
switch(表达式) { case 常量表达式1:语句段1;break; … case 常量表达式n:语句段n;break; default: 语句段n+1; break; }
用法: 1.在不同的常量表达式中,有对应执行的表达式;判断条件后,执行对应的表达式
-
for(条件){ 语句; }
用法:条件为三个表达式--for(表达式1;表达式2;表达式3):表达式1通常提供一个初始量;表达式2控制循环次数;表达式3对于初始量进行变化。常见问题:对于循环次数的控制
-
do{ 循环体语句; }while(表达式);
while(条件){ 循环体语句; }
while用法:1. 当while(**表达式!=0**)执行循环体语句;反之跳出循环体语句。2. 常见问题:忽略是否至少执行一次循环,与do while 弄混。3. 解决方法:思考特殊情况,即当初始量不满足时,是否符合要求 do- while用法:2. 先循环一次,再判断while中的表达式是否非0,非0则继续执行循环体,为0则跳出循环。2. 常见问题:不能很好区分于while的用法。3. 解决方法:刷题。
-
break与continue:1.用法:break用于跳出循环;continue用于跳过continue之后的语句,进行下一次循环。2. 常见问题:不能灵活应用break和continue。
三. pta分数
2.3与2.4
3章
4章
四.pta分析(解题思路都在注释中)
#include "stdio.h"
int main() {
int n,i,minimum,a=0;
minimum=a;//首先设a为最小值
scanf("%d",&n);
scanf("%d",&a);//输入第一个整数
for (i=1;i<n;i++){
scanf("%d",&a);//当n>1,再输入n-1个数
if(minimum>a){
minimum=a;
}//将输入的数与a对比,将较小值赋值给minimum
}
if(n==1){
minimum=a;
}//只有一个数时,即本身为最小值
printf("minimum = %d",minimum);
return 0;
}
感悟:1. 可以巧妙地运用赋值,可以省去对多余变量的定义。2. 可以利用循环控制输入次数
2.
#include "stdio.h"
int main() {
int anyyear,count=0;
scanf("%d",&anyyear);
if(anyyear>2100||anyyear<=2000){
printf("Invalid year!");
}//令anyyear为月份上限,看输入的月份是否为非法月份
else{for(int year=2001;year<=anyyear;year++){
if((year%4==0&&year%100!=0)||year%400==0){
printf("%d
",year);
count++;
} }
}//对于取值范围内的月份判断是否为闰年,是则输出
if(count==0){
printf("None
");
}//若不存在,则按题目要求输出
}
return 0;
}
感悟:应该注意审题,注意数据范围及相关条件
3.
#include "stdio.h"
int main() {
int letter=0,blank=0,digit=0,other=0;
char ch;//对变量进行定义
for(int i=1;i<=10;i++) {
ch=getchar();//每次读入一个字符
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
letter++;
}//判断是否在英文字母范围
else if(ch>='0'&&ch<='9'){
digit++;
}//判断是否在数字字符范围
else if(ch==' '||ch=='
'){
blank++;
}//判断是否为空格键或回车键
else {
other++;
}//其余字符
}
printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
return 0;
}
感悟:对于getchar的运用