第四次作业

第四次作业

作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523

我观看了四个视频,通过观看视频我学习到了如何定义数组,怎样给数组中的元素排序,逆序排列和顺序排列,但是针对于冒泡排序,较大的数排前面和较小的数排后面这两种情况给我的感觉是一样的,也就是一个程序就看可以完成,我并没有想出两种方法(编程想法)

第十三次作业:

题目7-2 输出所有大于平均值的数


#include <stdio.h>
int main(void)
{
 int a[10],total_times;
 int i=0;
 double sum=0,average=0;
 
 scanf("%d",&total_times);
 if(total_times<=0||total_times>10){
  printf("Invalid.");
  return 0;
 }
 for(i=0;i<total_times;i++){
  scanf("%d",&a[i]);
  sum=sum+a[i];
 }
 average=sum/total_times;
 if(total_times==1){
  printf("%.2lf ",average);
  return 0;
 }
 printf("%.2lf ",average);
 for(i=0;i<total_times;i++){
  if(a[i]>average){
   printf("%d ",a[i]);
  }
 }

 return 0;
 }

解题思路:

第一步,输入总循环次数,判断循环次数是否在要求范围内

第二步,输入数值,并利用sum求出总和

第三步,求出average平均数

第四步,判断各个数值与平均数的大小,输出大于平均数的数值与平均数

流程图:

 

出现问题:

当total_times=0时,输出格式错误

错误原因是total_times=0时,输出有两个回车,而我的程序只有一个回车

所以,在程序中插入

 if(total_times==1){
  printf("%.2lf

",average);
  return 0;
 }

使其输出结果时带有两个回车

第十四次作业 7-5 将数组中的数逆序存放

#include <stdio.h>
int main(void)
{
    int i1=0,i2=0,times=0,a[10],b[10];
    scanf("%d",&times);
    i2=times-1;
    for(i1=0;i1<times;i1++,i2--){
        scanf("%d",&a[i1]);
        b[i2]=a[i1];
    }
    for(i2=0;i2<times;i2++){
        if(i2<i1-1){
            printf("%d ",b[i2]);
        }
        else{
            printf("%d",b[i2]); 
        } 
    }
    return 0;
}

解题思路:

第一步,输入要数值的个数

第二步,输入第一组数组的数值,并令第二组数组倒序令其赋值

第三步,正序输出第二组数组

流程图:

 遇到的问题:

在数组赋值时,并没有达到预期效果,即a[0]=b[i-1],a[1]=b[i-2]

 因为两个数组使用了同一个计数器,使得a[0]=b[0],所以,对b[i]单独使用一个计数器

 

 总结:

学习数组之后,数组对于处理问题有很大帮助,但要注意计数器,计数器可能会影响数组对于数值的储存和调用

 评论链接:

https://www.cnblogs.com/moyoujiang/p/10166337.html

https://www.cnblogs.com/abcefg123/p/10161739.html

https://www.cnblogs.com/zcybky/p/10152047.html

原文地址:https://www.cnblogs.com/error203/p/10160025.html