#include<stdio.h>
int a[100];
int main(){
int i=0,sum=0,m=0,j;
double avg;
while(1){
scanf("%d",&m);
if(m==-1) break;
a[i++]=m;
}
for(j=0;j<i;j++){
sum+=a[j];
}
avg=sum*1.0/i;
printf("和:%d,平均数:%f",sum,avg);
return 0;
}
1、平均数、选择排序代码如下:
int main()
{
int i = 0;
double m = 0,sum = 0,avg = 0;
while(1) {
scanf("%lf", &m);
if(-1 == m)
break;
sum = sum + m;
++ i; //记录求平均数的个数
}
avg = sum/i;
printf("avg = %lf\n", avg);
return 0;
}
/*
选择排序的思路:以升序为例子
每次遍历,找到当前最大元素的下标,放在参与循环的几个元素的最右边
例如一个有5个元素的数组:
第一次循环,找到a[0],a[1],a[2],a[3],a[4]这5个元素中最大的那个元素的下标,将他和a[4]交换位置,
此时最大的元素就放在了a[4],
第二次循环,找到a[0],a[1],a[2],a[3]这四个元素中最大的那个元素的下标,将他和a[3]交换位置,
此时整个数组第二大的元素就放在了a[3],
以此类推......
函数参数介绍:
@ arr 数组名字
@ amount 数组元素的个数
*/
int SelectSort(int arr[], int amount)
{
int subscript = 0; //记录最终交换元素的下标
for(int i=0; i<amount-1; i++) {
subscript = 0;
for(int j=0; j<amount-i-1; j++) {
//升序
if(arr[subscript] < arr[j+1])
subscript = j + 1; //更新下标
}
int temp = arr[subscript];
arr[subscript] = arr[amount-i-1];
arr[amount-i-1] = temp;
}
return 0;
}
如果n个数也是重点的话,应该通过链表来实现,但是按照你提问的问题,你们应该还没学过链表