随机产生50个100~200间的整数存入数组a中,并以每行10个数输出这50个数。从键盘输入两个整

随机产生50个100~200间的整数存入数组a中,并以每行10个数输出这50个数。从键盘输入两个整数作为变量start和end的值(0≤start≤end≤49),找到数组a中下标从start到end之间的最大值及最大值的下标,并输出。计算数组a中50个数的和,并输出。从键盘输入一个字符a或d作为变量sortord的值(其中a表示由小到大,即升序,d表示由大到小,即降序),按照变量sortord所指定的方式将数组a中的数据进行排序,并输出排序结果(每行10个数)。

要求:

1) 定义函数int max_a(int t[],int s,int e)用于寻找数组的最大值的下标

2) 定义函数int sum_a(int t[])用于计算数组a中50个数的和

3) 定义函数void asc(int t[])用于对数组按照升序进行排序

4) 定义函数void desc(int t[])用于对数组按照降序进行排序

5) 所有输出均在主函数中实现

提示:

1) 产生随机种子的函数为srand()(头文件为stdlib.h),通常可以通过系统时间来改变种子值,例如

srand((unsigned)time(NULL)),其中time函数的头文件为time.h

2) 产生随机数的函数为rand()(头文件为stdlib.h),例如产生a~b之间的随机数应为a+rand()%(b-a+1)

3) 清除读写缓冲区的函数fflush()(头文件为stdio.h),例如清空读缓冲区fflush(stdin)

程序如下,编译工具是VC6++:

#include <stdio.h>
#include <string.h>
#include <time.h>

/*macro defintion*/
#define  ARRAY_MAX_NUM 50
#define  RAND_MIN_NUM 100
#define RAND_MAX_NUM 200

/*globle value*/
int a[ARRAY_MAX_NUM];

int DIGITSORT_DataProduct(void)
{
int i;
srand(time(NULL));
for(i=0; i<ARRAY_MAX_NUM; i++)
{
a[i] = RAND_MIN_NUM+rand()%(RAND_MAX_NUM-RAND_MIN_NUM+1);
}

printf("Rand data print:\n");
for(i=0; i<ARRAY_MAX_NUM; i++)
{
if((i != 0) && (i%10 == 0))
{
printf("\n");
}
printf("%d ", a[i]);
}
printf("\n");
return 0;
}

int DIGITSORT_max_a(int *a, int s, int e)
{
int s32MaxDigit, s32MaxSubscript;
int i;

s32MaxDigit = a[s];
s32MaxSubscript = s;

for(i=(s+1); i<(e-s+1); i++)
{
if(a[i] > s32MaxDigit)
{
s32MaxDigit = a[i];
s32MaxSubscript = i;
}
}

printf("Max digit is: %d, subscript is %d\n", s32MaxDigit, s32MaxSubscript);
return 0;
}

int DIGITSORT_sum_a(int *a)
{
int i, s32Sum = 0;
for(i=0; i<ARRAY_MAX_NUM; i++)
{
s32Sum += a[i];
}

printf("Array-a sum is %d\n", s32Sum);
return 0;
}

int DIGITSORT_asc(int *a)
{
int i, j, tmp;

for(i=0; i<ARRAY_MAX_NUM; i++)
{
tmp = a[i];
for(j=i+1; j<ARRAY_MAX_NUM; j++)
{
if(tmp > a[j])
{
a[i] = a[j];
a[j] = tmp;
tmp = a[i];
}
}
}

printf("Asc data print:\n");
for(i=0; i<ARRAY_MAX_NUM; i++)
{
if((i != 0) && (i%10 == 0))
{
printf("\n");
}
printf("%d ", a[i]);
}
printf("\n");
return 0;
}

int DIGITSORT_desc(int *a)
{
int i, j, tmp;

for(i=0; i<ARRAY_MAX_NUM; i++)
{
tmp = a[i];
for(j=i+1; j<ARRAY_MAX_NUM; j++)
{
if(tmp < a[j])
{
a[i] = a[j];
a[j] = tmp;
tmp = a[i];
}
}
}

printf("Desc data print:\n");
for(i=0; i<ARRAY_MAX_NUM; i++)
{
if((i != 0) && (i%10 == 0))
{
printf("\n");
}
printf("%d ", a[i]);
}
printf("\n");
return 0;
}

int main()
{
int s32StartSub, s32EndSub; 
char s32Sortord;
DIGITSORT_DataProduct();

printf("Please input start subscript and end subscript\n");
scanf("%d %d", &s32StartSub, &s32EndSub);
DIGITSORT_max_a(a, s32StartSub, s32EndSub);

DIGITSORT_sum_a(a);

while(1)
{
getchar(); /*get '\n'*/
printf("Please input sort order, letter a means asc b means desc\n");
scanf("%c", &s32Sortord);
if(s32Sortord == 'a')
DIGITSORT_asc(a);
else if(s32Sortord == 'd')
DIGITSORT_desc(a);
else
printf("Please input correct\n");
}
return 0;
}

输出结果:


以上,

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-06-06


就是这个啦,自己看看可以吗

本回答被网友采纳
第2个回答  2016-06-06
random
相似回答