第八次作业

 1.输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩。

#include<stdio.h>
#define N 100
int main()
{
    int score[N],i,n,grade,index2,index1,m=0;
    double ave,max,min,sum;    
    for(i=0;i<N;i++)
    {
        printf("请输入学生的成绩");
        scanf("%d",&score[i]);
        if(score[i]==-1)
        {
            break;
        }    
        m++;
    }
    sum=0;
    for(i=0;i<m;i++)
    {
        sum+=score[i];
        ave=sum/(double)m;
    }
    printf("平均数为%.2lf\n",ave);
    //最大最小值
    max=score[0];
    index1=0; 
    for(i=0;i<=m;i++)
    {
        if(score[i]>max)
        {
            index1=i;
            max=score[i];
        }
    }
    printf("最大值为%.2lf,是第%d位同学\n",max,index1+1);
    min=score[0];
    index2=0;
    for(i=0;i<m;i++)
    {
        if(score[i]<min)
        {
            index2=i;
            min=score[i];
        }
    }
    printf("最小值为%.2lf,是第%d位同学\n",min,index2+1);
    //查找 
    printf("请输入你想找的分数\n");
    scanf("%d",&grade);
    for(i=0;i<m;i++)
    {
        if(grade==score[i])
        {
            printf("你想找的分数在%d位\n",i+1);
        }
    }
    return 0;
}

 

2.现有一个有序正整数数组(从小到大排序),输入一个数,插入到数组中,要求插入后的数组仍然有序。对插入到最前、最后、中间位置三种情况进行验证。

#include<stdio.h>
int main()
{
    int i,n,m;
    int a[10]={1,3,5,7,9,11,13,15,17};
    for(i=0;i<9;i++)
    {
        printf("%d ",a[i]);
    }
    printf("请输入一个正整数");
    scanf("%d",&n);
    for(i=0;i<10;i++)
    {
        if(n>a[i]&&n<a[i+1])
        {
            for(m=9;m>i+1;m--)
            {
                a[m]=a[m-1];
                a[m-1]=n;
            }
            
        }
        else if(n>a[8])
        {
            a[9]=n;
        }
        else if(n<a[0])
        {
            for(m=9;m>=0;m--)
            {
                a[m]=a[m-1];
            }
            a[0]=n;
        }
        printf("%d ",a[i]);
    }
    return 0;
}

 

 

  3.用数组实现火柴棍等式

#include<stdio.h>
int main()
{
    int x,y,sum;
    int match[10]={6,2,5,5,4,5,6,3,7,6};
    for(x=0;x<=9;x++)
    {
        for(y=0;y<=9;y++)
        {
            sum=x+y;
            if(sum>9)
            {
                break;
            }
            if(match[x]+match[y]+match[sum]==12)
            {
                printf("%d+%d=%d\n",x,y,sum);
            }
        }
    }
        return 0;
}

二、知识点总结

    (1)数组的定义:定义方式:数据类型  数据名【数据长度】

    (2)数组必须先定义,后使用

    (3)C语言不会对数组下标做越界检查

    (4)数组名不能被赋值

    (5)  数组名【下标】   下标从0开始

    (6)  数组一旦创建,不能改变大小

    (7)  数组中的元素在内存中是连续一次排列的

    (8)  下标不仅可以是一个常数、变量,还可以是一个表达式。

三、实验总结

     (1)  a[N]是从0开始的不是从1开始的

     (2) 插入数据时,要先把位置空出来,将后面的数依次往后挪。

     (3)  忘记赋初值

posted @ 2016-11-22 22:14  一范红宇  阅读(143)  评论(3编辑  收藏  举报