标题:小人不才,实在想不出了.
只看楼主
雪不归
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-4-29
 问题点数:0 回复次数:20 
小人不才,实在想不出了.

我开始学C不久,还只学到指针,刚开始学习上机!

最近为一个很简单的问题难住了,郁闷的要死~~

事情是这样的~~~~

程序目的:

使用冒泡法进行排序,一个数组,上限100,用户自己输入需要排序的个数!可循环使用!

程序写好之后,用TURBOC 2.0编译

没有错误没有警告,但运行结果完全不同!

以下是源码:

#include "stdio.h"
main()
{
int i,n,temp;
int a[100];
char d;
printf("确定使用吗?\n");
scanf("%c",&d);
while((d=='y')||(d=='Y')) /*判断是否使用*/
{
printf("输入需要排序的个数:\n");
scanf("%d",&n);
while(n>100)  /*判断是否越界*/
{
printf("数量太大,请重新输入:\n");
scanf("%d",&n);
}
printf("输入需要排序的数:\n");
for(i=0;i<n;i++)
scanf("%d",a[i]);
for(i=0;i<n;i++)  /*判断排序的次数*/
for(i=n-1;i>=0;i--)  /*进行排序,每次将一个最小的数上移*/
{
if(a[i]<a[i-1])
{
temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
}
}
printf("结果:\n");
for(i=0;i<n;i++)  /*数据的输出*/
{
printf("%d\t",a[i]);
if((i!=0)&&(i%5==0)) /*每行输出5个*/
printf("\n");
}
printf("\n\n\n"); /*空三行,目的使程序清楚些*/
getch();   /*等待用户确认*/
printf("还需要使用吗?");
scanf("%c",&d);
}
}

上面程序中的中文在我编译时全部是英文的,没有中文字符,注释也没有!

编译好之后使用时,运行到输出结果时出错,图面显示:

结果:

然后按任意键他就退出了,没有显示结果数据,也没有循环使用的效果~~~根本没有运行最后一段!

请问大家知道吗?好急~~~

我怎么看也看不出程序有什么错,问老师,结果~~~

他说:"我觉得没错啊!"

汗~~~~~~

搜索更多相关主题的帖子: 小人 int temp main 
2006-04-29 22:29
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE 100

int main(void)
{
int ia , ib, ic, id, ie, in, iarra[SIZE];

srand(time(NULL));

scanf("%d", &in);
for (ia = 0; ia < in; ia++)
{
iarra[ia] = rand() % 100;
}
for (ic = 1; ic < in; ic++)
{
for (id = 0; id < in - 1; id++)
{
if (iarra[id] > iarra[id + 1])
{
int itemp;

itemp = iarra[id];
iarra[id] = iarra[id + 1];
iarra[id + 1] = itemp;
}
}
}

for (ie = 0; ie < in; ie++)
{
printf("%d ", iarra[ie]);
}
printf("\n");

getch();
return 0;
}



日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 22:44
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
for(i=0;i<n;i++) 

改:for (i = 1; i < n; i++)

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 22:51
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
最后一句你们老师该下岗了,联这种问题都找不出来还教什么学生啊!

楼主转学吧,你们老师在误人子弟啊!

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-29 22:55
andyss
Rank: 1
等 级:新手上路
帖 子:189
专家分:0
注 册:2006-4-8
得分:0 

只要认真看一下,仔细的找一下错误就可以拉!
我发现很多人都是犯一些很低级的错误,楼主你们老师没提到过吗?比如上面的问题,还有注意每一句后面加封号,大括号,还有表达式里各种数据类型混合运算要注意.


幽幽黄桷兰----建四狼
2006-04-29 23:03
雪不归
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-4-29
得分:0 
楼上的兄弟(可以这样称呼吗?)

  我是个新手,有很多东西都还不懂还在学习中,所以有些比较冒昧的问题还请原谅.只是这个程序我看了很多遍了,实在是找不出来,三楼的兄弟,我不知道你所说的那个把for语句中的0改成1,不知道是哪个for语句中的,还有,我觉得在for语句中应该没错吧,数组下限下标不是0吗?

还望你再指点一下,谢谢~~~
2006-04-30 12:30
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
得分:0 
for(i=0;i<n;i++)  /*判断排序的次数*/
for(i=n-1;i>=0;i--)  /*进行排序,每次将一个最小的数上移*/

这里,明显的错误,i已经被你XX了两次....

淘宝杜琨
2006-04-30 12:35
雪不归
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-4-29
得分:0 
楼上的

太谢谢了,知道一点了,一个i中的数据出错,只是我现在将


for(i=n-1;i>=0;i--)  /*进行排序,每次将一个最小的数上移*/
{
if(a[i]<a[i-1])
{
temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
}
}

中的i全部改成K,一个新的变量,定义过了,但他的结果还是有些错误,会输出,格式也对,但输出的全是0,这又是为何啊?
真的很感谢
2006-04-30 12:45
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
你那个程序你就别研究了,看看我写的哪个就可以了,你哪个错误太多,一时间就是把错误都写出来,你也消化不了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-30 12:59
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 
for(i=0;i<n;i++)  /*判断排序的次数*/


这句:for (i = 1; i < n; i++)


n个数比较n-1次就可以了,你多了


我晕,斑竹把我贴删了,我都不知道是那句了

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-04-30 13:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-61210-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.629057 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved