第八次作业

一、实验内容        

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

代码:

#include<stdio.h>
#define N 100
int main()
{
    int n,score[N],i,sum,max,min,index,a;
    double average;
    printf("请输入学生的人数
");
    scanf("%d",&n);
    printf("input the score:
");
    sum=0;
    //平均分 
    for(i=0;i<n;i++)
    {
        scanf("%d",&score[i]);
        sum=sum+score[i];
    }
    average=(double)sum/n;
    printf("average=%.2lf
",average);
    //最高分
    max=score[0];
    index=0;
    for(i=0;i<n;i++)
    {
        if(score[i]>max)
        {
            max=score[i];
            index=i;
        }
     } 
    printf("max=%d,index=%d
",max,index);
    //最低分
     min=score[0];
    index=0;
    for(i=0;i<n;i++)
    {
        if(score[i]<min)
        {
            min=score[i];
            index=i;
        }
     } 
    printf("min=%d,index=%d
",min,index);
    //查找 
    printf("input the score you want to find:
");
    scanf("%d",&a);
    index=0;
    for(i=0;i<n;i++)
    {
        if(a==score[i])
        {
            index=i+1;
              printf("这是第%d个学生的成绩
",index);
        }
    }
    return 0;
 }

程序运行结果:

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

代码:

#include<stdio.h>
int main()
{
    int number[11]={1,3,5,7,9,11,13,15,17,19},i,a,m;
    for(i=0;i<=10;i++)
    {
        printf("%d	",number[i]);
        if(i==9)
        {
            break;
        }
    }
    printf("
请输入一个数,有序插入到这组数字中
");
    scanf("%d",&a);
    for(i=0;i<=10;i++)
    {
            if(a<number[0])
            {
                for(m=10;m>=0;m--)
                {
                    number[m]=number[m-1];
                    if(m==0)
                    {
                        break;
                    }
                }
                number[0]=a;
            }
            
            else if(a>number[i]&&a<=number[i+1])
            {
                for(m=10;m>=0;m--)
                {
                    number[m]=number[m-1];
                    if(m<=i+1)
                    {
                        break;
                    }
                }
                number[i+1]=a;
            }
            else if(a>number[9])
            {
                number[10]=a;
            }
    }
    for(i=0;i<=10;i++)
    {
        printf("%d	",number[i]);
    }
    return 0;
 } 

程序运行结果:

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

代码:

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

程序运行结果:

附加题

输入一行任意长的数字,用数组元素作为计数器统计每个数字出现的次数。用下标为0的元素统计0出现的次数,用下标为1的元素统计1出现的次数…

代码:

#include<stdio.h>
int main()
{
    int number[10]={0,0,0,0,0,0,0,0,0,0},i;
    char x;
    printf("输入一组数字,计算每个数字出现的次数
");
    while(x!='
')
    {
        scanf("%c",&x);
        switch(x)
        {
            case '0':number[0]++;break;
            case '1':number[1]++;break;
            case '2':number[2]++;break;
            case '3':number[3]++;break;
            case '4':number[4]++;break;
            case '5':number[5]++;break;
            case '6':number[6]++;break;
            case '7':number[7]++;break;
            case '8':number[8]++;break;
            case '9':number[9]++;break;
        }
    }
    for(i=0;i<=9;i++)
    {
        printf("%d 出现 %d 次
",i,number[i]); 
    }
    return 0;
 } 

程序运行结果:

 二、知识点总结

1、数组的下标是从0开始的。

2、数组不初始化,其元素值为随机数。

3、数组中的每一个元素都属于同一种数据类型。

4、只给部分数组元素赋初值,则其后的元素被初始化为0

5、C语言不会对数组下标做越界检查,所以元素数应该小于等于数组长度。

 三、实验总结(实验中遇到的问题及解决方法) 

1、数组一旦创建,不能改变大小

2、每个数组元素是一个数组类型的变量

3、插入数组的时候要看清条件,准确找出插入的位置。

原文地址:https://www.cnblogs.com/chenqiu/p/6087065.html