首页 > 代码库 > 第九次实验

第九次实验

    1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)

#include <stdio.h>
int max(int grade[],int n);
int min(int grade[],int n);
void find(int grade[],int n);
void shuru(int grade[],int n);
double average(int grade[],int n);
void paixv(int score[],int n);
void putout(int grade[],int n);
#define N 10000
int main()
{
    int ren,grade[N],score[N];
    float pingjun;
    printf("请输入学生人数\n");
    scanf("%d",&ren);
    shuru(grade,ren);
    average(grade,ren);
    max(grade,ren);
    min(grade,ren);
    find(grade,ren);
    paixv(score,ren);
    putout(grade,ren);
    return 0;
}


double average(int grade[],int n)
{
    int s,sum=0;
    float pingjun;
        for(s=0;s<n;s++)
    {
        sum+=grade[s];
    }
    pingjun=(float)sum/n;
    printf("平均分是%f\n",pingjun); 
}



void shuru(int grade[],int n)
{
    int s;
    for(s=0;s<n;s++)
    {
        printf("请输入学生的分数:\n");
        scanf("%d",&grade[s]);
    }
}




int max(int grade[],int n)
{
    int s,max,f,ren;
    max=grade[0];
    for(s=0;s<n;s++)
    {
        if(grade[s]>=max)
        {
            max=grade[s];
            f=s+1;
        }
    }
    printf("成绩最高为%d分,他是第%d个同学\n",max,f);
}
int min(int grade[],int n)
{
    int a,g,ren,zuixiao,s;
    zuixiao=grade[0];
    g=1;
    for(s=1;s<n;s++)
    {
        if(grade[s]<=zuixiao)
        {
            zuixiao=grade[s];
            g=s+1;
        }
    }
    printf("成绩最低为%d分,他是第%d个同学\n",zuixiao,g);
}
void find(int grade[],int n)
{
    int ren,s,g,h,a;
    printf("请输入一个学生的成绩:\n");
    scanf("%d",&h);
    for(s=0;s<n;s++)
    {
        if(h==grade[s])
        {
            g=s+1;
            printf("这是第%d个学生的成绩\n",g);
        }
    }
}
void paixv(int score[],int n)
{
    int i,j,temp,flag;
    for(i=0;i<n-1;i++)
    {
        flag=0;
        for(j=0;j<n-1-i;j++)
        {
            if(score[j]>score[j+1])
            {
                temp=score[j];
                score[j]=score[j+1];
                score[j+1]=temp;
                flag=1;
            }
        }
        if(flag==0)
        break;
    }
}
void putout(int score[],int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%d\n",score[i]);
    }
} 

技术分享

   2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。

#include <stdio.h>
#define N 100
int main()
{
    int number[N],a,s=0,d;
    for(a=1;a<=N;a++)
    {
        number[a]=a;
            if(number[a]%3==0||number[a]%7==0)
        {
            number[a]=0;
        }
        else
        {
            printf("%d\t",number[a]);
            s++;
        }
    }
    printf("\n一共%d个数",s);
    
    return 0;
}

技术分享

   1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m位。要求:(1)数组值在程序中初始化(2)m从键盘输入

#include <stdio.h>
#define N 10
int main()
{
    int number[N],a,s,d,f,g;
    for(a=1;a<=N;a++)   //数组赋值 
    {
        number[a]=a;
    }
    printf("请输入你想后移位数:\n");
    scanf("%d",&s);
    number[1]=N;
    for(a=1;a<s;a++)
    {
        f=number[N-1];
        for(g=N-2;g>=1;g--)
        {
            number[g+1]=number[g];
        }
            number[1]=f;
    }
    for(a=1;a<N;a++)
    {
        printf("%d\t",number[a]);
    }
    return 0;
}

技术分享

知识点:

1、定义函数,只要函数名不一样,用的表示符号一样对程序没有太大影响

2、可以用循环对一个数组进行赋值

3、调用函数一定要与定义函数名相同

实验总结

1、技术分享

注意细节,number[1]=N与number[1]=f为互补作用,没有number[1]=N则程序的最后一个量不能进行循环

2、应注意数组不能越界,C语言不对数组进行越界检查

第九次实验