| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 445 人关注过本帖
标题:一个数组的问题
只看楼主 加入收藏
水里无氧气
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2005-3-26
收藏
 问题点数:0 回复次数:1 
一个数组的问题

一个有序数组中按规则插入一数. #define N 20 main() { int str[N]={1,3,5,8,9,10,15}; int s,j,k; scanf("%d",&s); for(j=0;j<N;j++) { if(str[j]>s) { for(k=N-1;k>=j;k--)

{ str[k+1]=str[k]; str[j]=s; } } } for(j=0;j<N;j++) { printf("%3d",str[N]); } printf("\n"); getch(); } 怎么结果就是不对啊

2005-06-10 14:59
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 

按什么规律??从小到大??? 如果是的话,你的循环有问题,如果输入一个比上面存在的数还要大,那你放哪里? 顺便说两句,使用数组是要注意下标是从0开始,多看看基础知识先,。。。汗! 修改以后: #include<stdio.h> #include<conio.h> #define N 20

void main() { int str[N]={1,3,5,8,9,10,15}; /*这里从s[7]开始后面的s[]都是0,这点明白吧?*/ int s,j,k;

scanf("%d",&s); for(j=0;j<N;j++) { if(s<str[j]&&j<7)/*在存在的数中寻找*/ { for(k=N-2;k>=j;k--)/*这里你的为N-1,会造成str[k+1]下标过界,应该改为N-2*/ { str[k+1]=str[k]; } str[j]=s;/*这句你的放错地方了,不应该放for里面,虽然问题不大*/ break;/*做完了也就不必要再循环了,跳出*/ } else if(j>=7) /*都没有找到,表明你输入的数最大,那就放在后面得了*/ { str[j]=s; break;/*做完了,跳出,这句跟上面那句不同,一定要,否则后面所有的s[]都是s了*/ } } for(j=0;j<N;j++) { /* if(str[j]!=0)*/ /*这句加上以后就不会输出后面的0了*/ printf("%3d",str[j]);/*这里要为s[j],不是s[N],后面还会输出一些0,注意加上上面那句就可以解决*/ } printf("\n"); getch(); }


我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-06-10 23:48
快速回复:一个数组的问题
数据加载中...
 
   



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

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