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

第八次作业

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

#include<stdio.h>
#define N 50
int main()
{
    int i,n,a,b,c,x,sum,max,min;
    int num[N];
    double ping;
    printf("请输入一共有多少学生\n");
    scanf("%d",&n);
    sum=0;
    for(i=0;i<n;i=i+1)
    {
        printf("请输入成绩\n");
        scanf("%d",&num[i]);
    }
    for(i=0;i<n;i=i+1)
    {
        sum+=num[i];
    }
    ping=(double)sum/n;
    printf("平均分是%.2lf\n",ping);
    max=num[0];
    for(i=0;i<n;i=i+1)
    {
        if(num[i]>max)
        {
            max=num[i];
        }
    }
    for(i=0;i<n;i=i+1)
    {
        if(num[i]==max)
        {
            a=i+1;
            printf("最高分是%d,是第%d个同学\n",max,a);
        }
    }
    min=num[0];
    for(i=0;i<n;i=i+1)
    {
        if(num[i]<min)
        {
            min=num[i];
        }
    } 
    for(i=0;i<n;i++)
    {
        if(num[i]==min)
        {
            x=i+1;
            printf("最低分是%d,是第%d个同学\n",min,x);
        }
    }
    printf("输入一个成绩,说明是第几个学生的成绩\n");
    scanf("%d",&x);
    for(i=0;i<n;i=i+1)
    {
        if(x==num[i])
        {
            c=i+1;
            printf("是第%d个学生\n",c);
        }
    }
    return 0;    
}

技术分享

 

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

# include <stdio.h>
# define N 11
int main ()
{
  int a,b,c,d,i;
  int scare [N]={1,3,5,7,9,11,13,15,17,19};
  printf("请插入一个数字:\n");
  scanf ("%d",&a);
  d=11;
  for (i=0;i<11;i++)
  {
     if (a<scare[i])
     {
        d=i+1;
        printf("插入到%d位\n",d);
        break;
     }
  }
  
    for (i=d-1,c=N-1;i<=c;c--)
    {
        scare[c]=scare[c-1];
      }
      scare[i]=a;
      for (i=0;i<N;i++)
      {
        printf(" %d",scare[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;
    for(x=0;x<=9;x++)
    {
        for(y=0;y<=9;y++)
        {
            z=x+y;
            if(z>9)
            {
                break;
            }
            if(gen[x]+gen[y]+gen[z]==12)
            {
                printf("%d+%d=%d\n",x,y,z);
            }
        }
    }
    return 0;
}

技术分享

 

附加题

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

#include<stdio.h>
int main()
{
    int numbers[10]={0},i;
    char number;
    printf("请输入一行任意长的数字。\n");
    while(number!=\n)
    {
        scanf("%c",&number);
        numbers[number-0]++;
    }
    for(i=0;i<10;i++)
        printf("%d出现了%d次。\n",i,numbers[i]);
    return 0;
}

技术分享

 

 二、知识点总结

1 数组名中存放的是一个地址常量。

2 数组类型用于指出数组元素的数据类型。

3 数组名与变量名一样,必须遵循标识符命名规则。

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

1 数组名中存放的是常量,也可以提前定义

2 动态赋值通常用循环结构实现

3 存贮单元如果要插入某个数,需要多一位空间

第八次作业