• 作业九


    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);// 最大值
    void findMaxIndex1(int score[],int n);//最大值是第几个
    int findMin(int score[],int n);//最小值
    void 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()
    {
      max=findMax(score,n);
      printf("max=%d ",max);
      findMaxIndex1(score,n);
      printf("是最高分 ");
      min=findMin(score,n);
      printf("min=%d ",min);
      findMinIndex2(score,n);
      printf("是最低分 ");
      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;
    }
    void findMaxIndex1(int score[],int n)
    {
      int i,max;
      max=findMax(score,n);
      for(i=0;i<n;i++)
      {
        if(score[i]==max)
        {
          printf("第%d个 ",i+1);
        }
      }  
    }
    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;
    }
    void findMinIndex2(int score[],int n)
    {
      int i,min;
      min=findMin(score,n);
      for(i=0;i<n;i++)
       {
        if(score[i]==min)
        {
          printf("第%d个 ",i+1);
        }
       }
    }
    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-i;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、for语句中表达式要用;分开。

    4double类型输出应该用%lf而不能用%d。

    三、

         程序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;
    }



    程序1中把实参数组的地址传给了形参数组,程序2中只是把实参的值传给了形参
    
    
  • 相关阅读:
    oracle 删除表中重复数据留一条
    C# 特性
    oracle 常用简单命令语句
    2017年学习计划
    java web开发基础学习
    Java Axis2支持json
    java基础教程
    axis2 发布webservice
    孤荷凌寒自学python第103天认识区块链017
    孤荷凌寒自学python第102天认识区块链016
  • 原文地址:https://www.cnblogs.com/1998li/p/6131452.html
Copyright © 2020-2023  润新知