• 第九次作业


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

    #include<stdio.h>
    #define N 100
    void readScore(int score[],int n);//输入函数 
    double average(int score[],int n);//求平均值 
    int findMax(int score[],int n);//找最大值 
    int findMaxIndex1(int score[],int n);//最大值人数 
    int findMin(int score[],int n);//最小值 
    int findMinIndex2(int score[],int n); //最小值人数 
    void findScoreIndex(int score[],int n);//输入一个成绩 ,是第几个人 
    void bubbleSort(int score[],int n);//排序
    void printfScore(int score[],int n);//输出 
    int main()
    {
        int score[N]={0},Index[N]={0},i,max,maxindex1,min,minindex2,index,n;
        double ave;
        printf("请输入人数
    ");
        scanf("%d",&n);
        readScore(score,n);
        ave=average(score,n);
        printf("ave=%.2f
    ",ave);
        max=findMax(score,n);
        printf("max=%d
    ",max);
        maxindex1=findMaxIndex1(score,n);
        printf("最高分有%d个
    ",maxindex1);
        min=findMin(score,n);
        printf("min=%d
    ",min);
        minindex2=findMinIndex2(score,n);
        printf("最低分有%d个
    ",minindex2);
        findScoreIndex(score,n);
        bubbleSort(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;
         sum=0;
         for(i=0;i<n;i++)
         {
             sum=sum+score[i];
        }
       return (double)sum/n;
    }
    int findMax(int score[],int n)
    {
         int max,i;
         max=score[0];
         for(i=0;i<n;i++)
        {
            if(score[i]>=max)
            {
                max=score[i];
            }
        }
        return max;
    }
    int findMaxIndex1(int score[],int n)
    {
         int i,a,max;
         a=0;
         max=findMax(score,n);
         for(i=0;i<n;i++)
         {
         if(score[i]==max)
          {
             a++;
          }
        }
        return a;
    }
    int findMin(int score[],int n)
    {
         int min,i;
         min=score[0];
         for(i=0;i<n;i++)
        {
            if(score[i]<=min)
            {
                min=score[i];
            }
        } 
        return min;
    }
    int findMinIndex2(int score[],int n)
    {
         int i,a,min;
         a=0;
         min=findMin(score,n);
         for(i=0;i<n;i++)
         {
             if(score[i]==min)
             {
                 a++;
             }
         }
         return a;
    }
    void findScoreIndex(int score[],int n)
    {
         int i,grade;
         printf("输入要找的成绩");
         scanf("%d",&grade);
         for(i=0;i<n;i++)
        {
             if(grade==score[i])
             {
                 printf("index=%d
    ",i+1);
             }
        }      
     }
    void bubbleSort(int score[],int n)
    {
        int i,j,t;
        for(i=0;i<n-1;i++)
        {
            for(j=0;j<n-1;j++)
            {
                if(score[j]>score[j+1])
                {
                    t=score[j];
                    score[j]=score[j+1];
                    score[j+1]=t;
        
                }
            }
        }
    }
    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 num[N]={0},i,a=0;
        for(i=0;i<N;i++)
        {
            num[i]=i+1;
        }
        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("%3d ",num[i]);
                a++;
                if(a%10==0)
                {
                    printf("
    ");
                }
            }
        }
        printf("输出%d个数",a);
        return 0;
    }

    知识点总结:1.一个主函数对应一个子函数。注意一一对应。

    2.返回值应该放在循环外面。

    3.要赋初值。

    程序一:

    #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;
    }

    程序二:

    #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;
    }

    运行结果:

    分析:数组一做函数参数,是将实参数组的地址传给形参数组,实参和形参占用的是相同的内存空间 ,因此交换的数值改变。

    数组二简单变量做参数,实现的是值的单向传递,没有改变数值。

  • 相关阅读:
    access导入报错 请求筛选模块被配置为拒绝超过请求内容长度的请求
    win10装回win7。PE下把原来的系统盘格掉,再安装hdd,重启就好了
    sql语句Order by 报错列名不明确
    C#字符串长度判断
    Struts2中数据封装机制
    Struts2中的页面跳转
    Struts2访问Servlet API的三种方式
    Struts2的动态Action实现
    Struts2基本概念
    javaweb开发之EL表达式
  • 原文地址:https://www.cnblogs.com/zhaojingwen123/p/6131615.html
Copyright © 2020-2023  润新知