博客园作业1

一、思维导图

img

二、语法认识

(1)if-else

1.结构

if (条件) 
   语句一;
else 
   语句二;

2.使用方法:求解表达式,如果条件为真,则输出语句一,为假则输出语句二

3.问题:含有多个if-else语句时,有时判断else属于哪个if错误

4.解决:听老师讲解和自己重新看分析结构

(2)switch

1.结构

switch (表达式){
     case 常量表达式1:语句段1; break;
     case 常量表达式2:语句段2;break;
                  ...
     case 常量表达式n:语句段n; break;
     default:         语句段n+1;break;
}

2.使用方法:求解表达式,若表达式与某一常量表达式的值相等,测执行该表达式相应的语句段,若与任何一个都不相等,则执行的default后的语句段,最后执行break跳出switch

3.问题:暂无

4.解决:暂无

(3)for

1.结构

for(表达式1;表达式2;表达式3)
    循环体语句

2.使用方法:先计算表达式1,再判断表达式2,若值为真,则先执行循环体语句,再计算表达式3,若值为假,则结束循环

3.问题:表达式2 3的顺序有时会弄混,执行i++时i是这个循环的值还是上个循环的值有时会弄混

4.解决:在草稿纸上画出程序框图

(4)while

1.结构

while(表达式)
      循环体语句;

2.使用方法:当表达式的值为真,循环执行,直到表达式值为假,循环终止并执行while的下一条语句

3.问题:没有注意循环体只能是一条语句

4.解决:改成单条语句

(5)do-while

1.结构

do{
   循环体语句
} while (表达式);

2.使用方法:第一次进入循环,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为真,继续循环,直到值为假,执行下一条语句

3.问题:判断是否继续执行时的条件有误

4.解决:多练

(6)break语句和continue语句

1.结构

switch (表达式){
     case 常量表达式1:语句段1; break;
     case 常量表达式2:语句段2;break;
                  ...
     case 常量表达式n:语句段n; break;
     default:         语句段n+1;break;
}
for(表达式1;表达式2;表达式3)
{
     语句1;
     continue;
     语句2;
}

2.使用方法:break 当循环结构出现多个循环条件时,可以由循环语句中的表达式和break语句共同控制

continue 跳过循环体中continue后面的语句继续下一次循环

3.问题:暂无

4.解决:暂无

三、pta分数截图

2.3,2.4作业

第3章作业

4.1作业

四、pta代码分析

2.3,2.4作业

7-2 求奇数分之一序列前N项和 (15 分)

本题要求编写程序,计算序列 1 + 1/3 + 1/5 + ... 的前N项之和。

输入格式:

输入在一行中给出一个正整数N。

输出格式:

在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。

输入样例:

23

输出样例:

sum = 2.549541
#include<stdio.h>
int main()
{
	int n,i,zi=1,mu=1;   
	double sum=0;        
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		sum+=zi*1.0/mu;
		mu+=2;
	}
	printf("sum = %lf\n",sum);
}

思路:输入字符后用1.0比得到分数,再进行累加

错误原因:最后答案格式有瑕疵,注意题目中要求的精确度

收获:注意答案中给定的精确度,不要忘记乘1.0,注意每一项之间的规律

第3章作业

7-10 统计学生成绩 (15 分)

本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式:

输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。

输出格式:

在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例:

7
77 54 92 73 60 65 69

输出样例:

1 0 2 3 1
#include<stdio.h>
int main()
{
	int N;
	int i,x;
	int a=0,b=0,c=0,d=0,e=0;
	while(scanf("%d",&N)!=EOF){
		
		for(i=0;i<N;i++){
			scanf("%d",&x);
		
		if(x>=90){
			a++;
		}else if(x>=80){
			b++;
		}else if(x>=70){
			c++;
		}else if(x>=60){
			d++;
		}else{
			e++;,
		}
	}
		printf("%d %d %d %d %d\n",a,b,c,d,e);
		
	} 
	return 0;
}

思路:输入字符后,通过多个if-else循环,分出不同分数段,输出等级

错误:5个等级,最后要有5个结果

收获:注意所有结果的输出

4.1作业

7-8 猜数字游戏 (15 分)

猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结束程序。如果在到达N次之前,用户输入了一个负数,也输出“Game Over”,并结束程序。

输入格式:

输入第一行中给出两个不超过100的正整数,分别是游戏机产生的随机数、以及猜测的最大次数N。最后每行给出一个用户的输入,直到出现负数为止。

输出格式:

在一行中输出每次猜测相应的结果,直到输出猜对的结果或“Game Over”则结束。

输入样例:

58 4
70
50
56
58
60
-2

输出样例:

Too big
Too small
Too small
Good Guess!
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int num, times;
    scanf("%d %d", &num, &times);
    int i = 0, guess;
    while (i < times) {

        scanf("%d", &guess);
        if (guess < 0) {
            printf("Game Over\n");
            break;
        }
        if (guess > num) {
            printf("Too big\n");
        }
        if (guess < num) {
            printf("Too small\n");
        }
        if (guess == num) {
            if (i == 0) {
                printf("Bingo!\n");
            } else if (i < 3) {
                printf("Lucky You!\n");
            }
            if (i >= 3) {
                printf("Good Guess!\n");
            }
                break;
        }
        i++;
    }
    if (i >= times) {
        printf("Game Over\n");
    }
    return EXIT_SUCCESS;
}

思路:多次运用if-else语句比较guess和num的大小输出结果

错误原因:混淆if-else的不同组合

收获:注意else与最近的if是一组

posted on 2019-10-16 01:50  lim-M  阅读(294)  评论(1编辑  收藏  举报