博客园作业

一、思维导图

二、语法认知

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;
 } 

1.代码思路在上方注释里.

2.完成该题后,我学会了利用do-while循环来计算交错序列的和.

posted @ 2019-10-15 22:28  20190211飞飞  阅读(111)  评论(0编辑  收藏  举报