一、实验内容
1、实验要求:
1、定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
代码:
#include<stdio.h> #define N 100 void shuru(int score[],int n); double average(int score[],int n); int maxindex(int score[],int n,int max[]); int minindex(int score[],int n,int min[]); int findindex(int a,int score[],int n,int find[]); void paixu(int score[],int n); void shuchu(int score[],int n); int main() { int i,score[N]={0},n,max[N]={0},min[N]={0},f,find[N]={0}; printf("请输入学生的人数 "); scanf("%d",&n); shuru(score,n); printf("平均分为%.2lf ",average(score,n)); printf("成绩最高的学生是:"); i=maxindex(score,n,max); shuchu(max,i); printf("成绩最低的学生是:"); i=minindex(score,n,min); shuchu(min,i); printf("请输入你想查找的成绩:"); scanf("%d",&f); if(findindex(f,score,n,find)) { i=findindex(f,score,n,find); printf("这个成绩的学生是: "); shuchu(find,i); } else { printf("你查找的成绩不存在。 "); } printf("将成绩由小到大排列: "); paixu(score,n); shuchu(score,n); return 0; } void shuru(int score[],int n) { int i; for(i=0;i<n;i++) { printf("请输入第%d个学生的成绩: ",i+1); scanf("%d",&score[i]); } } double average(int score[],int n) { int i,sum=0; for(i=0;i<n;i++) { sum=sum+score[i]; } return (double)sum/n; } int maxindex(int score[],int n,int max[]) { int i,Max,index=0; Max=score[0]; for(i=0;i<n;i++) { if(score[i]==Max) { max[index++]=i; } else if(score[i]>Max) { Max=score[i]; index=0; max[index++]=i; } } return index; } int minindex(int score[],int n,int min[]) { int i,Min,index=0; Min=score[0]; for(i=0;i<n;i++) { if(score[i]==Min) { min[index++]=i; } else if(score[i]<Min) { Min=score[i]; index=0; min[index++]=i; } } return index; } int findindex(int a,int score[],int n,int find[]) { int i,index=0,flag=0; for(i=0;i<n;i++) { if(a==score[i]) { find[index++]=i; flag=1; } } if(flag==0) return 0; else return index; } void paixu(int score[],int n) { int i,j,temp,flag; for(i=0;i<n-1;i++) { flag=0; for(j=0;j<n-1-i;j++) { if(score[j]>score[j+1]) { temp=score[j]; score[j]=score[j+1]; score[j+1]=temp; flag=1; } } if(flag==0) break; } } void shuchu(int score[],int n) { int i; for(i=0;i<n;i++) { printf("%d ",score[i]); } }
程序运行结果:
2、定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
代码:
#include<stdio.h> #define N 100 int main() { int a[N],i,b=0; for(i=0;i<100;i++) { a[i]=i+1; if(a[i]%3==0||a[i]%7==0) { a[i]=0; b++; } if(a[i]!=0) { printf("%d ",a[i]); } } printf("剩余%d个数 ",100-b); return 0; }
程序运行结果 :
二、实验总结(实验中遇到的问题及解决方法)
1、函数名要一样,注意;的使用。
2、注意数组的越界问题。
3、返回值应放在循环的外面。
4、冒泡排序法的思路是:把相邻两个数进行比较,把小的调到前头!
5、注意分清数据类型,有必要时要进行强制数据转换