| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 331 人关注过本帖
标题:新手问个编程问题
只看楼主 加入收藏
xuyao18
Rank: 2
等 级:论坛游民
帖 子:50
专家分:30
注 册:2009-4-27
结帖率:22.22%
收藏
已结贴  问题点数:20 回复次数:2 
新手问个编程问题
题目要求是这样的把题目中的那些字符串按照一定的顺序(运用SORT函数)排列,然后用OUTPUT输出
下面是 我写的程序.   VC显示没有错误  但是无法显示出要求的字符串.
#include <stdio.h>
#include <string.h>
#define N 100
void sort(char *language[])
{
 int i,j;
 char *temp;
    for (j=0;j<N;j++)
 {
 for (i=j+1;i<N;i++)
    if(strcmp(language[i],language[i]+1)<0)
 {
 temp=language[i];
 language[i]=language[j];
 language[j]=temp;
 }
 }
}
void output(char *language[])
{
 int i;
 for(i=0;i<N;i++)
 {
  puts(language[i]);
 }
}
 void main ()
{
 char *str[6]={"PASCAL","BASIC","C/C++","Fortan","Turbo"};
 sort(str);
 output(str);
}
2009-09-11 12:32
moondark
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:45
专家分:158
注 册:2009-9-6
收藏
得分:10 
你循环的那个限制N导致程序出错。。。
因为只有你赋值的那几个字符串有内容,而其它的language[i](i>6时),language[i]='\0',导致对空字符串的操作产生错误...
可以将i<N,换成language[i]!='\0',j<N,换成language[j]!='\0',这个程序就好了
2009-09-11 12:54
knight123
Rank: 2
等 级:论坛游民
帖 子:4
专家分:11
注 册:2009-9-13
收藏
得分:10 
#include <stdio.h>
#include <string.h>
#define N 100
void sort(char *language[])
{
int i,j;
char *temp;
    for (j=0;(j<N)&&(language[j]!=0);j++)
{
for (i=j+1;(i<N)&&(language[i]!=0);i++)
    if(strcmp(language[j],language[i])<0)
{
temp=language[i];
language[i]=language[j];
language[j]=temp;
}
}
}
void output(char *language[])
{
int i;
for(i=0;(i<N)&&(language[i]!=0);i++)
{
  puts(language[i]);
}
}
void main ()
{
char *str[6]={"PASCAL","BASIC","C/C++","Fortan","Turbo"};
sort(str);
output(str);
}  
 
应该这样
2009-09-14 00:08
快速回复:新手问个编程问题
数据加载中...
 
   



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

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