• 第四次作业


     

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

    预习

    1、数组视频全看了

    2、学到了一维数组和二维数组,如何定义使用数组

    3、数组的排序,不能熟练使用二维数组,只能初步定义

    第一题:

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

    作业要求:

    本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。

    代码:

     1 #include<stdio.h>
     2 int main(){
     3     int n,sum=0;
     4     int i,judge=0;
     5     double average=0;
     6     scanf("%d",&n);
     7     if(n>=1&&n<=10){
     8         int a[n];
     9         for(i=0;i<n;i++){
    10             scanf("%d",&a[i]);
    11             sum=sum+a[i];
    12         }
    13         average=1.0*sum/n;
    14         printf("%.2f
    ",average);
    15         for(i=0;i<n;i++){
    16             if(a[i]>average){
    17                 printf("%d ",a[i]);
    18             }
    19         }
    20         for(i=0;i<n;i++){
    21             if(a[i]!=average)
    22           judge=1;
    23         }
    24         if(judge==0){
    25           printf("
    ");
    26           
    27         }
    28     }
    29     else{
    30         printf("Invalid.");    
    31     }
    32     return 0;
    33 }

    思路:

    第一:定义变量,输入n;

    第二:根据题目要求,n若不在1n10内,则输出Invalid.;

    第三:n若在1n10内,则执行循环输入a[i],sum+=a[i];

    第四:求平均数average=1.0*sum/n;

    第五:循环判断a[i]是否大于average,若大于则输出a[i];

    第六:定义变量judge=1,假设数组中有数等于average;

    第七:循环判断a[i]是否不等于average,若是则令judge=0;

    第八:如果judge=0,则输出空行;

    结束

    流程图:

     运行过程:

     做得很轻松一遍过

     调试一下

     运行成功

    第二题:

    7-3 交换最小值和最大值 

    作业要求:

    本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。注意:题目保证最大和最小值都是唯一的。

    代码:

     1 #include<stdio.h>
     2 int main(){
     3     int n,i;
     4     scanf("%d
    ",&n);
     5     int a[n];
     6     for(i=0;i<n;i++){
     7         scanf("%d",&a[i]);
     8     }
     9     if(n==2){
    10         if(a[0]>a[1])
    11         printf("%d %d ",a[1],a[0]);
    12         else
    13         printf("%d %d ",a[0],a[1]);
    14     }
    15     else{
    16         int max=a[0],index1=0;
    17         int min=a[0],index2=0;    
    18         for(i=0;i<n;i++){
    19             if(max<a[i]){
    20                 max=a[i];
    21                 index1=i;
    22             }                            
    23         }
    24         a[index1]=a[n-1];
    25         a[n-1]=max;
    26         for(i=0;i<n;i++){
    27             if(min>a[i]){
    28                 min=a[i];
    29                 index2=i;    
    30             }                            
    31         }
    32         a[index2]=a[0];
    33         a[0]=min;
    34         for(i=0;i<n;i++){
    35             printf("%d ",a[i]);        
    36         }
    37     }
    38 
    39     return 0;
    40 }

    思路:

    第一:定义变量,输入n;

    第二:循环输入a[i];

    第三:如果n=2,进入条件语句(第四,第五);

    第四:如果a[0]>a[1],输出a[1],a[0];

    第五:如果a[0]<=a[1],输出a[0],a[1];

    第六:如果n!=2,定义变量max=min=a[0],index1=index2=0;

    第七:i从0到n-1如果max<a[i]则max=a[i],index1=i;

    第八:a[index1]=a[n-1],a[n-1]=max;

    第九:i从0到n-1如果min>a[i]则min=a[i],index2=i;

    第十:a[index2]=a[n-1],a[n-1]=min;

    最后:循环输出数组a

    流程图:

    运行过程:

     写pta出现的问题

     首次调试

     在这是对的,注意下一波

     a[3]出现失误

     想了很久,发现是我的for循环值会覆盖,于是我把for循环拆成两个

     

     调试一下新代码,perfect

    总结:

      学习了简单的数组运用,选择排序,冒泡排序,还看了指针的一些内容。

      学习了数组以后,发现了解数组简单,但是在运用这方面就有点落后了,编程的代码不能如自己所想的那样,最后结果不如我所愿。我是这么去解决的,遇到了就先改,改到自己认为的极限以后,再去考虑补,打补丁来解决问题。在下一段的学习中,我会先进行简单的运算,类似于与计算机进行交流,思考好了如何编程,再去码,不想当然的去码代码。

    点评:

     https://www.cnblogs.com/wangxiangbo/p/10165493.html

    https://www.cnblogs.com/chengxu230921/p/10170865.html

    https://www.cnblogs.com/1a2B3c4D/p/10160490.html

    累积代码行数和时间:

    累积博客字数和时间:

  • 相关阅读:
    01-文件系统
    适配器模式,新老系统兼容
    01-Entity FrameWork如何控制数据的变化
    .Net实战之反射操作篇
    .Net实战之反射相关类之间的人体经络关系
    .Net实战之反射外卖计费
    [转]UINavigationController 返回的方法汇总
    [转]AFNetWorking使用笔记
    vue----子组件引用vux popup mask遮罩在最上层解决办法 z-index问题
    vue系列---vue项目(已安装vuex)中引入jquery
  • 原文地址:https://www.cnblogs.com/159357www/p/10165685.html
Copyright © 2020-2023  润新知