作业(八)

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

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

实验代码:

#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("请输入学生的数量。\n");
    scanf("%d",&n);  
    printf("请输入考试成绩:\n");
    for(i=0;i<n;i++)        
    {
        scanf("%d",&grade[i]);
        sum=sum+grade[i];
    }
    average=(double)sum/n;                    
    printf("平均分为:%.2lf\n",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名同学.\n",max,inder1);
        }
        if(grade[i]==min)
        {
            inder2=i+1;
            printf("最低分是%d,是第%d名同学.\n",min,inder2);
        } 
    } 
    printf("请输入您所查询学生的成绩:\n"); 
    scanf("%d",&x); 
    for(i=0;i<n;i++) 
    { 
        if(grade[i]==x) 
        { 
            i=i+1; 
       y=0; printf("你所查询的学生是第%d名。\n",i); } } if(y==1) { printf("你所查询的学生不存在。\n",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("请输入插入其中的数字:\n");
    scanf("%d",&x);
    if(x<=0)
    {
        printf("输入错误。请输入正整数。\n");
        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("请输入火柴棍数目:\n");
    scanf("%d",&x);
    if(x>25||x<7)
    {
        printf("您输入的数目有错误。\n");
        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\n",a,b,c);
            }
           }
    return 0;
}

 

实验截图:

 

 

附加题

实验题目:

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

实验代码:

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

 

实验截图:

 

知识点总结

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

实验总结

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

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

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

转载于:https://www.cnblogs.com/wgy774553994/p/6086874.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值