首页 > 代码库 > 实验八

实验八

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

#include<stdio.h>
#define N 5
int main()
{
    int sum=0,max,min,index1,index2,grade,i,score[N];
    double average;
    printf("请输入学生的成绩\n");
    //求平均值 
    for(i=0;i<N;i++)
    {
        scanf("%d",&score[i]);
        sum+=score[i];
    }
    average=(double)sum/i;
    printf("平均分为%.2lf",average);
    //求最大值 
    max=score[0];
    index1=0;
    for(i=0;i<N;i++)
    {
        if(score[i]>max)
        {
            max=score[i];
            index1=i;
        }
    }
    printf("最大值为%d,学生为%d",max,index1);
    //求最小值 
    min=score[0];
    index2=0;
    for(i=0;i<N;i++)
    {
        if(score[i]<min)
        {
            min=score[i];
            index2=i;
        }
    }
    printf("最小值为%d,学生为%d",min,index2);
    //查找 
    printf("请输入一个成绩");
    scanf("%d",&grade);
    for(i=0;i<N;i++)
    {
        if(grade==score[i])
        {
            printf("这是第%d个学生",i);
        }
    }
    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<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
    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[i+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 m,n,z=0;
    int a[10]={6,2,5,5,4,5,6,3,7,6};
    for(m=0;m<=9;m++)
        for(n=0;n<=9;n++)
        {
            z=n+m;
            if(z>9)
            {
                break;
            }
            else if(a[m]+a[n]+a[z]==12)
            {
                printf("%d+%d=%d\n",m,n,z);
            }
        }
    return 0;

}

技术分享

实验总结:

(1)数组变量本身不可以(数组名)不能被赋值

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

(3)在计算时注意数据类型的转换

知识点总结:

(1)数组中的每一个元素都属于同一种数据类型

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

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

(4)C语言对数组不做越界检查,使用时要注意

实验八