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

第八次作业

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

#include<stdio.h>
#include<stdlib.h>
#define N 40
int main()
{
    int n,i,sum=0,max,min,grade,a=1,b=1,c=1;
    int score[N]={0},imax[N],imin[N],grades[N];
    double average;
    char x;
    printf("请输入学生的数量(<40)\n");
    scanf("%d",&n);
    printf("请输入学生成绩:\n");
    for(i=1;i<=n;i++)
    {
        scanf("%d",&score[i]);
        sum=sum+score[i];
    }
    average=(double)sum/n;
    printf("平均成绩为%.2lf\n",average);
    max=score[1];
    min=score[1];
    for(i=1;i<=n;i++)
    {
        if(score[i]==max)
        {
            imax[a++]=i;
        }
        else if(score[i]>max)
        {
            max=score[i];
            a=1;
            imax[a++]=i;
        }
        if(score[i]==min)
        {
            imin[b++]=i;
        }
        else if(score[i]<min)
        {
            min=score[i];
            b=1;
            imin[b++]=i;
        }
    }
    printf("成绩最高的同学为:");
    for(i=1;i<a;i++)
    {
        printf("%d  ",imax[i]);
    }
    printf("号\n"); 
    printf("成绩最低的同学为:");
    for(i=1;i<b;i++)
    {
        printf("%d  ",imin[i]);
    }
    printf("号\n");
    printf("是否查询?(Y)\n");
    fflush(stdin);
    if((x=getchar())==Y||x==y) 
    printf("请输入你想查找的成绩。\n");
    scanf("%d",&grade);
    for(i=1;i<=n;i++)
    {
        if(score[i]==grade)
        {
            grades[c]=i;
            c++;
        }
    }
    if(c==1)
    printf("成绩不存在。\n"); 
    else
    {
        printf("符合你所查找成绩的学生有:");
        for(i=1;i<c;i++)
        printf("第%d名学生  \n",grades[i]);
        printf("总共有%d名学生。",c-1);
    }
}

技术分享

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

#include<stdio.h>
int main()
{
    int i,x,a,b[11]={1,3,5,7,9,11,13,15,17,19};
    scanf("%d",&a); 
    for(i=10;i>=0;i--)
    {
        if(a>=b[i-1])
        {
            for(x=10;x>i;x--)
            {
                b[x]=b[x-1];
            }
            b[i]=a;
            break;
        }
        if(i==0)
        {
            for(x=10;x>i;x--)
            {
                b[x]=b[x-1];
            }
            b[0]=a;
            break;
        }
    }
    for(i=0;i<11;i++)
    {
        printf("%d ",b[i]);
    }    
}

技术分享

技术分享

技术分享

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

#include<stdio.h>
int main()
{
    int a,b,c,i[10]={6,2,5,5,4,5,6,3,7,6};
    for(a=0;a<=9;a++)
    {
        for(b=0;b<=9;b++)
        {
            for(c=0;c<=9;c++)
            {
            if(a+b==c&&i[a]+i[b]+i[c]==12)
            {
                printf("%d+%d=%d  ",a,b,c);
            }
            }
        }
    }
 }

技术分享

二、知识点总结

1、数组在定义的时候一定要有范围声明,这是由于c语言要先划定储存空间。

2、c语言不能定义动态数组。

三、实验报告

1、我只想说一件事,大家以后没事别重装系统!!!!!!!

第八次作业