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

第八次作业

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

 

 

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

# include<stdio.h>
# define N 9999
int main()
{
    int a,b,d,i,sum=0,max,min,m=0,e=0;
    double average;
    int sore[N];
    printf("请输入人数\n");
    scanf("%d",&b);
    for(i=0;i<b;i++)
    {
        printf("输入学生成绩\n");
        scanf("%d",&sore[i]);
        sum=sum+sore[i];
    }
    average=(double)sum/b;
    printf("平均数为%.2f\n",average);
    max=sore[0];
     min=sore[0];
    for(i=0;i<b;i++)
    {
        
        if(sore[i]>max)
        {
            e=i+1;
        }
    }
        for(i=0;i<b;i++)
        {
        if(min>sore[i])
        {
            m=i+1;
        }
    }
    printf("最大分数的学生为%d\n",e);
    printf("最小分数的学生为%d\n",m);
    printf("输入一个分数,输出他是谁\n");
            scanf("%d",&d);
        for(i=0;i<b;i++)
       {
         
          if(sore[i]==d)
        {
            printf("他是%d\n",i+1);
            break;
        }
     } 
     return 0;
 } 

技术分享

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

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

技术分享

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

# include<stdio.h>
# define N 10
int main()
{
    int a,b,c,d,e,i;
    int shu[N]={1,3,5,7,9,11,13,15,17};
    printf("输入一个数1,3,5,7,9,11,13,15,17\n");
    scanf("%d",&a);
    for(i=0;i<N;i++)
    {
        if(shu[i]>=a)
        {
            b=i;
            printf("%d\t",b);
            break;
        }
     }
    for(i=b,c=N-1;i<=c;c--)
     {
        shu[c]=shu[c-1];
      }
      shu[b]=a;
      for(i=0;i<N;i++)
      {
          printf("%d  ",shu[i]);
       }
       return 0; 
}
 

技术分享

技术分享

技术分享

附加题

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

 

# include<stdio.h>
# define N 10
int main()
{
    int a;
    int shu[N]={0};
    char e;
    printf("输入一串数\n");
   do{
         scanf("%c",&e);
     switch(e)
    {
        case 0: shu[0]++;
            break;
            case 1: shu[1]++;
            break;
            case 2: shu[2]++;
            break;
            case 3: shu[3]++;
            break;
            case 4: shu[4]++;
            break;
            case 5: shu[5]++;
            break;
            case 6: shu[6]++;
            break;
            case 7: shu[7]++;
            break;
            case 8: shu[8]++;
            break;
            case 9: shu[9]++;
            break;
        }
    }while(e!=\n);
    for(a=0;a<10;a++)
        {
          printf("这个数%d,共有%d个\n",a,shu[a]);
        }
 } 

 

技术分享

知识点总结:

1.数组和变量一样应该先定义后使用,数组和变量一样有整型,字符型,浮点型等,使用数组需要定义一个数组名和数组元素的个数,

2.数组必须遵循标识符命名规则,数组是有顺序的,有数组的下标变量,从零开始       格式数组名[下标]

3.有数组就有循环, 不赋值的数组为随机数, #define符号常量可以在开始应用,

4.常量变达式用方括号括起来,注意下标不要越界,

实验总结:

1.附加题不会瞄了一眼,

2.对于有些题看见是就是一脸懵连思路都没有,没办法,有的时候只能放下,过一段时间说不定会有新思路,

3.第一题运行不来时返回去检查居然发现

scanf("%d",&sore[i]);这里写错了,非常简单的错误,找了半天才看见,
4.在第二题中数组退一位想半天才想出来,在草稿纸上写了半天,

 

第八次作业