首页 > 代码库 > 作业八

作业八

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

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

#include<stdio.h>
#define N 100
int main()
{
    int score[N],i,n,n1=0,n2=0,sum=0,max,min,n3,n4;
    double average; 
    printf("请输入人数:\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
        {
            printf("请输入成绩:\n");
            scanf("%d",&score[i]);
        if(score[i]==-1)
        {
            break;
        }
        else if(score[i]!=-1)
            {
                n4++; 
            sum=sum+score[i];
            }
        }
        average=(double)sum/n;    
        printf("平均数为%.2f\n",average);    /*平均数*/ 
    max=score[0];
        for(i=0;i<n;i++)
        {
            if(score[i]>max)
            {
                max=score[i];        /*最大值*/
                n1=i;    
            }
        }
        printf("最大分数的学生为%d\n",n1+1);
    min=score[1];
        for(i=0;i<n;i++)
        {
            if(score[i]<min)
            {
                min=score[i];        /*最小值*/
                n2=i;    
            }
        }    
        printf("最低分数的学生为%d\n",n2+1);
        printf("输入一个分数:\n");
        scanf("%d",&n3);
        for(i=0;i<n;i++)
        {        
            
            if(score[i]==n3)
            {
                printf("%d号得到这个分数\n",i+1);
                break;
            }
        }
        return 0;
}

技术分享

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

#include<stdio.h>
#define N 10
int main()
{    int a,b,c,d,i;/*0 1 2 3 4  5  6  7  8 9=0*/
    int shuzu[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(a<=shuzu[i])
    {
        d=i;
        printf("插入到第%d位\t",d);
        break; 
    }
    }
    for(i=d,c=N-1;i<=c;c--)
    {
        shuzu[c]=shuzu[c-1];
    }
          shuzu[d]=a;
    for(i=0;i<N;i++)
    {
          printf("%d  ",shuzu[i]);
    } 
    
    
    
    return 0;
    
 } 

技术分享

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

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

技术分享

附加题

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

#include<stdio.h>
int main()
{
    int shuzi[10]={0},i;
    char x;
    printf("请输入一行数字:\n");
 do
    {
        scanf("%c",&x);
        switch(x)
        {
            case 0:shuzi[0]++;break;
            case 1:shuzi[1]++;break;
            case 2:shuzi[2]++;break;
            case 3:shuzi[3]++;break;
            case 4:shuzi[4]++;break;
            case 5:shuzi[5]++;break;
            case 6:shuzi[6]++;break;
            case 7:shuzi[7]++;break;
            case 8:shuzi[8]++;break;
            case 9:shuzi[9]++;break;
        }
    }while(x!=\n); 
    for(i=9;i>=0;i--)
    {
        printf("数字 %d 出现了 %d 次。\n",i,shuzi[i]); 
    }    
    return 0;
}

技术分享

 

二、知识点总结

1:数据类型 数组名【数组长度】

2:常量表达式中不允许包含变量,但可以包含常量或符号常量

3:可以用int x[N]={1,2,3,4,5,6,7,8,9};这种形式。

4:使用数值型数组时,不能一次引用整个数组,只能逐个引用。

5.要用0-9,否则就毁了。

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

1.求平均数时,用到技术分享这个,但是算平均数时,因为没有输入100个数据,所以要重新输入变量,才能正确求出平均数。

2.插入数组的时候要看清条件,准确找出插入的位置。

3.火柴的没什么好说的,注意数字相加和根数相加。

4.int x[10]={0},给部分元素赋初值,则其后的会被初始化为0,用这种形式配合switch可以容易的求出数字字符的个数。

5.在程序之前给数组赋值:技术分享,这样方便程序的变换使用。

 

作业八