第九次作业

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

#include<stdio.h>
#define N 999
int putin(int fen[],int n);        //输入 函数 
double average(int fen[],int n);        //平均数函数 
int max(int fen[],int n);        //最大值函数 
int maxindex(int fen[],int n);        //最大值下标函数 
int min(int fen[],int n);        //最小值函数 
int minindex(int fen[],int n);        //最小值下标函数 
int search(int fen[],int i,int x);        //查找函数 
int sort(int fen[],int n);        //排序函数 
int main()
{
    int fen[N],ge,zuida,zuixiao,a,b,c,i;
    double ping;
    printf("请输入一共有多少学生
");
    scanf("%d",&ge);
    putin(fen,ge);
    ping=average(fen,ge);
    printf("平均分是%.2lf
",ping);
    zuida=max(fen,ge);
    a=maxindex(fen,ge);
    a=a+1;
    printf("最高分是%d,是第%d个同学
",zuida,a);
    zuixiao=min(fen,ge);
    b=minindex(fen,ge);
    b=b+1;
    printf("最低分是%d,是第%d个同学
",zuixiao,b);
    c=search(fen,ge,c);
    c=c+1;
    printf("这是第%d个学生
",c);
    sort(fen,ge);
    printf("排序后的成绩为
");
    for(i=0;i<ge;i=i+1)
    {
        printf("%4d",fen[i]);
    }
    return 0;
}
int putin(int fen[],int n)
{
    int i;
    for(i=0;i<n;i=i+1)
    {
        printf("请输入成绩
");
        scanf("%d",&fen[i]);
    }
}
double average(int fen[],int n)
{
    int i,sum;
    sum=0;
    for(i=0;i<n;i=i+1)
    {
        sum=sum+fen[i];
    }
    return (double)sum/n;
}
int max(int fen[],int n)
{
    int i,max;
    max=fen[0];
    for(i=0;i<n;i=i+1)
    {
        if(fen[i]>max)
        {
            max=fen[i];
        }
    }
    return max;
}
int maxindex(int fen[],int n)
{
    int i,a;
    a=0;
    for(i=0;i<n;i=i+1)
    {
        if(fen[i]>fen[a])
        {
            a=i;
        }
    }
    return a;
}
int min(int fen[],int n)
{
    int i,min;
    min=fen[0];
    for(i=0;i<n;i=i+1)
    {
        if(fen[i]<min)
        {
            min=fen[i];
        }
    }
    return min;
}
int minindex(int fen[],int n)
{
    int i,a;
    a=0;
    for(i=0;i<n;i=i+1)
    {
        if(fen[i]<fen[a])
        {
            a=i;
        }
    }
    return a;
}
int search(int fen[],int i,int x)
{
    printf("请输入学生成绩
");
    scanf("%d",&x);
    i=0;
    while(fen[i]>=0)
    {
          if(fen[i]==x)
          {
              return i;
          }
          i=i+1;
    }
    return -1;
}
int sort(int fen[],int n)
{
    int i,j,k,t;
    for(i=0;i<n-1;i=i+1)
    {
        k=0;
        for(j=0;j<n-1;j=j+1)
        {
            if(fen[j]>fen[j+1])
            {
                t=fen[j];
                fen[j]=fen[j+1];
                fen[j+1]=t;
                k=1;
            }
        }
        if(k==0)
        {
            break;
        }
    }
}

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

#include<stdio.h>
#define N 100
int main()
{
    int a[N];
    int i,n;
    n=0;
    for(i=0;i<100;i=i+1)
    {
        a[i]=i+1;
    }
    for(i=0;i<100;i=i+1)
    {
        if(a[i]%3==0||a[i]%7==0)
        {
            a[i]=0;
        }
    }
    for(i=0;i<100;i=i+1)
    {
        if(a[i]!=0)
        {
            n=n+1;
            printf("%d ",a[i]);
        }
    }
    printf("还剩下%d个数
",n);
    return 0;
}    

 二、实验总结:

1.一般情况下,函数中不能有输入输出的语句。
2.各个函数之间一定要区分开,否则容易混淆。
3.冒泡排序就是重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

 三、程序分析:

程序一中自定义函数里数组的改变导致实际数组的改变,程序二中swap函数将实参的值复制一份给了形参,形参的改变不会影响到实参的改变。

原文地址:https://www.cnblogs.com/buyuhang/p/6132009.html