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

第八次作业

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

#include<stdio.h>
#define N 100
int main()
{
    double score[N],sum=0,average=0,max,min,num;
    int i,n;
    printf("请输入有多少人?\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("请输入学生成绩:\n");
        scanf("%lf",&score[i]);
    }
    for(i=0;i<n;i++)
    {
        sum+=score[i];
    }
    average=sum/n;
    printf("平均成绩是:%.2lf\n",average);
    max=score[0];
    for(i=0;i<n;i++)
    {
        
        if(max<score[i])
        {
            max=score[i];
        }
    }
    printf("最大值为:%.2lf\n",max);
    min=score[0];    
    for(i=0;i<n;i++)
    {
        
        if(min>score[i])
        {
            min=score[i];
        }
    }
    printf("最小值为:%.2lf\n",min);
    printf("请输入需要查找的成绩:\n");
    scanf("%lf",&num);
    for(i=0;i<n;i++)
    {
        if(score[i]==num)
        {
            printf("查找到的成绩为%.2lf的是第%d个\n",num,i+1);
        }
    }
    return 0;
}

技术分享

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

#include<stdio.h>
#include<stdlib.h>
#define N 6
int main()
{
    int series[N]={2,4,6,8,10},number,i,ii;
    for(i=0;i<N-1;i++)//输出已有数列
    {
        printf("%d ",series[i]);
    }
    printf("请输入您要插入的数字:\n");
    scanf("%d",&number);
    if(number>series[4])
    {
        series[5]=number;
        for(i=0;i<6;i++)
        {
            printf("%d ",series[i]);
        }
        exit(0);
    }
    else if(number<series[4]&&number>series[0]) 
    {
        for(i=4;i>=0;i--)
        {
            if(number>=series[i])
            {
                for(ii=N-2;ii>=i+1;ii--)
                {
                    series[ii+1]=series[ii];
                }
                series[i+1]=number;
                for(i=0;i<6;i++)
                {
                    printf("%d ",series[i]);
                }
                break;
            }
        }    
    }
    else
    { 
        for(i=4;i>=0;i--)
        {
            series[i+1]=series[i];
        }
        series[0]=number;
        for(i=0;i<6;i++)
        {
            printf("%d ",series[i]);
        }
    
    } 
    return 0;
}

技术分享

技术分享

技术分享

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

#include<stdio.h>
#define N 10
int main()
{
    int i,a,b,c;
    int vary[N]={6,2,5,5,4,5,6,3,7,6};
    for(a=0;a<9;a++)
    for(b=0;b<9;b++)
    {
        if(a+b>9)
        {
            break;
        }
        else
        {
            c=a+b;
            if(vary[a]+vary[b]+vary[c]==12)
            { 
                printf("%d+%d=%d\n",a,b,c);
            }
        }
    }
/*    if(vary[a]+vary[b]+vary[c]==12)
    {
        printf("%d+%d=%d",a,b,c);
    }*/
    return 0;
}

技术分享

实验总结:1.第二个代码本来的想法很简单,但用代码实现就变得很麻烦。

2.火柴棍问题中的break可以替换成continue。

知识点总结:1 .只给部分数组元素赋初值,则其后的元素被初始化为0.

2.当全部数组元素赋初值时,可以不指定数组长度。

3.数组不初始化,其数组内的元素为随机值。

4.数组往往与循环相连。

5.数组下标从零开始最大到九,并允许快速访问。

第八次作业