第九次作业

一.实验内容

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

1.1 代码:

#include <stdio.h>
#define N 100 
int readscore(int score[],int n);
int printscore(int score[],int n);
double average(int score[],int n);
int findmin(int score[],int n);
void findminlndex(int score[],int n);
int findmax(int score[],int n);
void findmaxlndex(int score[],int n);
void findscore(int score[],int n);
void bubblesort(int score[],int n);
int main ()
{
	int score[N]={0},n,max,min;
	double average1;
	printf("请输入学生数量");
	scanf("%d",&n);
	readscore(score,n);
	bubblesort(score,n);
	average1=average(score,n);
	printf("这%d名学生的平均成绩为%.2lf\n",n,average1);
	max=findmax(score,n);
	min=findmin(score,n);
	printf("这些学生成绩中的最高分是%d,最低分是%d\n",max,min);
	findmaxlndex(score,n);
	findminlndex(score,n);
	findscore(score,n);
	return 0;
}
int readscore(int score[],int n)
{
	int i;
	printf("请输入分数\n"); 
	for(i=0;i<n;i++)
	{
		scanf("%d",&score[i]);
	}
	return i;
}
void bubblesort(int score[],int n)
{
	int i,j,k,l;
	for(i=0;i<n-1;i++)
	{
		l=0;
		for(j=0;j<n-i-1;j++)
		{
			if(score[j]>score[j+1])
			{
				k=score[j];
				score[j]=score[j+1];
				score[j+1]=k;
				l=1;
			}
		}
		if(l==0)
		{
			break;
		}
	}
	for(i=0;i<n;i++)
	{
		printf("%d号的学生成绩:%d\n",i+1,score[i]);
	}
}
double average(int score[],int n)
{
	int i,sum=0; 
	for(i=0;i<n;i++)
	{
		sum+=score[i];
	}
	return 	(double)sum/n;
}
int findmin(int score[],int n)
{
	int i,min=score[0];
	for(i=1;i<n;i++)
	{
		if(score[i]<min)
		{
			min=score[i];
		}
	}
	return min;
} 
void findminlndex(int score[],int n)
{
    int i,min;
    min=findmin(score,n);
    printf("得最低分的同学有:\n");
    for(i=0;i<n;i++)
    {
        if(score[i]==min)
        {
        	printf("第%d名学生 ",i+1);
        }
    }
    printf("\n");
}
int findmax(int score[],int n)
{
	int i,max=score[0];
	for(i=1;i<n;i++)
	{
		if(score[i]>max)
		{
			max=score[i];
		}
	}
	return max;
}
void findmaxlndex(int score[],int n)
{
    int i,max;
    max=findmax(score,n);
    printf("得最高分的同学有:\n");
    for(i=0;i<n;i++)
    {
        if(score[i]==max)
        {
            printf("第%d名学生 ",i+1);
        }
    }
    printf("\n");
} 
void findscore(int score[],int n)
 {
     int i,score2,l=0;
     printf("请输入你要查找的分数:\n");
     scanf("%d",&score2);
     for(i=0;i<n;i++)
     {
        if(score[i]==score2)
        {
        	printf("得该分数的是:\n");
        	printf("第%d位学生\n",i+1);
        }
     }
 } 

  

1.2 程序运行结果:

 

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

2.1 代码:

#include <stdio.h>
#define N 100
int main (   )
{
	int i,score[N]={0},a=0;
	for(i=0;i<N;i++)
	{
		score[i]=i+1;
	}
	for(i=0;i<N;i++)
	{
		if(score[i]%3==0||score[i]%7==0)
		{
			score[i]=0;
		}
		else
		{
			a++;
			printf("%4d",score[i]);
			if(a%10==0)
			{
				printf("\n");
			}
		}
	}
	printf("\n  共输出了%d个数",a);
	return 0;
}
 

 

2.2 程序运行结果:

二、实验总结

1.注意逻辑混乱问题,不要写成两个最大值或最小值。

2.,定义的变量名是什么,在主程序里调用也得用什么,变量名要改一下,不能同名。

3.相似的代码粘也可以,不过不一样的地方要记得改。

4.要记得加大括号,把相应的内容放进去。

三、程序分析

形参的应用于实参有一定的区别,在写程序时不同的写法可以合理运用形参,也可以不用,因为不同的程序在写的时候,用形参和不用形参得出的结果可能会不一样。,比如在程序1和2中,看似相同的变量,却因形参的不同用法而导致结果不同。

posted on 2016-12-04 22:45  计科-XJ  阅读(138)  评论(0编辑  收藏  举报