• 第九次作业


    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("请输入一共多少人
    ");
        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
    最大值为%d
    最大下标为%d
    最小值为%d
    最小下标为%d
    ",ave,max1,maxdex,min1,mindex);
        printf("请输入你要查找的学生的成绩
    ");
        scanf("%d",&x);
        m=find(score,x,n);
        printf("该学生下标为%d
    ",m);
        paixu(score,n);
        printscore(score,n);
        return 0;
      }
    void grade(int score[],int n)    //输入函数
    {    
        int i;
        printf("请输入成绩
    ");
        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("
    ");
    }

    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语言

  • 相关阅读:
    oracle连接方式、创建数据库用户、忘记数据库密码、用户锁定
    Hibernate延迟加载、三种状态、脏检查 缓存
    Hibernate入门案例及增删改查
    Hibernate 和快照
    学号20175313 《程序设计中临时变量的使用》第八周
    学号20175313 《Arrays和String单元测试》第八周
    学号 20175313 《实验二 面向对象程序设计》实验报告
    学号20175313 《结对编程四则运算》总结性编程 第七周
    学号 20175313《Java程序设计》 第七周学习总结
    20175313 张黎仙 《第六周 结对编程四则运算》 阶段性编程
  • 原文地址:https://www.cnblogs.com/xuan0826/p/6131901.html
Copyright © 2020-2023  润新知