第九次作业
一.实验内容
1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
1.1 代码:
#include <stdio.h> #define N 100 int readscore(int score[],int n); int printscore(int score[],int n); double average(int score[],int n); int findmin(int score[],int n); void findminlndex(int score[],int n); int findmax(int score[],int n); void findmaxlndex(int score[],int n); void findscore(int score[],int n); void bubblesort(int score[],int n); int main () { int score[N]={0},n,max,min; double average1; printf("请输入学生数量"); scanf("%d",&n); readscore(score,n); bubblesort(score,n); average1=average(score,n); printf("这%d名学生的平均成绩为%.2lf\n",n,average1); max=findmax(score,n); min=findmin(score,n); printf("这些学生成绩中的最高分是%d,最低分是%d\n",max,min); findmaxlndex(score,n); findminlndex(score,n); findscore(score,n); return 0; } int readscore(int score[],int n) { int i; printf("请输入分数\n"); for(i=0;i<n;i++) { scanf("%d",&score[i]); } return i; } void bubblesort(int score[],int n) { int i,j,k,l; for(i=0;i<n-1;i++) { l=0; for(j=0;j<n-i-1;j++) { if(score[j]>score[j+1]) { k=score[j]; score[j]=score[j+1]; score[j+1]=k; l=1; } } if(l==0) { break; } } for(i=0;i<n;i++) { printf("%d号的学生成绩:%d\n",i+1,score[i]); } } double average(int score[],int n) { int i,sum=0; for(i=0;i<n;i++) { sum+=score[i]; } return (double)sum/n; } int findmin(int score[],int n) { int i,min=score[0]; for(i=1;i<n;i++) { if(score[i]<min) { min=score[i]; } } return min; } void findminlndex(int score[],int n) { int i,min; min=findmin(score,n); printf("得最低分的同学有:\n"); for(i=0;i<n;i++) { if(score[i]==min) { printf("第%d名学生 ",i+1); } } printf("\n"); } int findmax(int score[],int n) { int i,max=score[0]; for(i=1;i<n;i++) { if(score[i]>max) { max=score[i]; } } return max; } void findmaxlndex(int score[],int n) { int i,max; max=findmax(score,n); printf("得最高分的同学有:\n"); for(i=0;i<n;i++) { if(score[i]==max) { printf("第%d名学生 ",i+1); } } printf("\n"); } void findscore(int score[],int n) { int i,score2,l=0; printf("请输入你要查找的分数:\n"); scanf("%d",&score2); for(i=0;i<n;i++) { if(score[i]==score2) { printf("得该分数的是:\n"); printf("第%d位学生\n",i+1); } } }
1.2 程序运行结果:
2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
2.1 代码:
#include <stdio.h> #define N 100 int main ( ) { int i,score[N]={0},a=0; for(i=0;i<N;i++) { score[i]=i+1; } for(i=0;i<N;i++) { if(score[i]%3==0||score[i]%7==0) { score[i]=0; } else { a++; printf("%4d",score[i]); if(a%10==0) { printf("\n"); } } } printf("\n 共输出了%d个数",a); return 0; }
2.2 程序运行结果:
二、实验总结
1.注意逻辑混乱问题,不要写成两个最大值或最小值。
2.,定义的变量名是什么,在主程序里调用也得用什么,变量名要改一下,不能同名。
3.相似的代码粘也可以,不过不一样的地方要记得改。
4.要记得加大括号,把相应的内容放进去。
三、程序分析
形参的应用于实参有一定的区别,在写程序时不同的写法可以合理运用形参,也可以不用,因为不同的程序在写的时候,用形参和不用形参得出的结果可能会不一样。,比如在程序1和2中,看似相同的变量,却因形参的不同用法而导致结果不同。