
各位达人帮帮忙!!!急!!!一段C语言的题目!!!答案要能够运行的!!!最好有注解!!!
要能够运行的答案!!!注意题目要求!!!不要太难的方法!!!最好能给解释!!!100分!!!先到先得!!!答的好有加分!!!最晚时间明天中午之前啊!!!---------...
要能够运行的答案!!!注意题目要求!!!不要太难的方法!!!最好能给解释!!!
100分!!!先到先得!!!答的好有加分!!!
最晚时间明天中午之前啊!!!
-------------------------------------------------------
a 编写一个程序,输入10个双精度型数字到一个名为raw的数组中。在10个有用户输入的数字被输入到数组后,你的程序应该循环经历raw数组10次。在每次通过这个数组期间,你的程序一概选择raw数组中的最小数值,并把这个被选择的数值放在位于一个名为stored的数组中的下一个变量中。因此,当你的程序完成时,stored数组应该包含raw数组中按照从小到大排列顺序的数值。(确保在每次经历一个很高的数字期间重新设置被选取的最小数值,以使它不再被选择。你将需要在第一个for循环内的另一个for循环,以便确定每次经历的最小数值)
b 在a中排序一个数组中的数值的方法是非常低效率的。你能够确定为什么吗?在一个数组中排序数字的一个更好的方法是什么? 展开
100分!!!先到先得!!!答的好有加分!!!
最晚时间明天中午之前啊!!!
-------------------------------------------------------
a 编写一个程序,输入10个双精度型数字到一个名为raw的数组中。在10个有用户输入的数字被输入到数组后,你的程序应该循环经历raw数组10次。在每次通过这个数组期间,你的程序一概选择raw数组中的最小数值,并把这个被选择的数值放在位于一个名为stored的数组中的下一个变量中。因此,当你的程序完成时,stored数组应该包含raw数组中按照从小到大排列顺序的数值。(确保在每次经历一个很高的数字期间重新设置被选取的最小数值,以使它不再被选择。你将需要在第一个for循环内的另一个for循环,以便确定每次经历的最小数值)
b 在a中排序一个数组中的数值的方法是非常低效率的。你能够确定为什么吗?在一个数组中排序数字的一个更好的方法是什么? 展开
展开全部
/*编写一个程序,输入10个双精度型数字到一个名为raw的数组中。
在10个有用户输入的数字被输入到数组后,你的程序应该循环经历
raw数组10次。在每次通过这个数组期间,你的程序一概选择raw数
组中的最小数值,并把这个被选择的数值放在位于一个名为stored的
数组中的下一个变量中。因此,当你的程序完成时,stored数组应该
包含raw数组中按照从小到大排列顺序的数值。(确保在每次经历一个
很高的数字期间重新设置被选取的最小数值,以使它不再被选择。你
将需要在第一个for循环内的另一个for循环,以便确定每次经历的最小数值)*/
#include"stdio.h"
main()
{
double row[10],stored[10],min;
int i,j=0,k,mini,flag=1;
printf("input array:\n");
for(i=0;i<10;i++) //输入数组元素
scanf("%lf",&row[i]);
while(flag)
{
min=row[0];
mini=0;
for(i=0;i<10-j;i++) //每次循环都从row数组中找最小的值赋给min
if(min>row[i])
{
min=row[i];
mini=i; //最小值的下标赋给mini
}
stored[j++]=min; //将min赋给数组stored
if(j==10) //如果stored数组满就让flag为0 退出while语句。
{
flag=0;
break;
}
for(k=mini;k<10-j;k++) //删除此次执行中row中的最小值,即让从他往后的值将其覆盖。
row[k]=row[k+1];
}
for(j=0;j<10;j++)
printf("%lf ",stored[j]); //输出stored数组
}
问题b:因为每次都要从数组中查找最小元素,而且还要处理此次排序的最小元素,时间复杂度较高,
最简单的解决办法就是采用冒泡排序。
在10个有用户输入的数字被输入到数组后,你的程序应该循环经历
raw数组10次。在每次通过这个数组期间,你的程序一概选择raw数
组中的最小数值,并把这个被选择的数值放在位于一个名为stored的
数组中的下一个变量中。因此,当你的程序完成时,stored数组应该
包含raw数组中按照从小到大排列顺序的数值。(确保在每次经历一个
很高的数字期间重新设置被选取的最小数值,以使它不再被选择。你
将需要在第一个for循环内的另一个for循环,以便确定每次经历的最小数值)*/
#include"stdio.h"
main()
{
double row[10],stored[10],min;
int i,j=0,k,mini,flag=1;
printf("input array:\n");
for(i=0;i<10;i++) //输入数组元素
scanf("%lf",&row[i]);
while(flag)
{
min=row[0];
mini=0;
for(i=0;i<10-j;i++) //每次循环都从row数组中找最小的值赋给min
if(min>row[i])
{
min=row[i];
mini=i; //最小值的下标赋给mini
}
stored[j++]=min; //将min赋给数组stored
if(j==10) //如果stored数组满就让flag为0 退出while语句。
{
flag=0;
break;
}
for(k=mini;k<10-j;k++) //删除此次执行中row中的最小值,即让从他往后的值将其覆盖。
row[k]=row[k+1];
}
for(j=0;j<10;j++)
printf("%lf ",stored[j]); //输出stored数组
}
问题b:因为每次都要从数组中查找最小元素,而且还要处理此次排序的最小元素,时间复杂度较高,
最简单的解决办法就是采用冒泡排序。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询