作业(八)

这不是占坑,这不是占坑,这不是占坑,重要的事情说三遍

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

实验代码:

#include<stdio.h>
#define N 100 
int main ()
{
    int grade[N],sum=0,i,n,max,min,inder1,inder2,x,y=1;
    double average;  
    printf("请输入学生的数量。
");
    scanf("%d",&n);  
    printf("请输入考试成绩:
");
    for(i=0;i<n;i++)        
    {
        scanf("%d",&grade[i]);
        sum=sum+grade[i];
    }
    average=(double)sum/n;                    
    printf("平均分为:%.2lf
",average);
    min=grade[0];
    max=grade[0];
    for(i=0;i<n;i++)
    {
        if(grade[i]>max)
        max=grade[i];
        if(grade[i]<min)
        min=grade[i];
    }
    for(i=0;i<N;i++)
    {
        if(grade[i]==max)
        {
            inder1=i+1;
            printf("最高分是%d,是第%d名同学.
",max,inder1);
        }
        if(grade[i]==min)
        {
            inder2=i+1;
            printf("最低分是%d,是第%d名同学.
",min,inder2);
        } 
    } 
    printf("请输入您所查询学生的成绩:
"); 
    scanf("%d",&x); 
    for(i=0;i<n;i++) 
    { 
        if(grade[i]==x) 
        { 
            i=i+1; 
       y=0; printf("你所查询的学生是第%d名。 ",i); } } if(y==1) { printf("你所查询的学生不存在。 ",i); } return 0; }

实验截图:

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

实验代码:

#include<stdio.h>
#include<stdlib.h>
#define N 11
int main()
{
    int sum[N]={1,3,5,7,9,11,13,15,17,19},x,i,y=10,c;
    printf("请输入插入其中的数字:
");
    scanf("%d",&x);
    if(x<=0)
    {
        printf("输入错误。请输入正整数。
");
        exit(0); 
    }
    for(i=0;i<N-1;i++)
    {
        if(sum[i]>=x)
        {
            y=i;
            break;
        }
    }
    if(y<10)
    {
         for(i=N-1;i>y;i--)
        {
               sum[i]=sum[i-1];
        }
     }
       sum[y]=x;
    for(i=0;i<=N-1;i++)
    {
        printf("%d ",sum[i]);
    } 
    return 0;
}

实验截图:


实验问题:用数组实现火柴棍等式

实验代码:

#include<stdlib.h>
int main()
{
    int match[10]={6,2,5,5,4,5,6,3,7,6};
    int x,y,a,b,c;
    printf("请输入火柴棍数目:
");
    scanf("%d",&x);
    if(x>25||x<7)
    {
        printf("您输入的数目有错误。
");
        exit(0);
    } 
    y=x-4;
    for(a=0;a<=9;a++)
        for(b=0;b<=9;b++)
        {
            c=a+b;
                if(c>9)
            break;
            if(match[a]+match[b]+match[c]==y)
               {
            printf("%d+%d=%d
",a,b,c);
            }
           }
    return 0;
}

实验截图:

 

附加题

实验题目:

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

实验代码:

#include<stdio.h>
int main()
{
    int sums[10]={0},i,n=0;
    char sum;
    printf("输入
");
    while(sum!='
')
    {
        if(sum<48||sum>57)
        {
            n++;
        }
        scanf("%c",&sum);
        sums[sum-48]++; 
    }
    for(i=0;i<10;i++)
    {
        printf("数字%d出现了%d次
",i,sums[i]);
    } 
    n=n-1; 
    printf("其他字符出现了%d次
",n);
    return 0;
}

实验截图:

知识点总结

1.认知了一维数组的定义,以及一维数组元素的引用。
2.学习如何对一维数组赋值的方法:动态赋值,逐个赋值,定义赋值 。
3.利用数组再次优化函数,使函数更加便捷。
4.运用define来确定数组的元素个数。 

实验总结

1.记住数组里的数是最大的元素个数。

2.数组的元素是从0开始计数。

3.若不填满数组则剩下元素值为0,而超过数组数则会使程序错误,甚至瘫痪。

原文地址:https://www.cnblogs.com/wgy774553994/p/6086874.html