• 第九次作业


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

    #include <stdio.h>
    #define N 100
    void readScore(int score[],int n); //输入函数
    double average(int score[],int n);//平均数
    int maxScoreIndex(int score[],int n);//最大值下标函数
    int minScoreIndex(int score[],int n);//最小值下标函数
    void findScore(int score[], int n,int find);//查找函数
    void sortScore(int score[], int n);//排序函数
    void printScore(int score[], int n);//输出函数
    int main()
    {
        int n,maxindex,minindex,score[N]={0},find;
        double ave;
        printf("请输入人数
    ");
        scanf("%d",&n);
        printf("请输入成绩");
        readScore(score,n);
        printf("平均分为%.2lf
    ",average(score,n));
        maxindex=maxScoreIndex(score,n);
        minindex=minScoreIndex(score,n);
        findScore(score,n,find);
        sortScore(score,n);
        printScore(score,n);
    return 0;
    }
    void readScore(int score[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
          scanf("%d",&score[i]);
        }
    }
    double average(int score[],int n)
    {
        int i,sum=0;
        for(i=0;i<n;i++)
        {
            sum=sum+score[i];
        }
        return (double)sum/n;
    }
    int maxScoreIndex(int score[],int n)
    {
        int i,j,max;
        max=score[0];
        j=0;
        for(i=0;i<n;i++)
        {
            if (score[i]>max)
            {
                max=score[i];
            }
        }
        for(i=0;i<n;i++)
        {
            if(score[i]==max)
            {
                printf("最高分是%d,是第%d名同学",max,i+1);
            }
        }
        return i+1;
    }
    int minScoreIndex(int score[],int n)
    {
        int i,j,min;
        min=score[0];
        j=-0;
        for(i=0;i<n;i++)
        {
            if(score[i]<min)
            {
                 min=score[i];
            }
        }
        for(i=0;i<n;i++)
        {
            if(score[i]==min)
            {
                printf("最低分是%d,是第%d名同学",min,i+1);
            }
        }
        return i+1;
    }
    void findScore(int score[], int n,int find)
    {
        int i;
        scanf("%d",&find);
        for(i=0;i<n;i++)
        {
            if(find==score[i])
            {
                  printf("是第%d号同学",i+1);
    
            }
        }
    }
    void sortScore(int score[], int n)
    {
        int x,y,i;
        for(x=0;x<n-1;x++)
        {
            for(y=0;y<n-x-1;y++)
            {
                if(score[y+1]>score[y])
                {
                    i=score[y];
                    score[y]=score[y+1];
                    score[y+1]=i;
                }
            }
        }
    }
    void printScore(int score[], int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%d
    ",score[i]);
        }
    }

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

    #include<stdio.h>
    #define N 100
    int main()
    {
        int i,num[N],x=1,y=0;
        for(i=0;i<N;i++)
        {
            num[i]=x;
            x++;
        }
        for(i=0;i<N;i++)
        {
            if(num[i]%3==0||num[i]%7==0)
            {
                num[i]=0;
            }
        }
        for(i=0;i<N;i++)
        {
            if(num[i]!=0)
            {
                printf("%2d ",num[i]);
                y++;
                if(y%10==0)
                {
                    printf("
    ");  
                }  
            }
        }
        printf("数组一共有%d个数",y);
        return 0;
    }

    实验总结:.注意平均数需要将整型强行转换为double类型

                    需要返回值的函数用int型,不需要返回值的函数用void、

                     要记得赋初值

    实验分析:

     程序1

    #include <stdio.h>
    void swap(int x[]);
    int main()
    {  
         int a[2]={1,2};
        swap(a);
        printf("a[0]=%d
    a[1]=%d
    ",a[0],a[1]);
        return 0;
    }
    void swap(int x[])
    {   
        int z;
        z=x[0];     
        x[0]=x[1];     
        x[1]=z;
    }

    程序2

    #include <stdio.h>
    void swap(int x,int y);
    int main()
    {
        int a[2]={1,2};
        swap(a[0],a[1]);
        printf("a[0]=%d
    a[1]=%d
    ",a[0],a[1]);
        return 0;
    }
    void swap(int x,int y)
    {  
         int z;
         z=x;
         x=y; 
         y=z;
    }

    程序分析: 第一个用的是数组做函数,第二个程序是用简单变量做函数

                    

  • 相关阅读:
    JavaScript实现上传图片预览[js前端实现]
    Java内存Happen-Before
    《干净架构读书笔记》——业务驱动编程
    《干净架构读书笔记》——编程范式
    Scrum中的冲刺和迭代
    Spring Cloud中通过Kafka传递自定义Header
    领域驱动开发(DDD)Web开发中的典型分层
    给开发团队减减负
    业务实体和用例
    什么是好的代码-代码Review要点
  • 原文地址:https://www.cnblogs.com/zpl0120/p/6132122.html
Copyright © 2020-2023  润新知