| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3281 人关注过本帖
标题:进入死循环的一个程序
取消只看楼主 加入收藏
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
结帖率:85.29%
收藏
已结贴  问题点数:5 回复次数:2 
进入死循环的一个程序
题目要求是:对字符数组中的字母按由大到小的字母顺序进行排列:
#include <stdio.h>
#include <stdlib.h>

#define NUM 26

void arrout1(char a[],int n)
{int i;
 for (i=0;i<n;i++)
 {a[i]=getchar();
 printf("%2c",a[i]);}
 putchar('\n');}
 
void arrout2(char a[],int n)
{int i;
 for (i=0;i<n;i++)
 printf("%2c",a[i]);
 putchar('\n');}
 
void arrsort(char *a,int n)
{int i,j,p,t;
 for(j=0;j<n-1;j++)
 {p=j;
  for(i=j+1;i<n;i++)
    if(a[p]<a[i])p=i;
  if(p!=j)
   {t=a[j];a[j]=a[p];a[p]=t;}
 }
}

main()
{char a[NUM];
 printf("output the characters:\n");
 arrout1(a,NUM);
 arrsort(a,NUM);
 printf("output the characters after sorted:\n");
 arrout2(a,NUM);
 system("PAUSE");   
  return 0;
}
可是程序走到arrsort函数那儿不走了,貌似是进入了死循环,可是我自己看不出来。。。
搜索更多相关主题的帖子: cha 
2011-07-31 09:41
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 2楼 laoyang103
用你的程序做了以后是有结果输出了,可是我原来的程序错在哪儿了呢?
for (i=0;i<n;i++)
 {a[i]=getchar();
 printf("%2c",a[i]);}
用这样的方式去得到字符串的输入虽然笨了一点,可是它错在哪儿了呢?
麻烦帮我指点一下。谢谢!
2011-07-31 10:54
wxz11191975
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2011-6-20
收藏
得分:0 
回复 5楼 TonyDeng
是哦,我知道了,是因为我没有输满26个字符,所以程序不走了。谢谢!
所以,我那个获得字符的方式是没错的,但不要给字符数加上限,用 gets()去做,输入多少就排多少。是不是这样是对的?

还有,二楼的程序运行过程中,最后的排序打印中总会出现几个没输入过的字符,那是什么原因的?
2011-07-31 11:45
快速回复:进入死循环的一个程序
数据加载中...
 
   



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

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