第九次作业

 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 findMaxIndex(int score[],int n,int max); 
int findmin(int score[],int n);
int findMinIndex(int score[],int n,int min);
int findindex(int score[],int n,int x);
void bubbleSort(int score[],int n);
void printScore(int score[],int n); 
int main()
{
	int n,i,max,min,score[N]={0},x,num[N]={0},sea,find[N]={0},f;
	double ave;
	printf("请输入学生人数\n");
	scanf("%d",&n);
	printf("请输入学生的成绩\n");
	readScore(score,n);
	ave=average(score,n);
	printf("成绩的平均值为%.2lf",ave);
	max=findMax(score,n);
	min=findmin(score,n); 
	findMinIndex(score,n,max);
	findMaxIndex(score,n,min);
	printf("请输入你要查找的学生的考试成绩\n");
	scanf("%d",&x);
	findindex(score,n,x);
	printf("成绩由小到大的排序为:");
	bubbleSort(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;
	sum = 0;
	for(i=0;i<n;i++)
	{
		sum+=score[i];
	}
	return (double)sum/n;
}
int findMax(int score[],int n)       //求最高分 
{
	int i;
	int max;
	max=score[0];
	for(i=1;i<n;i++)
	{
		if(score[i]>max)
		{
			max=score[i];
		}
	}
	return max;
}
int findmin(int score[],int n)        //求最低分  
{
	int i;
	int min;
	min=score[0];
	for(i=1;i<n;i++)
	{
		if(score[i]<min)
		{
			min=score[i];
		}
	}
	return min;
}
int findMaxIndex(int score[],int n,int max)     //最高分的下标 
{	
int i,maxIndex;
for(i=0;i<n;i++)
    {
        if(score[i]==max)
        {
            maxIndex=i+1; 
            printf("成绩最低是%d分,是第%d名同学。\n",max,maxIndex);
        }
    }
}
int findMinIndex(int score[],int n,int min)     //求低分的下标
{
int i,minIndex; 
    for(i=0;i<n;i++)
    {
        if(score[i]==min)
        {
            minIndex=i+1; 
            printf("成绩最高是%d分,是第%d名同学。\n",min,minIndex);
        }
    }
} 
int findindex(int score[],int n,int x) //查找函数 
{
int i,y=0;
    for(i=0;i<n;i++)
    {
        if(score[i]==x)
        {
            y=i+1;
            printf("您所查询学生的是第%d名输入的成绩。\n",y);
        }
    }
    if(y==0)
    {
        printf("您所查询学生的考试成绩不存在。\n");
    }
}
void bubbleSort(int score[],int n)     //排序函数 
{	int i,j,t,flag;
	for(i=0;i<n-1;i++)   
	{
	    flag=0;
                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;
		  flag=1;
	         }
	  }
	  if(flag==0)
	      break;
    }
}
void printScore(int score[],int n)    //浏览成绩 
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("%5d",score[i]);
	}
	printf("\n");
}

  

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

#include<stdio.h>
#define N 100
int main()
{
	int i,x[N],a,b,c;
	a=3;
	b=7;
	c=0;
	for(i=0;i<100;i++)
	{
		x[i]=i+1;
	}
	for(i=0;i<100;i++)
	{
		if(x[i]%a==0||x[i]%b==0)
		{
			x[i]=0;
			c++;
		}
	}
	for(i=0;i<100;i++)
	{
		if(x[i]!=0)
		{
			printf("%d\t",x[i]);
		}
	}
	printf("剩余%d个数",100-c);
	return 0;
}

  

实验总结:

1、数组作为函数的参数时,不能在[ ]中给出数组的大小,必须用另一个参数来传入数组的大小

2、自定义函数和主函数中数值的类型保持一致

3、.冒泡排序法是将两个相邻的数比较小的排到前面

posted @ 2016-12-04 18:59  迷迭香丶  阅读(203)  评论(1编辑  收藏  举报