啊哈磊_编程从这里起步
标题:
C语言一天一练--26.august
[打印本页]
作者:
凡夫俗子
时间:
2012-8-26 19:14
标题:
C语言一天一练--26.august
编程题
——
平均数、中位数以及众数
-----------------------------------------------------------------------------------------------------------------
输入一个正整数N和N个正整数
打印这N个数的平
均数(取整)、中位数以及众数(如果没有则输出NO)
------------------------------------------------------------------------------------------------------------------
【样例输入1】
5
7 3 4 5 8
【样例输出1】
5 5 NO
【样例输入2】
5
12 325 15 12 28
【样例输出2】
72 15 12
作者:
vcwuyang
时间:
2012-8-27 11:25
众数的概念是什么 如果2 3 3 4 4 这算有多个众数,如3,4都算众数,还是无
作者:
凡夫俗子
时间:
2012-8-30 18:54
vcwuyang 发表于 2012-8-27 11:25
众数的概念是什么 如果2 3 3 4 4 这算有多个众数,如3,4都算众数,还是无
呃,程序需要,就先选择靠前的一个,例如这个就是3
作者:
henk
时间:
2012-11-26 12:04
[ 本帖最后由 henk 于 2012-11-26 13:15 编辑 ]\n\n[ 本帖最后由 henk 于 2012-11-26 13:14 编辑 ]\n\n
#include<stdio.h>
#include<stdlib.h>
/*快速排序*/
int quick_sort(int *a, int n, int left, int right) {
int s, i, j;
int temp;
if(left < right) {
s = a[left];
i = left;
j = right + 1;
while(1) {
while(i + 1 < n && a[++i] > s);
while(j - 1 > -1 && a[--j] < s);
if(i >= j) {
break;
}
temp = a;
a = a[j];
a[j] = temp;
}
a[left] = a[j];
a[j] = s;
quick_sort(a, n, left, j - 1);
quick_sort(a, n, j + 1, right);
}
return 0;
}
/*求平均数*/
void get_avg(int *a,int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
{
sum+=a;
}
printf("平均数=%.2f\t",(sum/n));
}
/*求中位数*/
void find_middle(int *a,int n)
{
float middle;
if(n%2==1)
{
middle=a[n/2];
}
else
{
middle=(a[n/2]+a[n/2-1])/2.0;
}
printf("中位数=%.1f\t",middle);
}
/*求众数*/
int find_max_seq(int *a, int n)
{
int i, elem;
int count = 0, count1 = 0;
for(i = 0; i < n;i++ )
{
while(a==a[i+1])
{
count++;
i++;
}
if(count > count1)
{
count1 = count;
elem = a;
}
/*
因为暂时没想到如何当阵列里没有众数时,印出NO,于是就用当阵列里没有众数时,将elem赋值为-1,
在main函式中判断elem的大小,当elem=-1时,则印出NO,否则印出elem;
*/
else if(count1==0)
{elem=-1;}
count = 0;
}
return elem;
}
int main()
{
int n,max;
printf("请输入一个整数n:");
scanf("%d",&n);
int arr[n];
int i;
printf("请输入%d个整数(整数间用空格分开):",n);
for(i = 0; i < n; i++)
{
scanf("%d",&arr);
}
quick_sort(arr, n, 0, (n-1));
get_avg(arr,n);
find_middle(arr,n);
max=find_max_seq(arr, n);
if(max!=-1)
{printf("众数=%d",max);}
else
{printf("NO");}
system("pause");
return 0;
}
作者:
henk
时间:
2012-12-3 15:32
[mw_shl_code=c,true]
#include<stdio.h>
#include<stdlib.h>
/*快速排序*/
int quick_sort(int *a, int n, int left, int right) {
int s, i, j;
int temp;
if(left < right) {
s = a[left];
i = left;
j = right + 1;
while(1) {
while(i + 1 < n && a[++i] > s);
while(j - 1 > -1 && a[--j] < s);
if(i >= j) {
break;
}
temp = a;
a = a[j];
a[j] = temp;
}
a[left] = a[j];
a[j] = s;
quick_sort(a, n, left, j - 1);
quick_sort(a, n, j + 1, right);
}
return 0;
}
/*求平均数*/
void get_avg(int *a,int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
{
sum+=a;
}
printf("平均数=%.2f\t",(sum/n));
}
/*求中位数*/
void find_middle(int *a,int n)
{
float middle;
if(n%2==1)
{
middle=a[n/2];
}
else
{
middle=(a[n/2]+a[n/2-1])/2.0;
}
printf("中位数=%.1f\t",middle);
}
/*求众数*/
int find_max_seq(int *a, int n)
{
int i, elem;
int count = 0, count1 = 0;
for(i = 0; i < n;i++ )
{
while(a==a[i+1])
{
count++;
i++;
}
if(count > count1)
{
count1 = count;
elem = a;
}
/*
因为暂时没想到如何当阵列里没有众数时,印出NO,于是就用当阵列里没有众数时,将elem赋值为-1,
在main函式中判断elem的大小,当elem=-1时,则印出NO,否则印出elem;
*/
else if(count1==0)
{elem=-1;}
count = 0;
}
return elem;
}
int main()
{
int n,max;
printf("请输入一个整数n:");
scanf("%d",&n);
int arr[n];
int i;
printf("请输入%d个整数(整数间用空格分开):",n);
for(i = 0; i < n; i++)
{
scanf("%d",&arr);
}
quick_sort(arr, n, 0, (n-1));
get_avg(arr,n);
find_middle(arr,n);
max=find_max_seq(arr, n);
if(max!=-1)
{printf("众数=%d",max);}
else
{printf("NO");}
system("pause");
return 0;
}[/mw_shl_code]
欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/)
Powered by Discuz! X3.2