第九次实验
1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
#include <stdio.h> void readgrade(int grade[],int n); //读取函数 void ave(int grade[],int n); //平均分函数 void maxgrade(int grade[],int n); //最高分 void mingrade(int grade[],int n); //最低分 void findgrade(int grade[],int find,int n); //成绩查询函数 void sort(int grade[],int n); //顺序排列函数 void printgrade(int grade[],int n); //输出 #define N 100 int main() { int grade[N],sum=0,n,i,max,min,find,m; printf("输入需要统计的学生个数:"); scanf("%d",&n); readgrade(grade,n); ave(grade,n); maxgrade(grade,n); mingrade(grade,n); printf("输入你要查询的成绩:"); scanf("%d",&find); findgrade(grade,find,n); sort(grade,n); printgrade(grade,n); return 0; } void readgrade(int grade[],int n) { int i; for(i=0;i<n;i++) { printf("输入第%d名同学的成绩:",i+1); scanf("%d",&grade[i]); } } void ave(int grade[],int n) { int sum=0,i; double average; for(i=0;i<n;i++) { sum=sum+grade[i]; } average=(double)sum/n; printf("平均分为%.3f分\n",average); } void maxgrade(int grade[],int n) { int max=grade[0],i; for(i=1;i<n;i++) { if(grade[i]>=max) { max=grade[i]; } } for(i=0;i<n;i++) { if(grade[i]==max) { printf("第%d名",i+1); } } printf("同学获得最高分,分数为%d分\n",max); } void mingrade(int grade[],int n) { int i,min; min=grade[0]; for(i=0;i<n;i++) { if(grade[i]<=min) { min=grade[i]; } } for(i=0;i<n;i++) { if(grade[i]==min) { printf("第%d名",i+1); } } printf("同学获得最低分,分数为%d分\n",min); } void findgrade(int grade[],int find,int n) { int i; for(i=0;i<n;i++) { if(grade[i]==find) { printf("第%d名",i+1); n++; } } if(n!=0) { printf("同学获得了%d分\n",find); } } void sort(int grade[],int n) { int x,y,i; for(x=0;x<n-1;x++) { for(y=0;y<n-x-1;y++) { if(grade[y+1]>grade[y]) { i=grade[y]; grade[y]=grade[y+1]; grade[y+1]=i; } } } } void printgrade(int grade[],int n) { int i; for(i=0;i<n;i++) printf("%5d",grade[i]); }
2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
#include <stdio.h> int main() { int i,m,n,x,number[100]; for(i=0;i<100;i++) { number[i]=i+1; } for(i=0;i<100;i++) { if(number[i]%3==0||number[i]%7==0) { number[i]=0; } } x=0; for(i=0;i<100;i++) { if(number[i]==0)
{ continue;
}
else
{ printf("%2d ",number[i]); x++;
} if(x%10==0) printf("\n"); } printf("\n共有%d个数",x-1); return 0; }
实验总结:
1首先要先定义好函数和变量不要出现开头没有定义,后边就是用的情况。
2注意函数原型书写时的格式要采用复制粘贴函数首部然后加分号的方法。
3可以采用在函数中输出的方式这样在特定的额题目中可以减少主函数的书写。
4适当的添加注释这样可以方便程序的阅读。
5在第二题中可以采取换行的方式使得程序的运行结果看起来更加简洁。
6注意与同学之间的交流,交互探讨,共同进步。
分析:
1从数组中删除某些数也就等同于将那些值统统归为零然后输出那些不为零的数值