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

    一:实验内容

    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 findstudent(int score[],int n,int m);//查找函数
    void order(int score[],int n);//排序
    void printfscore(int score[],int n);//输出 
    int main()
    {
        int score[N]={0},n,m,i,sum,count1,count2,index[N]={0};
        double ave;
        printf("input the number:
    ");
        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);
            
        }
        printf("输入你想查询的学生的成绩
    ");
        scanf("%d",&m);
        findstudent(score,n,m);
        printf("排序后的数为:
    ");
        order(score,n);
        printfscore(score,n);
        return 0;
    }
    void readscore(int score[],int n)//输入函数 
    {
        int i;
        printf("请输入考试成绩:
    ");
        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 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 findstudent(int score[],int n,int m)//查找 
    {
        int i,y=0;
        for(i=0;i<n;i++)
        {
            if(score[i]==m)
            {
                y=i+1;
                printf("您所查询学生的是第%d名输入的成绩。
    ",y);
            }
        }
        if(y==0)
        {
            printf("您所查询学生的考试成绩不存在。
    ");
        }
    }
     void order(int score[],int n)//排序 
    {
        int i,j,temp;
        for(i=0;i<n-1;i++) 
        {
            for(j=0;j<n-1-i;j++) 
            {
                if (score[j]>score[j+1])
                {
                    temp=score[j];
                      score[j]=score[j+1];
                      score[j+1]=temp;
                }
              }
        }
    }
    
    void printfscore(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>
    #define N 100
    int main()
    {
        int a[100]={0},i,n=0;
        for(i=0;i<100;i++)
        {
            a[i]=i+1;
            if(a[i]%3==0||a[i]%7==0)
            {
                a[i]=0;
                continue;
            }
            else
            {
                printf("%5d",a[i]);
                n++;
                if(n%10==0)
                {
                    printf("
    ");
                }
            }
        }
        printf("一共剩下%d个数字",n);
        return 0;
    }

    二:实验总结

    1:不要忘记函数的输出

    2:注意函数的赋初值问题

    3:注意先声明变量在使用变量

    4:注意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;
    }

    程序一运行结果

    程序二运行结果

    分析:程序一交换的是数组,程序二交换的是元素导致两程序运行结果不同,从程序一看出输入但是数组,后面的数组x[1]和x[0]可以直接进行交换,而程序二输入的依然是数组,实参的值给了形参,由于实参和形参占用不同的内存单元,形参的改变不会影响实参。

  • 相关阅读:
    MyBatis环境配置
    log4j配置不同的类多个日志文件
    Http协议头、代理
    Apache二级域名实现
    Flash Builder 4.7 完美破解
    网页设计方面,哪些中英文字体的组合能有好的视觉效果
    网页设计中最常用的字体
    sublime text 3 插件:package control
    大量实用工具类、开源包,该帖绝对值得你收藏!
    10个简化Web开发者工作的HTML5开发工具
  • 原文地址:https://www.cnblogs.com/yangchaoge1020/p/6130262.html
Copyright © 2011-2022 走看看