第九次作业

 

 

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("请输入人数\n");
    scanf("%d",&n);
    readScore(score,n);
    ave=average(score,n);
    printf("ave=%.2f\n",ave);
    max=findMax(score,n);
    printf("max=%d\n",max);
    maxindex1=findMaxIndex1(score,n);
    printf("最高分有%d个\n",maxindex1);
    min=findMin(score,n);
    printf("min=%d\n",min);
    minindex2=findMinIndex2(score,n);
    printf("最低分有%d个\n",minindex2);
    findScoreIndex(score,n);
    bubbleSort(score,n);
    printfScore(score,n);
    return 0; 
}
void readScore(int score[],int n)
{
    int i;
    printf("请输入成绩\n");
    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\n",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("\n");
            }
        }
    }
    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\na[1]=%d\n",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\na[1]=%d\n",a[0],a[1]);
    return 0;
}
void swap(int x,int y)
{  
     int z;
     z=x;
     x=y; 
     y=z;
}

运行结果:

 

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

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

 

posted on 2016-12-04 19:49  赵婧文  阅读(174)  评论(1编辑  收藏  举报

导航