1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
#include<stdio.h>
#define N 999
int max(int fs[],int rs); //最高分
int min(int fs[],int rs); //最低分
int average(int fs[],int rs); //平均分
void srfs(int fs[],int rs); //输入分数
void zgxs(int fs[],int rs); //最高学生
void zdxs(int fs[],int rs); //最低学生
void cfxt(int fs[],int rs); //查分系统
void printcj(int fs[],int rs); //顺序输出成绩
int main()
{
int rs,fs[N],a[N],MAX,MIN,ZGF,ZDF;
double PJF;
printf("输入学生的人数\n");
scanf("%d",&rs);
srfs(fs,rs);
MAX=max(fs,rs);
MIN=min(fs,rs);
PJF=average(fs,rs);
printf("最高分是%d,最低分是%d,平均分是%.2f\n",MAX,MIN,PJF);
zgxs(fs,rs);
zdxs(fs,rs);
cfxt(fs,rs);
printcj(fs,rs);
return 0;
}
int max(int fs[],int rs)
{
int i,max;
for(i=1,max=fs[0];i<rs;i++)
{
if(fs[i]>max)
{
max=fs[i];
}
}
return max;
}
int min(int fs[],int rs)
{
int i,min;
for(i=0,min=fs[0];i<rs;i++)
{
if(fs[i]<min)
{
min=fs[i];
}
}
return min;
}
int average(int fs[],int rs)
{
int i,sum;
for(sum=0,i=0;(i+1)<=rs;i++)
{
sum=sum+fs[i];
}
return (double)sum/rs;
}
void srfs(int fs[],int rs)
{
int i;
printf("输入学生的成绩\n");
for(i=0;(i+1)<=rs;i++)
{
printf("第%d位学生的成绩",i+1);
scanf("%d",&fs[i]);
printf("\n");
}
}
void zgxs(int fs[],int rs)
{
int i,Max;
Max=max(fs,rs);
for(i=0;i<rs;i++)
{
if(Max==fs[i])
{
printf("最高分学生是%d号\n",i+1);
}
}
}
void zdxs(int fs[],int rs)
{
int i,Min;
Min=min(fs,rs);
for(i=0;i<rs;i++)
{
if(Min==fs[i])
{
printf("最低分是%d号学生\n",i+1);
}
}
}
void cfxt(int fs[],int rs)
{
int i,j=0,a;
printf("输入学生的成绩,查询学号\n");
scanf("%d",&a);
for(i=0;(i+1)<=rs;i++)
{
if(a==fs[i])
{
j++;
printf("第%2d个学生是%d分\n",i+1,a);
}
}
printf("一共有%d个学生是这个分数\n",j);
}
void printcj(int fs[],int rs)
{
int i,j,h;
printf("成绩顺序排名为\n");
for(i=0;(i+1)<=rs;i++)
{
for(j=0;(j+1)<=rs;j++)
{
if(fs[j]<fs[j+1])
{
h=fs[j];
fs[j]=fs[j+1];
fs[j+1]=h;
}
}
}
for(i=0;i+1<=rs;i++)
{
printf("%d\n",fs[i]);
}
}
2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
#include<stdio.h>
#define N 100
void print();
int main()
{
print();
}
void print()
{
int a[N],i,j=0;
for(i=0;i<=100;i++)
{
a[i]=i+1;
}
for(i=0;i<100;i++)
{
if((a[i]%7==0)||(a[i]%3==0));
else
{
j++;
printf("%d ",a[i]);
}
}
printf("剩余%d个数字",100-j);
}
二、总结:
1,一个主函数对应一个子函数。注意一一对应。
2,变量需要赋予初值
3,在调用函数时注意函数的一一对应。