分屏处理数据系统(简陋)

随机产生 1000 个数,并分屏显示(每行显示 10 个数字,每页显示 10 行),而且在每一
屏的下方显示本屏中数据的最大值、最小值和平均值。
提示:循环显示,在分屏点上输出 press any key to continue…,通过 getchar()函数让用户

以按回车键的方式进入下一屏。


定义4个函数:分别是最小值,最大值,平均值,以及主菜单。这样让main函数很清晰了。


#include<stdio.h>
#include<time.h>
#include<stdlib.h>
main()
{


//float *类型的实参与float类型的形参不兼容。


int i, j, k, m, n=0;
int num[1050] = {0};
float sum[100] = { 0 }, ave[100];
int  min[100], max[100];
void Srand(int);
void Min(int, int);
void Max(int, int);
void Mainthing(int, int, int, int, float);
void Ave(int, float[], float[]);

int system(const char *string);
Srand(num); //获取随机数
Min(num, min);
Max(num, max);
Ave(num, sum, ave);
for (i = 0; i < 10; i++)//因为有1000个数字,一共10页,所以这里循环执行10次,如果不知道具体的次数,可以把数字总数除以每页多少个(1000/100 = 10)
{
Mainthing(i, max[i], min[i], num, ave[i]);
printf("\npress any key to continue...");
getchar(); //这样输入回车就直接下一页了,但是如果是输入其他字符后再输入回车,会一口气显示 :输入字符数+一个回车   的页数,比如输入ab+回车,那么会一口气显示3页的。

system("cls"); //清屏,上次没有清屏效果,这次补上
}
}


void Srand(int num[]) //获取随机数
{
int i, j, k;

srand((unsigned int)(time(NULL))); //很抱歉,因为个人疏忽,忘记取时间为种子,现在补上

for (i = 0; i < 1000; i++)
{
num[i] = rand() % 1000 + 1;
}
}


void Min(int num[],int min[]) //获取最小值
{
int i, j, k=num[0], m=0, n;
for (i = 0;i<=1000; i++)
{
if ((i % 100 == 0) && (i != 0))
{
min[m] = k;
m++;
k = num[i];
}
if (k >= num[i])
k = num[i];
}
}


void Max(int num[], int max[]) //获取最大值
{
int i, j, k = num[0], m = 0, n;
for (i = 0; i<=1000; i++)
{
if ((i % 100 == 0) && (i != 0))
{
max[m] = k;
m++;
k = num[i];
}
if (k <= num[i])
k = num[i];
}
}


void Ave(int num[], float sum[],float ave[]) //求平均值
{
int i, j, k, m=0, n;
for (i = 0; i <= 1000; i++)
{
if ((i % 100 == 0) && (i != 0))
{
ave[m] = sum[m] / 100.0;
m++;
}
sum[m] += num[i];
}
}


void Mainthing(int n,int max,int min,int num[], float ave)
{
int i, j, k, m;
printf("第%d页\n", n + 1);
for (i = n*100; i < 100*(n+1); i++)
{
if ((i % 10 == 0) && (i != 0))
printf("\n");
printf("%5d", num[i]);

}
printf("\n最大值:%d\t最小值:%d\t平均值:%.2f\n", max, min, ave);
printf("*********************************************\n");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值