第八次作业

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[11]={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[j-1];
            }
            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[10]={6,2,5,5,4,5,6,3,7,6};
    for(x=0;x<=9;x++)
    {
        for(y=0;y<=9;y++)
        {
            z=x+y;
            if(z<10&&a[x]+a[y]+a[z]==12)
            {
                printf("%d+%d=%d\n",x,y,z);
            }
        }
    }
return 0;    
}

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

# include <stdio.h>
int main()
{
    int i,x,b[10]={0,0,0,0,0,0,0,0,0,0};
    char a;
    printf("请输入一串数字:\n");
    do
    {
        scanf("%c",&a);
        x=a-48;
        b[x]++;
    }while(a>='0'&&a<='9');
    for(i=0;i<=9;i++)
    {
        printf("%d个%d,",b[i],i);
    }
return 0;    
} 

知识点总结:

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

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

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

实验总结:

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

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

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

posted @ 2016-11-21 23:50  王佳诺  阅读(301)  评论(3编辑  收藏  举报