第九次作业

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

#include <stdio.h>
#define N 100
void readScore(int score[],int n); //输入函数
double average(int score[],int n);//平均数
int maxScoreIndex(int score[],int n);//最大值下标函数
int minScoreIndex(int score[],int n);//最小值下标函数
void findScore(int score[], int n,int find);//查找函数
void sortScore(int score[], int n);//排序函数
void printScore(int score[], int n);//输出函数
int main()
{
    int n,maxindex,minindex,score[N]={0},find;
    double ave;
    printf("请输入人数\n");
    scanf("%d",&n);
    printf("请输入成绩");
    readScore(score,n);
    printf("平均分为%.2lf\n",average(score,n));
    maxindex=maxScoreIndex(score,n);
    minindex=minScoreIndex(score,n);
    findScore(score,n,find);
    sortScore(score,n);
    printScore(score,n);
return 0;
}
void readScore(int score[],int n)
{
    int i;
    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 maxScoreIndex(int score[],int n)
{
    int i,j,max;
    max=score[0];
    j=0;
    for(i=0;i<n;i++)
    {
        if (score[i]>max)
        {
            max=score[i];
        }
    }
    for(i=0;i<n;i++)
    {
        if(score[i]==max)
        {
            printf("最高分是%d,是第%d名同学",max,i+1);
        }
    }
    return i+1;
}
int minScoreIndex(int score[],int n)
{
    int i,j,min;
    min=score[0];
    j=-0;
    for(i=0;i<n;i++)
    {
        if(score[i]<min)
        {
             min=score[i];
        }
    }
    for(i=0;i<n;i++)
    {
        if(score[i]==min)
        {
            printf("最低分是%d,是第%d名同学",min,i+1);
        }
    }
    return i+1;
}
void findScore(int score[], int n,int find)
{
    int i;
    scanf("%d",&find);
    for(i=0;i<n;i++)
    {
        if(find==score[i])
        {
              printf("是第%d号同学",i+1);

        }
    }
}
void sortScore(int score[], int n)
{
    int x,y,i;
    for(x=0;x<n-1;x++)
    {
        for(y=0;y<n-x-1;y++)
        {
            if(score[y+1]>score[y])
            {
                i=score[y];
                score[y]=score[y+1];
                score[y+1]=i;
            }
        }
    }
}
void printScore(int score[], int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%d\n",score[i]);
    }
}

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

#include<stdio.h>
#define N 100
int main()
{
    int i,num[N],x=1,y=0;
    for(i=0;i<N;i++)
    {
        num[i]=x;
        x++;
    }
    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("%2d ",num[i]);
            y++;
            if(y%10==0)
            {
                printf("\n");  
            }  
        }
    }
    printf("数组一共有%d个数",y);
    return 0;
}

实验总结:.注意平均数需要将整型强行转换为double类型

                需要返回值的函数用int型,不需要返回值的函数用void、

                 要记得赋初值

实验分析:

 程序1

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

 

程序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\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 22:07  张培蕾  阅读(210)  评论(0编辑  收藏  举报

导航