C语言问题解答!

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:05:03
a 编写一个程序,输入10个双精度型数字到一个名为raw的数组中。在10个有用户输入的数字被输入到数组后,你的程序应该循环经历raw数组10次。在每次通过这个数组期间,你的程序一概选择raw数组中的最小数值,并把这个被选择的数值放在位于一个名为stored的数组中的下一个变量中。因此,当你的程序完成时,stored数组应该包含raw数组中按照从小到大排列顺序的数值。(确保在每次经历一个很高的数字期间重新设置被选取的最小数值,以使它不再被选择。你将需要在第一个for循环内的另一个for循环,以便确定每次经历的最小数值)

b 在a中排序一个数组中的数值的方法是非常低效率的。你能够确定为什么吗?在一个数组中排序数字的一个更好的方法是什么?

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

#define MAXNUM 0x7FFFFFFFFFFFFFFF

double GetSmallOne(double *dBuf)
{
int i;
int dSet = 0;
double dReturn;

for (i = 1; i < 10; i++)
{
if(dBuf[dSet] > dBuf[i])
{
dSet = i;
}
}

dReturn = dBuf[dSet];
dBuf[dSet] = MAXNUM;

return dReturn;
}

void main()
{
int i;
double raw[10];
double stored[10];

memset(raw, 0, sizeof(raw));
memset(stored, 0, sizeof(stored));

printf("input 10 numbers :");
for (i= 0; i < 10; i++)
{
scanf("%lf", &raw[i]);
}
printf("\n");

for (i = 0; i < 10; i++)
{
stored[i] = GetSmallOne(raw);
}

printf("stored is :");
for (i = 0; i < 10; i++)
{
printf(" %lf", stored[i]