菜鸟发问
入4个数字,然后从小到大输出,不用数组的算法如下:
mian ()
{
float a,b,c,d,t;
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
if (a>b)
{t=a;a=b;b=t;}
if (a>c)
{t=a;a=c;c=t;}
if (a>d)
{t=a;a=d;d=t;}
if (b>c)
{t=b;b=c;c=t;}
if (b>d)
{t=b;b=d;d=t;}
if (c>d)
{t=c;c=d;d=t;}
printf("%5.2f,%5.2f,%5.2f,%5.2f",a,b,c,d);
}
仔细看了一下,程序本身没问题
可在调试过程中(软件:TURBOC2,文件名为333.c)CTRL+F9后显示错误,信息如下
Linking
EXE file: program/ 333.exe
Linking: Lib/CS.LIB
Total link
lines compiled: 18 pass 2
warnings: 0 0
Errors: 1 1
我的问题:是TC有问题吗?如果是,请问如何解决?对于新手学习C及编程,应该用哪些方便快捷的调试软件?
诚盼高手解答
问题点数:100、回复次数:17Top
1 楼smartdrvsky(子夜书香)回复于 2006-03-09 18:37:08 得分 0
顺便问一下,用数组应该如何实现呢?(求思路)Top
2 楼wang921718(从aquatic到computer)回复于 2006-03-09 18:57:57 得分 0
#include "stdafx.h"
#include <stdio.h>//要有这个头文件
void main()//看看这里的MAIN
{
}Top
3 楼smartdrvsky(子夜书香)回复于 2006-03-09 19:00:03 得分 0
汗,我又看了一下,是主函数写错了
main()而不是mianTop
4 楼shu_yoyo(因为帅,被中国人民最高法院和国际远东法庭判处死刑,缓期三年执行)回复于 2006-03-09 19:00:41 得分 0
要包括头文件#include <stdio.h>Top
5 楼Phable(FingerDancer)回复于 2006-03-09 19:05:59 得分 0
>>顺便问一下,用数组应该如何实现呢?(求思路)
定义一个长度为4的数组
数组的每个元素存一个数,对此数组排序!
最后用循环输出数组即可~~Top
6 楼shu_yoyo(因为帅,被中国人民最高法院和国际远东法庭判处死刑,缓期三年执行)回复于 2006-03-09 19:08:58 得分 100
用冒泡排序法:
#include <stdio.h>
main( )
{
float a[4],t;
for(int i=0;i<4;i++)
scanf("%f",&a[i]);
for(i=0;i<4;i++)
for(int j=i;j<4;j++)
{
if(a[j]>a[j+1])
{
t = a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
Top
7 楼cunsh(村少)回复于 2006-03-09 19:18:11 得分 0
常用的排序算法很多啊.
看看<<数据结构>>.Top
8 楼cunsh(村少)回复于 2006-03-09 19:20:20 得分 0
你看看数据结构中讲的各种排序的思路.再看它的最后实现用的代码.Top
9 楼lishijin8096()回复于 2006-03-09 19:23:03 得分 0
mian ()该为main()Top
10 楼smartdrvsky(子夜书香)回复于 2006-03-09 19:24:41 得分 0
谢谢楼上热情解答,数据结构我正在学,到目前为止只学了向量栈队列的建立修改一些基本操作,顺便再问一下,我现在大二,学校现在才开这些课迟了么?
Top
11 楼smartdrvsky(子夜书香)回复于 2006-03-09 19:51:03 得分 0
TO:shu_yoyo(灌水是第一生产力)
为什么要用两个 for(int i=0;i<4;i++)
而且最后没有printf语句?
对不起哦,初学,疑问多多,请谅解。Top
12 楼wumingchenchao(一缕阳光)回复于 2006-03-09 20:32:17 得分 0
for(i=0;i<N-1;i++)
for(j=0;j<N-i-1;j++)
if(a[j]>a[j+1])
{ t=a[j];
a[j]=a[j+i];
a[j+1]=t;
}
Top
13 楼ugg(逸学堂(exuetang.net))回复于 2006-03-09 20:47:23 得分 0
为什么要用两个 for(int i=0;i<4;i++)
而且最后没有printf语句?
对不起哦,初学,疑问多多,请谅解。
~~~~~~~~~~~~·
冒泡排序,当然要两个for,lz基础太差了,再看看书吧,
书上讲的很仔细(冒泡排序)Top
14 楼ichend(心雅)回复于 2006-03-10 09:57:29 得分 0
为什么要用两个 for(int i=0;i<4;i++)
而且最后没有printf语句?
对不起哦,初学,疑问多多,请谅解。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
其实思路还是一样的
冒泡思想:将第一个数和后每一个数比较,将最小的放在第一位,以次类推!
数组只是将四个数装入一个一维数组里了
通过循环两两比较,互换值,最终达到从小到大存放 输出
另最好还是需要printf语句输出结果的 但又需要一个for()语句了:)
for(i=0;i<4;i++)
printf("%f",a[i]);Top
15 楼qlwind(大风)回复于 2006-03-10 10:57:41 得分 0
scanf("%f%f%f%f"),不能有","
Top
16 楼shu_yoyo(因为帅,被中国人民最高法院和国际远东法庭判处死刑,缓期三年执行)回复于 2006-03-10 12:45:00 得分 0
你学了冒泡排序就明白了为什么用两个for了。
另外漏写了printf了,sorryTop
17 楼smartdrvsky(子夜书香)回复于 2006-03-10 22:31:57 得分 0
谢谢灌水是第一生产力,我们现在用的《数据结构》是八三年用PASCAL编的……
我正在学习,准备换本严蔚敏的。Top




