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

第八次作业

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

# include <stdio.h>
# define N 100
int main()
{
    int score[N],max,max1,min,min1,i,n,sum,search;
    float average;
    n=0;
    max1=1;
    min1=1;
    sum=0;
    printf("请输入成绩(输入数据小于0时将结束输入):\n");
    scanf("%d",&score[n]);
    do
    {
        sum=sum+score[n];
        if(n==0)
        {
            min=score[n];
            max=score[n];
        }
        else
        {
            if(max<score[n])
            {
                max=score[n];
                max1=n+1;
                
            }
            if(min>score[n])
            {
                min=score[n];
                min1=n+1;
            }
        }
        n++;
        printf("请输入成绩(输入数据小于0时将结束输入):\n");
        scanf(" %d",&score[n]);
    }while(score[n]>=0);
    average=(float)sum/n;
    printf("平均分是%.2f,最高分是%d,该同学是%d号,最低分是%d,该同学是%d号。\n",average,max,max1,min,min1);
    printf("请输入你想查询的成绩(数据为整数):\n");
    scanf("%d",&search);
    for(i=0;i<n;i++)
    {
        if(search==score[i])
        { 
            printf("%d号 ",i+1);    
        }
    }
return 0;    
}

技术分享

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

# include <stdio.h>
int main()
{
    int i,j,x,a,b[10]={2,5,7,9,12,16,19,21,26,29};
    printf("请输入一个数字:\n");
    scanf("%d",&a); 
    for(i=10;i>=0;i--)
    {
        if(a>=b[i-1])
        {
            for(j=10;j>i;j--)
            {
                b[j]=b[j-1];
            }
            b[i]=a;
            break;
        }
        if(i==0)
        {
            for(j=10;j>i;j++)
            {
                b[j]=b[i];
            }
            b[0]=a;
            break;
        }
    }
    for(x=0;x<=10;x++)
    {
        printf("%d ",b[x]);
    }
return 0;    
}

技术分享

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

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

技术分享

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

# include <stdio.h>
int main()
{
    int i,b[9]={0,0,0,0,0,0,0,0,0,0};
    char a;
    printf("请输入一串数字:\n");
    do
    {
        scanf("%c",&a);
        switch(a)
        {
            case 0:b[0]++;break;
            case 1:b[1]++;break;
            case 2:b[2]++;break;
            case 3:b[3]++;break;
            case 4:b[4]++;break;
            case 5:b[5]++;break;
            case 6:b[6]++;break;
            case 7:b[7]++;break;
            case 8:b[8]++;break;
            case 9:b[9]++;break;
        }
    }while(a>=0&&a<=9);
    printf("%d个0,%d个1,%d个2,%d个3,%d个4,%d个5,%d个6,%d个7,%d个8,%d个9,",b[0],b[1],b[2],b[3],b[4],b[5],b[6],b[7],b[8],b[9]);
return 0;    
} 

技术分享

知识点总结:

1.利用a[N],来实现对大量数据的读取;

2.利用a[N]和循环来从输入的大量数据中提取有用的数据;

3.利用a[N]来对一些特殊程序进行优化。

实验总结:

1.a[N]是从a[0]开始的不是从a[1]开始的;

2.输入一串数字时用char型变量来读取,不用int;

3.两个=是等于一个=是赋值。

第八次作业