第四次博客

https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523

  这两周我看了mook上有关数组的七节课,学习了一维数组和二维数组的使用,并完成了相关的课后作业,这使得我对数组有了更全面的了解。

  在数组方面的知识我觉得我还有很多掌握不好的地方,比如二维数组、储存字符的数组我运用的还不是很熟练,特别使字符数组中的结束符"\0"的运用让我感到很困难,字符数组的使用与普通数组有很大区别,我觉得我应该把更大精力放在字符数组的学习上了。

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

 

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

解题思路

1、定义两个整型变量i,n;定义两个浮点型变量sum,average.

2、先由if-else语句判断输入的n是否符合题意,符合怎进入for循环,对a[i]连续赋值,否则输出"Invauld."

3、由for循环计算出sum和average的值。

4、将符合题意的值输出,若没有则输出空行。

流程图

运行结果

出现的问题

当没有数符合条件时,不会输出空行。

解决方法

后来我通过请教老师及询问同学,并通过自己研读题目,终于发现了之一问题。

个人总结

这一周我们刚刚接触数组,很多地方还不是清楚,总体来说数组还是很难的,其中有很多细节的地方要注意,

比如赋初值的方法以及下标的注意点等等,但我相信只要我认真学,是可以把这部分学好的。

7-3 交换最小值和最大值 
#include<stdio.h>
int main()
{
    int i,n,a1,b,i1,i2;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    i1=0;
    for(i=1;i<n;i++){
        if(a[i]<a[i1])
        i1=i;
    }
    a1=a[i1];
    a[i1]=a[0];
    a[0]=a1;
    i2=0;
    for(i=1;i<n;i++){
        if(a[i]>a[i2])
        i2=i;
    }
    b=a[i2];
    a[i2]=a[n-1];
    a[n-1]=b;
    for(i=0;i<n;i++)
    printf("%d ",a[i]);
    return 0; 
}

解题思路

1、定义整形变量i,n,a1,b,i1,i2和数组a[i]。

2、由for循环连续对a[i]赋值。

3、用for循环找出最大值与最小值,并分别与最后的数与第一个数交换位置。

4、输出交换顺序后的序列。

流程图

运行结果

出现的问题:

无法条理清晰的找到最大值与最小值并与第一位和最后一位交换位置,在求最小值时误求

最大值,使整个程序发生错误。

解决方法

通过多次调试发现最小值无法按照要求换位,找出问题。

个人总结

这一周我更深入的学习了数组,了解到了数组的特性,数组可以很方便的储存并调用数据,这是数组的优势所在,只要用好数组,我们可以很好的简化代码。

代码行数、博客字数统计

点评博客:

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

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

3:https://www.cnblogs.com/error203/p/10160025.html

posted on 2018-12-23 19:35  浦荣成  阅读(202)  评论(6编辑  收藏  举报