第八次实验作业

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

#include<stdio.h>
int main()
{
    int N;
    printf("请输入班级人数");
    scanf("%d",&N);  
    int score[N],i,sum,max,min,grade,n=0,index1,index2;
    double average;
    for(i=0;i<N;i++)
    {
        printf("请输入学生的成绩:\n");
        scanf("%d",&score[i]);
    }
    sum=0;
    //求和、平均值 
    for(i=0;i<N;i++)
    {
        sum+=score[i];
    }
    average=(double)sum/N;
    printf("average=%.2lf\n",average);
    //最大值 
    max=score[0];
    index1=0;
    for(i=0;i<N;i++)
    {
        if(score[i]>max)
        {
            index1=i;
            max=score[i];
            
        }
    }
    printf("最大值为%d,是第%d个学生\n",max,index1+1);
    //最小值 
    min=score[0];
    index2=0;
    for(i=0;i<N;i++)
    {
        if(score[i]<min)
        {
            min=score[i];
            index2=i;
            
        }
    }
    printf("最小值为%d,是第%d个学生\n",min,index2+1);
    printf("输入你想找的同学的成绩:\n");
    scanf("%d",&grade);
    for(i=0;i<N;i++)
    {
        if(grade==score[i])
        {
            printf("找到,是第%d个学生\n",i+1);
            n++;
        }
    }
    printf("共有%d个学生",n);
    return 0;
}

 

 

 

 

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

#include<stdio.h>
int main()
{
    int i,n,p;
    int array[11]={0,11,22,33,55,66,77,88,99,100};
    for(i=0;i<11;i++)
    {
        printf("%d ",array[i]);
    }
    printf("请输入一个正整数整数:\n");
    scanf("%d",&n);
    for(i=0;i<11;i++)
    {
        if(n>array[i]&&n<array[i+1])
        {
            for(p=10;p>i;p--)
            {
                array[p]=array[p-1];    
            }
            array[i+1]=n;
        }
        else if(n>array[9])
        {
            array[10]=n;
        }
        else if(n<array[0])
        {
            for(p=10;p>=0;p--)
            {
                array[p]=array[p-1];
            }
            array[0]=n;
        }
        printf("%d ",array[i]);
    }
    return 0;
}

 

 

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

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

知识点总结:

1.数组的特点

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

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

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

2.一维数组的引用

(1)数组必须先定义,后使用。

(2)只能逐个引用数组元素,不能一次引用整个数组

(3)每个数组元素是一个数组类型的变量。

3.一维数组的赋值

(1)数组不初始化,其元素值为随机数。

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

(3)当全部数组元素赋初值时,可不指定数组长度

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

1.数组变量本身(数组名)不能被赋值。

2.数组必须先定义,后使用。

3.数组名【下标】下标从0开始。

4.数组中的每一个元素都属于同一种数据类型

5.数组一旦创建,不能改变大小

6.for后便不要加分号

posted @ 2016-11-22 21:55  计科1601王瑶  阅读(252)  评论(3编辑  收藏  举报