C语言程序-用数组实现数字之间比较大小

想问问大家,我写的这段代码是实现 输入10个数按递减输出。
下面是我写的代码:
#include <stdio.h>
main()
{
int a[10],i,j,k;
printf("\nPlease Ten Number:"); /*提示输入10个数*/
printf("\n");
for (i=0;i<10;i++) /*用户输入10个数*/
scanf("%d",&a[i]);
for (i=0;i<10;i++) /*外层循环0~9*/
{
for (j=i+1;j<10;j++) /*内层循环j~10,j依次加1*/
if (a[i]<a[j])
k=a[i],a[i]=a[j],a[j]=k;
}
for (i=0;i<10;i++)
{
printf("No.%d=%d\n",i+1,a[i]);
}
getch();
}

我测试了几次没有出现问题,输入的10个数,能正确的从大到小输出。

下面的是我看一本书上写的代码:
void main()
{
int i,k,x,min,min_k,a[10];
printf("\nPlease Ten Number:");
printf("\n");
for (i=0;i<10;i++)
scanf("%d",&a[i]);
for (k=0;k<9;k++)
{ min=a[k];
min_k=k;
for (i=k+1;i<10;i++)
if (a[i]>min)
{
min=a[i];
min_k=i;
}
x=a[min_k];
a[min_k]=a[k];
a[k]=x;
}
for (i=0;i<10;i++)
printf("%d\n",a[i]);
getch();
}
我写的代码我看主要是没有min,min_k,这两个变量!

但是结果都是正确的,想问问C语言的朋友,不知我写的代码是否有编程上的不合理?

我是一个C语言初级学习者,比较喜欢按自己的思路、方式去写一些程序,这样按自己理解应该会记得更牢固,但我就怕犯下一些自己都不知道的错误,而且一直不知道。

所以想问问熟悉C语言的朋友们,我写的和书中写的,最大区别是什么呢?是效率还是别的问题?还是两者都一样呢?

感谢你的关注或回答的帮助,谢谢!

你的代码很简单、明了,对于解决这个问题也非常合适。

书也是人写出来的,也会有瑕疵,

代码写多了以后,经常会形成一些习惯的语句写法,这是养成良好的编程习惯的必经之处,我猜想该作者就是习惯所致,要知道,在复杂数据结构中对数据进行变动的时候,作个标记是很必要的……
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-26
很OK,多按点自己的思路还写,不然以后自己都不会写,当你写出来了,再参考别人的,看看你有什么不足,这样就行了
第2个回答  2009-11-27
都对的,只不过他那种是用数组表达写的
min_k是min的下标而已
第3个回答  2009-11-27
呵呵,书上写的也有自己的道理,min,min_k这两个变量看上去更直观点,你的思路也没有错,有自己的一套方法也是不错的!我也很少看书,但也可以将程序写出来!
相似回答