第三次作业

博客链接:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360

问题:

7-5 奇偶分家 (10 分)

给定N个正整数,请统计奇数和偶数各有多少个?

输入格式:

输入第一行给出一个正整N1000);第2行给出N个正整数,以空格分隔。

输出格式:

在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。

输入样例:

9
88 74 101 26 15 0 34 22 77

输出样例:

3 6


解题思路:
1.定义变量N,i,n,a=0,b=0 输入位数n,数字N
2.执行语句 如果是偶数求a和 否则求b和
3.输出a,b值

实验代码:
#include<stdio.h>
int main(void)
{
  int N,i,n,a=0,b=0;
  scanf("%d",&n);
  for(i=0;i < n;i++){
    scanf("%d",&N);
  if(N%2 == 0){
    a++;
    }
  else{
    b++;
  }
  }
  printf("%d %d",b,a);
  return 0;
}
 

   流程图:

 

   本题调试过程碰到问题及解决办法:

1.输入数值

2.循环到偶数

 3.循环到奇数

4.输出数值

  问题2:

7-3 统计学生平均成绩与及格人数 (15 分)

本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。

输入格式:

输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。

输出格式:

按照以下格式输出:

average = 成绩均值
count = 及格人数

其中平均值精确到小数点后一位。

输入样例:

5
77 54 92 73 60

输出样例:

average = 71.2
count = 4

解题思路:
1.定义变量i=1,n=0,grade=0,count=0,sum=0;count为及格人数,grade为成绩
2.输入人数,在输入成绩
3.通过循环算出大于60的成绩,在算出平均数
4.输出平均值和及格人数
实验代码:
#include<stdio.h>
int main(void)
{
  int i=0,n=0,grade=0,count=0,sum=0;
  double average=0;
  scanf("%d",&n);
  for(i=1;i<=n;i++){
    scanf("%d",&grade);
    sum=sum+grade;
    if(grade>=60){
      count++;
    }
  }
  if(n>0)
    printf("average = %.1f
",sum*1.0/n);
  else
    printf("average = %.1f
",sum*1.0);
  printf("count = %d",count);
  return 0;
}

   流程图:

 

     本题调试过程碰到问题及解决办法:

   1.先输入数值

   2.通过执行语句算出平均值比输出

   3.通过执行语句算出及格人数并输出

   问题3:

7-1 求整数的位数及各位数字之和 (15 分)

对于给定的正整数N,求它的位数及其各位数字之和。

输入格式:

输入在一行中给出一个不超过10^9的正整数N。

输出格式:

在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。

输入样例:

321

输出样例:

3 6
解题思路:
1.定义变量N,sum=0,m sum为各位数字之和,m为整数的位数
2.输入整数N
3.执行语句,求出m,sum

实验代码:
#include<stdio.h>
int main(void)
{
  int N,sum=0,m; 
  scanf("%d",&N);
    if(N<0){
    N=-N;
  }
  m=0;
  for(N!=0;N;N/=10){
      m++;
      sum+=N%10;
  }  
  printf("%d %d",m,sum);
  return 0;
}

   流程图:

    本题调试过程碰到问题及解决办法:

   1.输入数值321

    2.执行循环语句

   3.输出位数m  和  各位数的和n 的值

   4.前面是求位数 后面求和 但是只执行do  while语句  后面输出和为0。所以只能把两个数用一个循环写出来。

   总结:

  1.通过这几周的学习,内容上增加了很多东西还有就知识的延申,比如for循环语句的运用及多个for的连用套用(这个理解起来比较难),还有学习了while语句,do-while语句,还有

     swicth case break 的语句及运用,后面还学了函数的调用

   2.在学习上我发现了自己的不足,许多学过的东西我只是停留在片面没有,通过pta作业发现自己课下没有巩固,许多问题都是通过同学才能做出来;还有自己的听课状态需要改进,不

     能每次老师提问我都答不出来答案,听老师说很多同学自学的速度超过了他讲课的速度,这才让我看到别人的努力,这方面我要大幅度的去改进,也不是要多好,最起码老师讲过的都

     能跟上,课后回来还要复习。

   3.通过这几周的学习认为for的很多套用理解困难,但通过同学的讲解懂得了一点,但是还是要去深入。


 

评论他人博客:
https://www.cnblogs.com/liuweiliuwei/p/10016885.html#4127450 刘 伟
https://www.cnblogs.com/asdfghjklasdfghjkl/p/10003892.html 孙成龙
https://www.cnblogs.com/chen0803/p/10046139.html 陈悦安
原文地址:https://www.cnblogs.com/1006cy/p/10034337.html