首页 > 代码库 > 第八次作业

第八次作业

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

#include<stdio.h>
#define N 100
int main()
{
    int a,b=0,c=0,d=0,e,i,score[N],sum=0,max,min;
    double avg;

    for(i=0;i<=N;i++)
    {
        printf("请输入学生成绩\n");
        scanf("%d",&score[i]);
        if(score[i]<0)
        {
            break;
        }
        b++;
    }
    for(i=0;i<b;i++)
    {
        sum+=score[i];
    }
    avg=(double)sum/b;
    max=score[0];
    min=score[0];
    for(i=0;i<b;i++)
    {
        if(score[i]>max)
        {
            max=score[i];
            c=i;
        }
    }
    for(i=0;i<b;i++)
    {
        if(score[i]<min)
        {
            min=score[i];
            d=i;
        }
    }
    printf("平均数为%lf,第%d个学生有最高分为%d,第%d个学生有最低分为%d\n",avg,c+1,max,d+1,min);
    printf("请输入要查找的学生成绩\n");
    scanf("%d",&e);
    for(i=0;i<b;i++)
    {
        if(e==score[i])
        {
            printf("这是第%d个学生的成绩\n",i+1);
        }
    }
    return 0;
}

技术分享

总结:数组要配合循环一块使用。

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

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

技术分享

技术分享

技术分享

总结:一定要把情况考虑全。

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

#include<stdio.h>
#define N 10
int main()
{
    int match[10]={6,2,5,5,4,5,6,3,7,6};
    int i,j,k;
    for(i=0;i<10;i++)
    {
        for(j=0;j<10;j++)
        {
            for(k=0;k<10;k++)
            {
                if(i+j==k&&match[i]+match[j]+match[k]==12)
                {
                    printf("%d+%d=%d\n",i,j,k);
                }
            }
        }
    }

    return 0;
}

技术分享

总结:用数组处理这个问题比函数要简单。

二、知识点总结

1,数组名不可以赋值。

2,C语言不会对数组下标做越界检查,编数组一定要认真检查。

3,数组下标从0开始!!!

4,对数组数据的访问一定是跟循环结构分不开的,一般情况下,循环变量的值随数组元素的下标变化。

三、实验总结

1,要定义数组。

2,情况要想全,各种分类都要考虑到。

3,就火柴棍那个题我觉得数组要比函数简单。

 

第八次作业