• 第九次作业


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

    # include <stdio.h>
    # define N 100
    void scan(int score[],int n);//输入数据 
    int average(int score[],int n);//平均数 
    int maxindex(int score[],int n,int a[]);//最大值下标 
    int minindex(int score[],int n,int a[]);//最小值下标
    void search(int score[],int n);//查找
    void sort(int score[],int n);//排序
    void print(int score[],int n);//输出 
    int main()
    {
        int i,a[N]={0},c[N]={0},d,score[N],n,max1,min1,maxindex1,minindex1; 
        double ave;
        printf(" 输入人数:
    ");
        scanf("%d",&n);
        printf(" 输入成绩:
    ");
        scan(score,n);
        ave=average(score,n);
        maxindex1=maxindex(score,n,a);
        max1=score[a[0]-1];
        minindex1=minindex(score,n,c);
        min1=score[c[0]-1];
        printf("平均数%.2f
    ",ave);
        printf("最大值是%d
    ",max1);
        for(i=0;i<=maxindex1;i++)
        {
            if(a[i]>0)
            {
                printf("第%d个
    ",a[i]);
            }    
        }
        printf("最小值是%d
    ",min1);
        for(i=0;i<=minindex1;i++)
        {
            if(c[i]>0)
            {
                printf("第%d个
    ",c[i]);
            }        
        }    
        printf("
    ");
        search(score,n);
        printf("
    ");
        sort(score,n);
        print(score,n);
        return 0;    
    } 
    void scan(int score[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            scanf("%d",&score[i]);
        }    
    }
    int average(int score[],int n)
    {
        int sum,i;
        sum=0;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        return (double)sum/n;
    }
    int maxindex(int score[],int n,int a[])
    {
        int i,j,b;
        b=score[0];
        j=0;
        for(i=1;i<n;i++)
        {
            if(b<score[i])
            {
                b=score[i];
            }
        }
        for(i=0;i<n;i++)
        {
            if(b==score[i])
            {
                a[j]=i+1;
                j++;
            }
        }
        return j-1;
    }
    int minindex(int score[],int n,int a[])
    {
            int i,j,b;
        b=score[0];
        j=0;
        for(i=1;i<n;i++)
        {
            if(b>score[i])
            {
                b=score[i];
            }
        }
        for(i=0;i<n;i++)
        {
            if(b==score[i])
            {
                a[j]=i+1;
                j++;
            }
        }
        return j-1;    
    }
    void search(int score[],int n)
    {
        int i,a,flag;
        flag=0;
        printf("输入要查找的数据:
    ");
        scanf("%d",&a);
        for(i=0;i<n;i++)
        {
            if(a==score[i])
            {
                printf("第%d个 ",i+1);
                flag=1;
            }
        }
        if(flag==0)
        {
            printf("查询的成绩不存在
    ") ;
        }
    }
    void sort(int score[],int n)
    {
        int a,i,j,x,flag;
        
        for(i=0;i<n;i++)
        {
            flag=0;
            for(j=0;j<n-1;j++)
            {
                if(score[j]<score[j+1])
                {
                    a=score[j];
                    score[j]=score[j+1];
                    score[j+1]=a;
                }
                else
                {
                    flag=1;
                }
            }
            if(flag==0)
            {
                break;
            }
        } 
    } 
    void print(int score[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%5d",score[i]);
        }
    } 
    

      

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

      

    #include<stdio.h>
    int main()
    {
        int i,a=0;
        for(i=1;i<=100;i++)
        {
            if((i%3!=0)&&(i%7!=0))
            {
                printf(" %3d",i);
                a++;
            }
            if(a%10==0)
            {
                printf("
    ");
            }
        }
        printf("
    一共%d个",a);
        return 0;
    }
    

      

    二.知识点总结
    1.数组作为函数的参数,不能在[]中给出数组的大小,必须用另一个参数来传入数组的大小
    2.不要求数据表是已排好序的,从线性数据表中的第一个或最后一个记录开始寻找
    3.依次记录的关键字与查找关键字进行比较
    

      

        三.程序分析
    1.二者结果相反
    2,原因:简单变量做参数,实现的是值的单向传递,即只能把实参的值传给形参,由于实参和形参占用不同的内存单元,形参的改变不会影响实参。数组做函数参数,是将实参数组的地址传给形参数组,实参和形参占用的是相同的内存空间。    
         
    

      

  • 相关阅读:
    git介绍
    Oracle '26-2月 -19 03.34.47.000000 下午' 字符串日期解析
    ProceedingJoinPoint 某些方法记录一下
    SpringBoot 2.X以上集成redis
    SpringBoot文件上传配置
    editmd输出到前端显示
    Thymeleaf Shiro标签
    Springboot 添加druid监控
    基于SpringBoot的博客项目
    SpringBoot默认首页配置
  • 原文地址:https://www.cnblogs.com/1601wyn/p/6115391.html
Copyright © 2020-2023  润新知