一、实验内容
1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
#include<stdio.h> #define N 99999 int shuru(int fen[],int n) { int i; for(i=0;i<n;i=i+1) { printf("请输入成绩 "); scanf("%d",&fen[i]); } } double pingjun(int fen[],int n) { int i,sum; sum=0; for(i=0;i<n;i=i+1) { sum=sum+fen[i]; } return (double)sum/n; } int da(int fen[],int n) { int i,max; max=fen[0]; for(i=0;i<n;i=i+1) { if(fen[i]>max) { max=fen[i]; } } return max; } int dabiao(int fen[],int n) { int i,a; a=0; for(i=0;i<n;i=i+1) { if(fen[i]>fen[a]) { a=i; } } return a; } int xiao(int fen[],int n) { int i,min; min=fen[0]; for(i=0;i<n;i=i+1) { if(fen[i]<min) { min=fen[i]; } } return min; } int xiaobiao(int fen[],int n) { int i,a; a=0; for(i=0;i<n;i=i+1) { if(fen[i]<fen[a]) { a=i; } } return a; } int zhao(int fen[],int i,int x) { printf("请输入学生成绩 "); scanf("%d",&x); i=0; while(fen[i]>=0) { if(fen[i]==x) { return i; } i=i+1; } return -1; } int pai(int fen[],int n) { int i,j,k,t; for(i=0;i<n-1;i=i+1) { k=0; for(j=0;j<n-1;j=j+1) { if(fen[j]>fen[j+1]) { t=fen[j]; fen[j]=fen[j+1]; fen[j+1]=t; k=1; } } if(k==0) { break; } } } int main() { int fen[N],n,max,min,a,b,c,i; double ping; printf("请输入一共有多少学生 "); scanf("%d",&n); shuru(fen,n); ping=pingjun(fen,n); printf("平均分是%.2lf ",ping); max=da(fen,n); a=dabiao(fen,n); a=a+1; printf("最高分是%d,是第%d个同学 ",max,a); min=xiao(fen,n); b=xiaobiao(fen,n); b=b+1; printf("最低分是%d,是第%d个同学 ",min,b); c=zhao(fen,n,c); c=c+1; printf("这是第%d个学生 ",c); pai(fen,n); printf("排序后的成绩为 "); for(i=0;i<n;i=i+1) { printf("%4d",fen[i]); } return 0; }
2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
#include<stdio.h> int main() { int shu[100]; int i,a; a=0; for(i=0;i<100;i=i+1) { shu[i]=i+1; } for(i=0;i<100;i=i+1) { if(shu[i]%3==0||shu[i]%7==0) { shu[i]=0; } } for(i=0;i<100;i=i+1) { if(shu[i]!=0) { a=a+1; printf("%d ",shu[i]); } } printf("还剩下%d个数 ",a); return 0; }
二、实验总结
1、查百度
2、数组在函数中的传递
3、不要嫌程序麻烦,要一步一步的耐心写
三、程序分析
程序1:两个数换位置,执行结果是 2,1
程序2:两个数换位置,但是换不了, 结果是 1,2