第一次博客园作业
一.思维导图
二.自己对语法的认识
1.if-else
if(表达式){ 语句a; } else{ 语句b; }
用法:先判断表达式,成立执行语句a,不成立执行语句b,多重表达式可用if(表达式1),else if(表达式2),else表达
注意问题:else不跟表达式 ,注意else与if的匹配,注意{}的位置。
2.switch
switch(表达式){ case(常量表达式1):语句段1;break; case(常量表达式2):语句段2;break; ...... case(常量表达式n):语句段n;break; default :语句段n+1;break; }
用法:switch-case语句适用于分支条件多的情况,先判断表达式,之后与相应的常量表达式对应,执行语句段,需要用break跳出循环
问题:case表达常亮错误
解决问题:编译器检查,修改
注意问题:break的使用,以及default的使用。注意case(常量表达式)后使用符号为:语句段与break后使用符号为;
3.for
for(表达式1;表达式2;表达式3){ 循环语句; }
用法:先执行表达式1 ,判断表达式2,若成立,执行循环语句,再执行表达式3,判断表达式2,执行循环语句,直到表达式2不成立
问题:表达式3与表达式2不对应
解决问题:修改表达式2和3,使之对应
注意问题:判断清楚表达式2是否符合题目要求,判断好什么时候结束,以及表达式123之间用;隔开,不随意添加;
4.while
while(表达式){ 循环语句; }
用法:先判断表达式,若成立,执行循环语句,再判断表达式执行循环语句,直到表达式不成立;
5.do while
do{ 循环语句; }while(表达式);
用法:直接进入循环,判断表达式,表达式为真则继续循环,直到表达式为假跳出循环
注意问题:直接进入循环语句,再判断表达式,注意while(表达式)后面使用;结束
6.break和continue
do { 循环体语句 break; }while(表达式); for(表达式1;表达式2;表达式3;){ 语句1; continue 语句2; }
注意问题:break语句使循环强制结束,continue语句跳过循环体语句中continue后面的语句,继续循环。break还可用于switch语句。
三.PTA分数截图
2.3 ,2.4作业
第三章
4.1作业
四. pta代码分析
2.3,2.4作业
#include <stdio.h> int main() { int N,i,flag,d;//定义一个正整数N,i用于for循环,flag用于项的正负 double item,sum;定义双精度浮点数 sum=0; flag=+1;//另flag初始值为+1为项的正负做准备 d=1; scanf("%d",&N);//输入正整数N for(i=1;i<=N;i++){ item=1.0/d*flag;//item用于存放每一项的值 sum=sum+item;//sum用于求和 d=d+3; flag=-flag;//使flag值为-1使偶数项为负数 } printf("sum = %.3lf",sum);//输出sumde值,精确到小数点后三位 return 0; }
注:解题思路在注释中表明。
错误点:偶数项忘记考虑正负号,结果忘记精确到小数点后三位
收获:如何使用for循环求N项求和,item用于存储各项的值,各项正负号的使用
第三章作业
#include<stdio.h> int main() { int i,a,b; int A,B,C,D,E; A=B=C=D=E=0;//ABCDE用于计算各个等级的数量 scanf("%d",&a);//输入统计成绩学生的个数 for(i=1;i<=a;i++){ //循环a次 scanf("%d",&b); //以下用if-else语句来统计各个等级的数量 if(b>=90) A++; else if(b>=80) B++; else if(b>=70) C++; else if(b>=60) D++; else E++; } printf("%d %d %d %d %d",A,B,C,D,E);//输出各个等级的数量 return 0; }
注:解题思路在注释中表明。
错误点:ABCDE忘记定义为0,导致程序无法运行
收获:学会了用for循环中嵌套使用if-else从句,学会了scanf写入循环语句中输入多个值的方法
4.1作业
#include<stdio.h> int main() { int n,count=0,s=0,c=0;//定义正确的整型变量 scanf("%d",&n);//输入正整数n do{ c=n%10;//c用来得到整数n的最后一位数字 s=s+c;//s用来计算n每位数字c的和 n=n/10;//使n去除最后一位数字 count++;//count用来计算n的位数 }while(n!=0);//结束循环,n是几位数就循环几次 printf("%d %d",count,s);//输出n的位数和各个数字之和 return 0; }
注:解题思路在注释中表明
错误点:while后面忘记加;用来结束循环,忘记定义count初始值为0用来统计次数
收获:更加清楚明白%与/的区别,更清楚do-while语句的使用