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

第八次作业

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

#include <stdio.h>
#define N 100
int main()
{
    int score[N],sum,i,max,min,num,n,a,ren;
    double average;
    printf("输入人数:\n");
    scanf("%d",&ren);
    for(i=0;i<ren;i++)
    {
        printf("请输入第%d个人的成绩:\n",i+1);
        scanf("%d",&score[i]);
    }
    sum=0;
    for(i=0;i<ren;i++)
    {
        sum+=score[i];
    }
    average=(double)sum/ren;
    printf("这%d个人的平均成绩为%.2lf\n",ren,average);
    max=score[0];
    for(i=0;i<ren;i++)
    {
        if(max<=score[i])
        {
            max=score[i];
            num=i+1;
        }
    }
    printf("最大值为%d,是第%d人\n",max,num);
    min=score[0];
    for(i=0;i<ren;i++)
    {
        if(min>=score[i])
        {
            min=score[i];
            num=i+1;
        }
    }
    printf("最小值为%d,是第%d人\n",min,num);
    printf("请输入某人的成绩:\n");
    scanf("%d",&a);
    for(i=0;i<ren;i++)
    {
        if(a==score[i])
        {
            num=i+1;
            printf("这是第%d人\n",num);
            break;
        }
    }
    if(a!=score[i])
        {
            printf("输入错误\n");
        }
    return 0;
}

技术分享

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

#include<stdio.h>
#define N 11
int main()
{
    int num[N]={2,4,6,8,10,12,14,16,18,20},a,b,i;
    printf("请输入一个数:\n");
    scanf("%d",&a);
    for(i=0;i<N;i++)
    {
        if(a<=num[i]&&a>=num[i-1])
        {
            b=i;
            break;
        }
        else if(a>num[9])
        {
            b=i;
        }
    }
    for(i=N-1;i>b;i--)
    {
        num[i]=num[i-1];
    }
    num[i]=a;
    for(i=0;i<N;i++)
    {
        printf("%d ",num[i]);
    }
    return 0;
}

技术分享

 

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

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

技术分享

 

 

附加题

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

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

 

技术分享

二.知识点总结

1.数组定义方式 :数据类型 数组名【常量表达式】(int a[10]);

2.数组必须先定义 后使用;

3.数组中下标从0开始,引用时下表可以是int型变量或者表达式;

4.数组定义后若对数组进行动态赋值,可用循环来实现;

5.标明数组中的数int num[5]={1,23,4,5,}

三.实验总结

1.附加题用到了ascll值 要知道数字0是从48开始的 只有0-9  附加题那还可以写成num[i-48];

2.第二题比较难 不好想 应该多讨论一下也可以问问别人 弄懂就行;

3.开始编的时候会打一串变量,最好最后把多余的变量删了(程序是检测不出来的);

 

第八次作业