| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1061 人关注过本帖
标题:[求助]我的程序哪儿出错了,情指点。
只看楼主 加入收藏
tufei
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-7-5
收藏
 问题点数:0 回复次数:8 
[求助]我的程序哪儿出错了,情指点。

#include<stdio.h>

main() { int a[31]; int i,j,temp; for(i=1;i<31;i++) { a[i]=rand(); printf("%d ",a[i]); if(i%10==0) printf("\n"); } for(j=1;j<=29;j++) { for(i=1;i<=30-j;i++) if(a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp; } printf("\n"); for(i=1;i<=30;i++) /* 输出每次冒泡排序后的数组 */ { printf("%d ",a[i]); if(i%10==0) printf("\n"); } } printf("\n"); printf("The sorted number is:\n"); for(i=1;i<=30;i++) { printf("%d ",a[i]); if(i%10==0) printf("\n"); } getch(); }

要求用起泡排序法,并输出每趟起泡后数组序列,即输出排序过程和结果。我运行的时候,输出的数组序列都是一样,没有变化。请帮忙看一下,谢谢。

搜索更多相关主题的帖子: printf temp The 
2004-07-05 20:41
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
也不情愿地猜测也许是因为TC编译器和XP,2000不兼容的缘故,否则怎么会这么莫名其妙呢?不知有没有人在98下面试过

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-07-05 21:19
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
收藏
得分:0 
我网吧机器是98的 试过了 输出的结果都是一样的 正在查看原因…………

qq:69558139
2004-07-05 21:22
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
???正常啊?有什么不对的地方?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-07-05 21:32
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
输出的结果都一样啊,每次都是那么几个数字

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-07-05 21:34
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 

不会的,你加上getch()看看。

这个是改过的:

#include <stdlib.h> #include <stdio.h> #include <time.h>

main() { int a[30]; int i,j,temp ; time_t t;

srand((unsigned) time(&t)); for(i=0;i<30;i++) { a[i]=rand(); printf("%5d ",a[i]); if((i+1)%10==0)printf("\n"); } getch(); for(j=0;j<30;j++) { for(i=0;i<30-j;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<30;i++) { printf("%5d ",a[i]); if((i+1)%10==0)printf("\n"); } getch(); } printf("\n"); printf("The sorted number is:\n"); for(i=0;i<30;i++) { printf("%5d ",a[i]); if((i+1)%10==0)printf("\n"); } getch(); }


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-07-05 21:51
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
你的意思是rand()没起作用?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-07-05 21:53
幽深
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2004-7-5
收藏
得分:0 

rand()是不能产生真正的随机数字的

一般产生随机数字的方法就是用srand();

用时间做种子


如果将英文字母A到Z分别编上1—26的分数,(A=1,B=2,...Z=26)那么: 知识(knowledge)得到96分(11+14+15+23+12+5+4+7+5=96) 努力(hardwork)也只得98分(8+1+18+4+23+15+18+11=98) 态度(attitude)才是左右生命的全部(1+20+20+9+20+21+4+5=100)
2004-07-06 05:47
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
哈哈哈哈哈,真好笑,我知道怎么回事了,你每次输出后都放一个getch()这样就会发现原来是rand()的数不够随机造成只排了几次序就已经排好了,CMD的卷动速度又快,所以没看见前面几次排序过程,而后面的都是已经排好了的,所以看上去都是一样的

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-07-11 07:31
快速回复:[求助]我的程序哪儿出错了,情指点。
数据加载中...
 
   



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

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