zoukankan      html  css  js  c++  java
  • 第九次作业

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

    #include<stdio.h>
    #define N 100
    void readscore(int score[],int n);//输入函数 
    double average(int score[],int n);//求平均 
    int findmaxindex(int score[],int n,int index[]);//求最高分及对应下标 
    int findminindex(int score[],int n,int index[]);//求最低分及对应下标 
    int Search(int score[],int n,int x);//查找 
    void bubblesort(int score[],int n);//排序
    void printscore(int score[],int n);//输出函数 
    int main()
    {
        int score[N]={0},n,i,sum,count1,count2,index[N]={0},chazhao,x;
        double ave;
        printf("请输入人数
    ");
        scanf("%d",&n);
        readscore(score,n);
        ave=average(score,n);
        printf("平均值为%.2f
    ",ave);
        count1=findmaxindex(score,n,index);
        for(i=0;i<count1;i++)
        {
            printf("最高分=%d,是第%d个同学
    ",score[index[i]],index[i]+1);
        }
        count2=findminindex(score,n,index);
        for(i=0;i<count2;i++)
        {
            printf("最低分=%d,是第%d个同学
    ",score[index[i]],index[i]+1);
        }
        chazhao=Search(score,n,x);
        printf("该学生在%d位
    ",chazhao+1);
        bubblesort(score,n);
        printf("排序后的数为:
    "); 
        printscore(score,n);
    
        
        return 0;
    }
    void readscore(int score[],int n)//输入函数 
    {
        int i;
        printf("请输入成绩");
        for(i=0;i<n;i++)
        {
            scanf("%d",&score[i]);
        }
    }
    void printscore(int score[],int n)//输出函数 
    {
        int i;
        for(i=0;i<n;i++)
        {
            printf("%5d",score[i]);
        }
        printf("
    ");
    } 
    double average(int score[],int n)//求平均 
    {
        int i,sum;
        sum=0;
        for(i=0;i<n;i++)
        {
            sum+=score[i];
        }
        return (double)sum/n;
    }
    int findmaxindex(int score[],int n,int index[])//求最高分对应的学生 
    {
        int i,max,count1;
        max=score[0];
        count1=0;
        for(i=0;i<n;i++)
        {
            if(score[i]==max)
            {
                index[count1++]=i;
            }
            else if(score[i]>max)
            {
                max=score[i];
                count1=0;
                index[count1++]=i; 
            }
        }
        return count1;
    }
    int findminindex(int score[],int n,int index[])//求最低分对应的学生 
    {
        int i,min,count2;
        min=score[0];
        count2=0;
        for(i=0;i<n;i++)
        {
            if(score[i]==min)
            {
                index[count2++]=i;
            }
            else if(score[i]<min)
            {
                min=score[i];
                count2=0;
                index[count2++]=i; 
            }
        }
        return count2;
    }
    int Search(int score[],int n,int x)//查找 
    {
        int i;
        printf("请输入你要查询的成绩:"); 
        scanf("%d",&x);
        for(i=0;i<n;i++)
        {
            if(score[i]==x)
            return i;
        }
        return -1;
    }
    void bubblesort(int score[],int n)//排序
    {
        int i,j,t,flag;
        for(i=0;i<n;i++)
        {
        
            for(j=0;j<n-1-i;j++)
            {    
                flag=0;
                if(score[j]>score[j+1])
                {
                    t=score[j];
                    score[j]=score[j+1];
                    score[j+1]=t;
                    flag=1; 
                }
            }
            if(flag==0)
            {
                break;
            }
        }
        
    }

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

    #include<stdio.h>
    #define N 100
    int main()
    {
        int a[100]={0},i,j,n=0,m=0;
        for(i=0;i<100;i++)
        {
            a[i]=i+1;
        }
        for(i=0;i<100;i++)
        {
            if(a[i]%3==0||a[i]%7==0)
            {
                a[i]=0;
                continue;
            }
            else
            {
                n++;
                m++;
                printf("%5d",a[i]);
                if(n%10==0)
                {
                    printf("
    ");
                }
            }
        }    
        printf("    一共有%d位",m);
        return 0;
    } 

    二、实验总结

    (1)返回值应放在循环的外面。

    (2)输入的数据应该存在数组里,所以定义变量应写成数组形式,整形不能向数组转换。

    (3)

     在使用函数的过程中,需要注意以下问题:

      1.函数中定义的变量(包括形参),它只在本函数范围内起作用,我们称之为局部变量。在其他函数中是不能使用本函数定义的变量的。

      2.简单变量做函数参数和数组做函数参数存在着本质的不同。

         简单变量做参数,实现的是值的单向传递,即只能把实参的值传给形参,由于实参和形参占用不同的内存单元,形参的改变不会影响实参。

         数组做函数参数,是将实参数组的地址传给形参数组,实参和形参占用的是相同的内存空间。 

    (4)看了老师用三种不同的方法写的同一道题,确实方法更简便了。在以后的实验总结中,也会更加注重记录问题的解题思路,程序有哪些考虑不全面的地方,出现了哪些bug,怎么解决的,以及程序是否可以优化等问题。

    三、程序分析

    程序一输出结果

    程序一用的是数组做函数参数,是将实参数组的地址传给形参数组,实参和形参占用的是相同的内存空间。

    程序二输出结果

     程序二用的简单变量做参数,实现的是值的单向传递,即只能把实参的值传给形参,由于实参和形参占用不同的内存单元,形参的改变不会影响实参。

    两者结果不相同

  • 相关阅读:
    leetcode 62. Unique Paths
    leetcode 345. Reverse Vowels of a String
    leetcode 344. Reverse String
    Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装
    yarn调度器 FairScheduler 与 CapacityScheduler
    Hive性能优化
    HBase笔记
    Zookeeper笔记
    Hadoop组件详解(随缘摸虾)
    ubuntu18.04.2 hadoop3.1.2+zookeeper3.5.5高可用完全分布式集群搭建
  • 原文地址:https://www.cnblogs.com/faner10110/p/6119241.html
Copyright © 2011-2022 走看看