第九次实验
Posted 丁啸宇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第九次实验相关的知识,希望对你有一定的参考价值。
1.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
#include <stdio.h> int max(int grade[],int n); int min(int grade[],int n); void find(int grade[],int n); void shuru(int grade[],int n); double average(int grade[],int n); void paixv(int score[],int n); void putout(int grade[],int n); #define N 10000 int main() { int ren,grade[N],score[N]; float pingjun; printf("请输入学生人数\\n"); scanf("%d",&ren); shuru(grade,ren); average(grade,ren); max(grade,ren); min(grade,ren); find(grade,ren); paixv(score,ren); putout(grade,ren); return 0; } double average(int grade[],int n) { int s,sum=0; float pingjun; for(s=0;s<n;s++) { sum+=grade[s]; } pingjun=(float)sum/n; printf("平均分是%f\\n",pingjun); } void shuru(int grade[],int n) { int s; for(s=0;s<n;s++) { printf("请输入学生的分数:\\n"); scanf("%d",&grade[s]); } } int max(int grade[],int n) { int s,max,f,ren; max=grade[0]; for(s=0;s<n;s++) { if(grade[s]>=max) { max=grade[s]; f=s+1; } } printf("成绩最高为%d分,他是第%d个同学\\n",max,f); } int min(int grade[],int n) { int a,g,ren,zuixiao,s; zuixiao=grade[0]; g=1; for(s=1;s<n;s++) { if(grade[s]<=zuixiao) { zuixiao=grade[s]; g=s+1; } } printf("成绩最低为%d分,他是第%d个同学\\n",zuixiao,g); } void find(int grade[],int n) { int ren,s,g,h,a; printf("请输入一个学生的成绩:\\n"); scanf("%d",&h); for(s=0;s<n;s++) { if(h==grade[s]) { g=s+1; printf("这是第%d个学生的成绩\\n",g); } } } void paixv(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 putout(int score[],int n) { int i; for(i=0;i<n;i++) { printf("%d\\n",score[i]); } }
2.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
#include <stdio.h> #define N 100 int main() { int number[N],a,s=0,d; for(a=1;a<=N;a++) { number[a]=a; if(number[a]%3==0||number[a]%7==0) { number[a]=0; } else { printf("%d\\t",number[a]); s++; } } printf("\\n一共%d个数",s); return 0; }
1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m位。要求:(1)数组值在程序中初始化(2)m从键盘输入
#include <stdio.h> #define N 10 int main() { int number[N],a,s,d,f,g; for(a=1;a<=N;a++) //数组赋值 { number[a]=a; } printf("请输入你想后移位数:\\n"); scanf("%d",&s); number[1]=N; for(a=1;a<s;a++) { f=number[N-1]; for(g=N-2;g>=1;g--) { number[g+1]=number[g]; } number[1]=f; } for(a=1;a<N;a++) { printf("%d\\t",number[a]); } return 0; }
知识点:
1、定义函数,只要函数名不一样,用的表示符号一样对程序没有太大影响
2、可以用循环对一个数组进行赋值
3、调用函数一定要与定义函数名相同
实验总结
1、
注意细节,number[1]=N与number[1]=f为互补作用,没有number[1]=N则程序的最后一个量不能进行循环
2、应注意数组不能越界,C语言不对数组进行越界检查
以上是关于第九次实验的主要内容,如果未能解决你的问题,请参考以下文章