第九次作业
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、.冒泡排序法是将两个相邻的数比较小的排到前面