第九次作业

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

#include<stdio.h>
#define N 1000
void grade(int score[],int n);    //输入函数
int average(int score[],int n);        //平均值
int max(int score[],int n);             //最大值
int maxindex(int score[],int n);       //最大下标
int min(int score[],int n);          //最小值
int minindex(int score[],int n);         //最小下标
int find(int score[],int x,int n);         //查询
void paixu(int score[],int n);          //排序  
void printscore(int score[],int n);      //输出函数  
int main()
{
    int score[N],n,max1,maxdex,min1,mindex,m,x;
    double ave;
    printf("请输入一共多少人\n");
    scanf("%d",&n);
    grade(score,n);
    ave=average(score,n);
    max1=max(score,n);
    maxdex=maxindex(score,n);
    min1=min(score,n);
    mindex=minindex(score,n);
    printf("平均数是%.2f\n最大值为%d\n最大下标为%d\n最小值为%d\n最小下标为%d\n",ave,max1,maxdex,min1,mindex);
    printf("请输入你要查找的学生的成绩\n");
    scanf("%d",&x);
    m=find(score,x,n);
    printf("该学生下标为%d\n",m);
    paixu(score,n);
    printscore(score,n);
    return 0;
  }
void grade(int score[],int n)    //输入函数
{    
    int i;
    printf("请输入成绩\n");
    for(i=0;i<n;i++)
    {
        scanf("%d",&score[i]);
    }
}
int average(int score[],int n)     //平均值
{
    int i;
    double sum;
    sum=0;
    for(i=0;i<n;i++)
    {
        sum=sum+score[i];
    }
    return (double)sum/n;
}
int max(int score[],int n)     //最大值
{
    int i,max1;
    max1=score[0];
    for(i=0;i<n;i++)
    {
        if(score[i]>max1)
        {
            max1=score[i];
        }
    }
    return max1;
}
int maxindex(int score[],int n)      //最大下标
{
    int i,maxdex;
    maxdex=0;
    for(i=1;i<n;i++)
    {
        if(score[i]>score[maxdex])
        {
            maxdex=i;
        }
    }
    return maxdex;
}
int min(int score[],int n)         //最小值
{
    int i,min1;
    min1=score[0];
    for(i=0;i<n;i++)
    {
        if(score[i]<min1)
        {
            min1=score[i];
        }
    }
    return min1;
}
int minindex(int score[],int n)     //最小下标   
{
    int i,mindex;
    mindex=0;
    for(i=1;i<n;i++)
    {
        if(score[i]<score[mindex])
        {
            mindex=i;
        }
    }
    return mindex;
}

int find(int score[],int x,int n)       //查询
{
    int i;
    for(i=0;i<n;i++)
    {
        if(score[i]==x)
        {
            return i;
        }
    }
    return -1;
}
void paixu(int score[],int n)     //排序
{
    int i,temp,w,flag;
    for(i=0;i<n;i++)
    {
        flag=0;
        for(w=0;w<n-1;w++)
        {
            if(score[w]>score[w+1])
            {
               temp=score[w];
               score[w]=score[w+1];
               score[w+1]=temp;
            }
        }
        if(flag==0)
        {
             break;
        }
    }
}
void printscore(int score[],int n)     //输出函数
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%5d",score[i]);
    }
    printf("\n");
}

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

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

 

实验分析:

      程序一两个数就交换了,程序二没有

简单变量做参数,实现的是值的单向传递,不会影响实参的值,数组做函数参数,是将实参数组的地址传给形参数组。

   实验总结:

        1.不能越界

        2.你想输出啥,就返回啥,返回用int,不返回用void

        3.下表从0开始

        4.好好学c语言

 

posted @ 2016-12-04 22:16  *翾*  阅读(113)  评论(1编辑  收藏  举报