博客园作业
一、思维导图
二、语法认知
1. if-else语句
if(条件1)
{
语句1;
}
else
{
语句2;
}
-
使用方法:
满足条件1时将执行语句1,若不满足则执行语句2.
-
遇到的问题:
当多个if-else时不打{}程序容易出错.
-
解决方法:
注意格式规范,养成打{}的习惯.
-
注意事项:
else后不要加条件否则会出现编译错误,else if 后需要加条件.
2. switch语句
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
default: 语句3;break;
}
-
使用方法:
先计算switch后的表达式的值,再将这个值与每一个case后的常量或常量表达式比较.
执行一致的case语句后的语句,遇到break直接跳出switch.
若表达式的值与每一个case后的值都不一样,则执行default后的语句,然后再跳出switch. -
遇到的问题:
漏写break导致结果出错.
-
解决方法:
按照题目要求打上需要的break.
-
注意事项:
switch(表达式) 表达式的值的类型应该是整型或是可以转换为整型的数值类型.
break可有可无,具体看题目要求.
多个case可以共用一条输入语句.
switch中的case可以不用按序排列.
3. for语句
for(初始化; 条件表达式; 表达式1)
{
循环语句;
}
-
使用方法:
初始化是一个赋值语句,用来给变量赋值.
条件表达式则是关系表达式,它决定跳出循环的条件.
表达式1表示每循环一次后变量的变化.
这三个部分之间需要“;”.
-
遇到的问题:
误把“;”打成“,”导致程序错误.
-
解决方法:
牢记for()里是“;”.
-
注意事项:
尽量使循环体内工作量达到最小化,不要进行过多循环.
for()中的两个“;”不可省略.
4. while语句
while(循环条件)
{
循环体语句;
}
-
使用方法:
循环条件是作为进行循环的条件,循环条件为真的时候执行循环体语句,为假时则跳出循环.
-
遇到的问题:
循环条件不合理导致出现死循环情况.
-
解决方法:
根据题目要求合理设置循环判断条件.
-
注意事项:
while()后不要加“;”,while(){}后同样不加.
while(){}里定义的变量,外面不能用.
5. do-while语句
do
{
循环语句;
}while(循环条件);
-
使用方法:
和while类似但有不同的地方,do-while会先进行一次循环语句再进行循环条件的判断.
-
遇到的问题:
while()后没加“;”.
-
解决方法:
注意区分do-while 和while的格式.
-
注意事项:
在do{}中定义的变量在循环外不可用.
6. break和continue
for(表达式1; 表达式2; 表达式3)
{
语句1;
break;
语句2;
}
for(表达式4; 表达式5; 表达式6)
{
语句3;
continue;
语句4;
}
-
使用方法:
进入第一个for循环时执行语句1,遇到break时将不再执行语句2,直接跳出第一个for循环进入第二个for循环.
进入第二个for循环时执行语句3,遇到continue时将不再执行语句4,直接结束这次循环执行表达式6,然后判断表达式5看看是否进入下一次循环.
-
遇到的问题:
break和continue用反,导致程序结果出错.
-
解决方法:
注意break是直接跳出循环,continue是跳出当前循环进行下一次循环.
-
注意事项:
嵌套循环时break只能跳出当前的循环还要执行外面的循环.
三、pta分数截图
2.3,2.4
第三章
4.1
四、pta代码分析
#include<stdio.h>
int main()
{
int letter=0,digit=0,blank=0,other=0;//首先定义四种变量出现次数为零
int i;
char ch;
for(i=0;i<=9;i++){
scanf("%c",&ch);//利用循环输入字符简单快捷
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')) //进行letter种类判断
letter++;
else if(ch>='0'&&ch<='9') //进行digit种类判断
digit++;
else if(ch==' '||ch=='\n') //进行blank种类判断
blank++;
else //进行other种类判断
other++;
}
scanf("%c",&ch);//最后输入的回车不计入出现次数
printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other);
return 0;
}
1. 代码思路在上方注释里.
2. 发生过的错误:把最后一次输入归到for循环里,导致blank多出现一次.
3. 完成该题后,我学会了利用for循环来输入字符并统计字符出现次数.
#include<stdio.h>
int main()
{
int A,B,C,D,E,N,i,score;
A=B=C=D=E=0;//首先初始化每个等级人数为零
scanf("%d",&N);
for(i=1;i<=N;i++){
scanf("%d",&score);//循环输入成绩来逐一判断该成绩的等级
if(score>=90)
A++;
else if(score>=80)
B++;
else if(score>=70)
C++;
else if(score>=60)
D++;
else E++;
}
printf("%d %d %d %d %d",A,B,C,D,E);//输出等级人数
return 0;
}
1. 代码思路在上方注释里.
2.完成该题后,我学会了利用多重if-else结构来统计成绩.
#include<stdio.h>
#include<math.h>
int main(){
int denominator, flag;
double esp, item, sum;
scanf("%lf", &esp);//输入一个正实数eps
flag=1;
denominator=1;
sum=0;
item=1.0;
do{
item=flag*1.0/denominator;//item为每一项的数字
sum=sum+item;//将其加在总和里
flag=-flag;//实现"+""-"间的转变
denominator=denominator+3;//分母的变化
}while(item>esp);
printf("sum = %.6f\n", sum);
return 0;
}