.定义函数实现:输入若干名学生的成绩(输入人数或用负数结束均可),求其平均分,最高分和最低分,并指出最高分和最低分的学生(给出下标即可),输入一个成绩,说明是第几个学生的成绩,最后按照成绩从高到低排序后输出。(至少七个函数。输入函数、平均值函数、最大值下标函数、最小值下标函数,查找函数,排序函数,输出函数)
# include# define N 100void renshu(int sore[],int a);float pingjun(int sore[],int a);int max(int sore[],int a,int shu[]);int min(int sore[],int a,int shu[]);void find(int sore[],int a);void paixu(int sore[],int a);void shuchu(int sore[],int a);int main(){ int a,b,c,d,e,h,n,x,y; int sore[N]={ 0},shu[N]={ 0}; printf("输入成绩人数\n"); scanf("%d",&a); printf("输入成绩\n"); renshu(sore,a); printf("平均数为%.2f",pingjun(sore,a)); find(sore,a); x=min(sore,a,shu); for(b=0;b max) { max=sore[b]; n=0; shu[n++]=b; } } return n;}int min(int sore[],int a,int shu[]){ int b,c,d,e,min=0,n,h; min=sore[0]; n=0; for(b=0;b sore[b]) { min=sore[b]; n=0; shu[n++]=b; } } return n;}
.定义长度为100的整型数组,将数组元素赋初值为1,2……100,将其中所有值为3或7倍数的值删除,最后打印输出数组中剩余数的个数及每个数。
# include# define N 100void saber(int shu[N]);void shuchu(int shu[N]); int main(){ int a,b,c,d,e; int shu[N]={ 0}; for(a=0,b=1;a
2. 数字加密:输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,做为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。例如输入1257,经过加9取余后得到新数字0146,再经过两次换位后得到4601。
# include# define N 4 int main (){ int b,c,d,e,f,shu[N]={ 0}; char a; printf("输入一个四位数整数加密\n"); for(b=0;b<4;b++) { scanf("%c",&a); shu[b]=((a-48)+9)%10; } c=shu[0]*10+shu[2]*1000+shu[1]+shu[3]*100; printf("%d\n",c); return 0; }
1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的 前m位
# include# define N 200int main (){ int a,b=0,c,d,e,m,n,shu[N]={ 0},f,h; for(a=0,b=1;a
实验总结:
看了
1.第一题中应用的函数较多,一个一个的来,简单一点,
2.在函数中into void 两种,比较喜欢第二个当然有时因题而义,有时必须要返回值存在,
3用函数多了老是忘打return 0;尴尬;单词量较少,对于定义的函数名很随意,还有变量的定义也一样,
4.会做的一想就行,有的连体都没看懂,理解问题;
程序1
程序2
两种函数的传递方式不同,导致结果不一样,值传递和引用传递两种形式,第一个是引用传递,第二个是值传递,第一个形参就是实参,实参随着形参的改变而改变,第二个中将数组用变量代替,然而实参不会因形参的变化去改变,所以输出值不一样
简单变量做参数,实现的是值的单向传递,即只能把实参的值传给形参,由于实参和形参占用不同的内存单元,形参的改变不会影响实参。
数组做函数参数,是将实参数组的地址传给形参数组,实参和形参占用的是相同的内存空间。