第一次博客园作业
一,制作思维导图
二,写出自己对一下语法的认识
1,if-else
if(表达式1){ 语句a }else{ 语句b }
else总是与最近的if配对,注意表达式1中无;若{}里面只有一句表达式可以省略{}
2,switch
switch(表达式){ case 常量表达式1: 语句段 1; break; case 常量表达式2: 语句段 2; break; .... case 常量表达式n: 语句段 n; break; default: 语句段 n+1; break' }
switch语句中,表达式和常量表达式的值一般是整型或字符型,所有常量表达式的值都不能相等,每个语句段可以为一条或多条语句或空语句,default可以省略,使用于多分支选择问题,最后应有break跳出语句。
3,for
for(表达式1;表达式2;表达式3){ 循环体语句;
}
for语句中()中的表达式要用;分隔开,for的后面没有分号,若{}里面只有一句表达式可以省略{}
4,while
while(表达式){ 循环体语句; }
while语句与for语句相比,适用面更广,当表达式为"真"时,循环执行,直到表达式为假时,循环终止继续执行while语句的下一条语句。
5,do-while
do{ 循环体语句; }while(表达式);
do-while语句先执行循环体后判断循环条件,与另外两种循环语句相比,至少会执行一次循环体,当表达式为真时,循环执行,表达式为假时,循环终止,继续执行while语句的下一条语句。适用于先执行一次循环的的条件。
6,break以及continue
break语句强制循环结束,一旦执行break语句,循环提前结束,不再执行循环体中位于其后的其他语句,跳出循环。
continue语句跳过循环体中continue语句后面的语句,继续下一次循环。
两者区别在于,break结束循环,而continue只是跳过后面语句继续循环。break语句还可以运用于switch语句,continue语句只能用于循环。
三,pta分数截图
四,pta代码分析
#include<stdio.h> #include<math.h> int main() { int a,b,i,m,l=0,sum=0,num=0; scanf("%d %d",&a,&b); for(i=a;i<=b;i++)/给定素数的范围在a,b之间/ {for(m=1;m<=i;m++) { if(i%m!=0)
l++; } if(l==i-2) /l如果等于i-2那l对应的数就为素数/ { sum=sum+i; num++; } l=0;/让l归零从新进行循环/ } printf("%d %d",num,sum); return 0; }
代码错误:没有理解素数的定义,判断素数的方法过于复杂。
获得经验:代码与数学知识结合,对嵌套循环的使用更熟练了。
#include<stdio.h> int main() { int a,n,i=0,b; scanf("%d %d",&a,&n); while(i<=n)/i为游戏进行的次数,当次数大于规定次数游戏结束/{ scanf("%d",&b); i++; if(b<0){ printf("Game Over\n"); break; } if(b==a)/当猜中的时候应该看成一种情况,再分支去讨论/{ if(i==1){ printf("Bingo!\n"); break; }else if(i<=3){ printf("Lucky You!\n"); break; }else if(i<=n){ printf("Good Guess!\n"); break; }else{ printf("Game Over\n"); break; } }else if(b>a)/没有猜中时不需要跳出循环/{ printf("Too big\n"); }else if(b<a)/没有猜中时不需要跳出循环/{ printf("Too small\n"); } } return 0; }
易错点:容易写不出来当次数超过规定次数时要怎么跳出循环,不容易写出当猜到时应继续if-else语句讨论。
获得经验:对复杂的分支语句有了一定的了解,在以后写相似题目会有一定的思路借鉴。
#include<stdio.h> int main() { int a,b,i; scanf("%d",&a); if(a<=2000||a>2100){ printf("Invalid year!\n"); }else{ int c=0;/定义c为零为后面判断不存在闰年做条件/ for(i=2001;i<=a;i++){ if((i%4==0&&i%100!=0)||i%400==0){ printf("%d\n",i); c++; } } if(c==0){ printf("None\n"); } } return 0; }
易错点:判断非闰年时一开始没有用到c=0这个条件来判断,导致不懂判断不存在闰年时要怎么做。
获得经验:写代码要懂得变通,多看书上例题学习比较简便得到方法。