花花公子与小赖虫 - 2007-6-9 15:16:00
这个便题是谭浩强的C第一章的课后习题,学完了第一章,想拿来练练手.
但是想不出算法来,所以想请大家给个思路,或者用什么方法比较好做就行...
风的唏嘘 - 2007-6-10 9:33:00
【回复“花花公子与小赖虫”的帖子】方法有很多,常用的有两两比较,冒泡法,选择法
花花公子与小赖虫 - 2007-6-10 10:21:00
风的唏嘘 谢谢你了,
不过我还是有点疑问..
两两比较的时候是用if...else吧,相邻的两数互相比较就可以算出来了吗?
冒泡法和选择法我并不懂,你能否再帮我解释一下,或者举个例了说明一下..
风的唏嘘 - 2007-6-10 11:04:00
【回复“花花公子与小赖虫”的帖子】冒泡法,选择法得利用数组再加上循环比较就可以了
过客2007 - 2007-6-11 23:12:00
main()
{
int a,b,c,d,e,s;
printf("shu lu wu ge zi fu");
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
if(a>b)
s=b;
if(a>c)
s=c;
if(a>d)
s=d;
if(a>e)
s=e;
printf("%d",s);
}
改进

main()
{
int a,b,c,d,e,s;
printf("shu lu wu ge zi fu\n");
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
s=a;
if(s>b)
s=b;
if(s>c)
s=c;
if(s>d)
s=d;
if(s>e)
s=e;
printf("%d",s);
}
过客2007 - 2007-6-11 23:14:00
说句心里话,上面偶是乱编的,不过,好像还是对的哦~`
呵呵,
我也再谢谢风的唏嘘了
风的唏嘘 - 2007-6-12 9:39:00
【回复“过客2007”的帖子】你的程序确实可以得到一个最小值,但是这样一来其他几个原有数据会被破坏掉,一般不建议这样做,而应该设一个临时变量用来进行数据交换,如果仅仅为了得到一个最小值而不考虑其他的话这样也行
过客2007 - 2007-6-12 10:50:00
说句心里话,我打从昨天晚上就已经开始使用第七章的数组了。
数组我差不多学习了一个礼拜了,还是没看完。
所以就:
main()
{
int i,j,s,a[5];
printf("shu lu wu ge zi fu\n");
for(i=0;i<=5;i++)
scanf("%d",&a);
for(j=0;j<=5;j++)/*本想是循环下标,然后再一个一个地比较,现在突然没有灵感了。。。*/
{
s=a[j];
}
}
不试不知道,原来我连这个也不会了。。。。。。。。
花花公子与小赖虫 - 2007-6-12 14:36:00
| 引用: |
【过客2007的贴子】main() { int a,b,c,d,e,s; printf("shu lu wu ge zi fu"); scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); if(a>b) s=b; if(a>c) s=c; if(a>d) s=d; if(a>e) s=e; printf("%d",s);
}
改进
main() { int a,b,c,d,e,s; printf("shu lu wu ge zi fu\n"); scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); s=a; if(s>b) s=b; if(s>c) s=c; if(s>d) s=d; if(s>e) s=e; printf("%d",s);
} ……………… |
谢谢了,我刚才编译过,是正确的,但我不明白,为什么要让S先等于A,是什么意思啊..
花花公子与小赖虫 - 2007-6-12 14:38:00
| 引用: |
【风的唏嘘的贴子】【回复“过客2007”的帖子】你的程序确实可以得到一个最小值,但是这样一来其他几个原有数据会被破坏掉,一般不建议这样做,而应该设一个临时变量用来进行数据交换,如果仅仅为了得到一个最小值而不考虑其他的话这样也行 ……………… |
想问一下,临时变量怎么用呢?能举个例子说明一下吗???谢谢了
花花公子与小赖虫 - 2007-6-12 18:18:00
过各客2007..刚才仿照你写的程序,我又改编了一下.程序是这样的.
#include "stdio.h"
main()
{
int a,b,c,d,e,s;
printf("please input 5 numbers:\n");
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
if(s>a)
s=a;
if(s>b)
s=b;
if(s>c)
s=c;
if(s>d)
s=d;
if(s>e)
s=e;
printf("%d\n",s);
}
直接用S去比较5个数的大小,然后再输入出最小的数..
过客2007 - 2007-6-12 21:42:00
厉害...
Binbien - 2007-6-13 22:45:00
还是用数组表示比较好
风的唏嘘 - 2007-6-14 8:22:00
| 引用: |
【花花公子与小赖虫的贴子】过各客2007..刚才仿照你写的程序,我又改编了一下.程序是这样的. #include "stdio.h" main() { int a,b,c,d,e,s; printf("please input 5 numbers:\n"); scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); if(s>a) s=a; if(s>b) s=b; if(s>c) s=c; if(s>d) s=d; if(s>e) s=e; printf("%d\n",s); } 直接用S去比较5个数的大小,然后再输入出最小的数.. ……………… |
这样比较肯定是错的,虽然定义了变量S,但是并未给它赋值,因此它的值是不确定的,结果当然是错的,所以得先让它有个值,比如说s=a,临时变量自己用了还不知道啊,S就是属于临时变量啊,也可以用其他形式,比如说if(a>b){s=a;a=b;b=s}
编程小学生 - 2007-6-20 20:10:00
这只是比较5个数!要是比较100个数的话,那还不定义100个变量?
还是用循环好一点!设一个最小值变量min,和一个循环变量i,再设一个下标为5的数组(范围0—4),开始时把数组存入5个数,然后把第一个数组值给min,之后再用一次循环,这个循环里要用到变量i(变换数组下标用),在循环里再加个if语句,如果下标为i的数组值比min小,就把下标为i的数组值给min,循环结束后直接输出min值即可!用数组的好处就是,如果是100个数进行比较的话,这样就节省了打100个变量的时间!
© 2000 - 2026 Rising Corp. Ltd.