在线等待,求大家帮我解决一个小问题,感激不尽。

cccloveyf 2003-06-24 08:25:36
要解决的问题:输入4个不同长度的数,然后按照长度从小到大排列输出。(用C语言解答)

我做的源代码如下:
#include <stdio.h>
#include <string.h>
void sorting(char _str[4][11]);
void main(void)
{ char str[4][11];char temp[11];int i=0;
printf("\nPlease input four strings! \n\n");
for(;i<4;i++)
{printf("[%d] strings(1~10):",(i+1));
gets(temp);
strcpy(str[i],temp);
printf("\n");
}
sorting(str);
}
void sorting(char _str[4][11])
{ char string[4][11];int j=0,k=0,flag=1;char min[11];
for(;j<4;j++)
{strcpy(string[j],_str[j]);}

for(j=1;j<4&&flag==1;j++)
{flag=0;
for(k=0;k<4-j;k++)
{if(strlen(string[k])>strlen(string[k+1]))
{flag=1;
strcpy(min,string[k]);
strcpy(string[k],string[k+1]);
strcpy(string[k+1],min);
}
}
}
printf("The strings (min to max) are:\n");
for(j=0;j<4;j++)
printf("%s\n",string[j]);
}

现在我这个程序少验证所输入的字符串长度相等的情况。我想麻烦大家帮我补充一下,用strlen();这个函数,判断所输入的4个字符串长度是否有相等的,如果有,就输出error!
然后exit(0);谢谢大家帮忙。:)
...全文
25 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cccloveyf 2003-06-24
  • 打赏
  • 举报
回复
哦,谢谢stukov2002(卡拉是头猪),才看到你的回帖,刚才没刷新,现在好使了。:)

结贴
cccloveyf 2003-06-24
  • 打赏
  • 举报
回复
我只是想加个判断,如果输入的4个字符串长度有相等的,就输出error!,然后直接跳出程序,不执行后面的排序了。但是现在加入exit(o);函数,编译时输出warning C4013: 'exit' undefined; assuming extern returning int的warning(s),但是能够构建exe,而且运行也好使,但是我想知道这个warning(s)是什么意思。去掉了,exit(0);就都好使了,SORTING.OBJ - 0 error(s), 0 warning(s),但是还是把后面的排序结果给输出来了,那不是我的原意啊。谢谢各位,再帮我看看什么地方有问题。
idontlikenickname 2003-06-24
  • 打赏
  • 举报
回复


哦,忘了~^^
加入
#include <stdlib.h>
可以去掉warning~

boyfling 2003-06-24
  • 打赏
  • 举报
回复
你要执行什么函数呢
cccloveyf 2003-06-24
  • 打赏
  • 举报
回复
warning C4013: 'exit' undefined; assuming extern returning int

我把exit(0);去掉了,就好使了,但是还要执行后面的调用函数,而不是推出程序。郁闷。这个warning是什么意思?
njuhuangmy 2003-06-24
  • 打赏
  • 举报
回复
把 warning 贴出来啊
cccloveyf 2003-06-24
  • 打赏
  • 举报
回复
谢谢啊,不过好像有一行应该这样吧?if(strlen(str[n])==strlen(str[m]))但是编译时有一个warning(s),不知道为什么,但是不影响运行。到底是什么地方出问题了?
njuhuangmy 2003-06-24
  • 打赏
  • 举报
回复
搞不懂啊

为何 要对 字符串 进行 排序 呢 ??

按照 他们 的 长度 控制 输出 不就 好了 ??

int a[4];
a[0] 保存最长的那个是 str[j][11];
a[1] 保存次长的那个是 str[j][11];

然后 ,控制输出, 比 来一次 排序 简单 多了
idontlikenickname 2003-06-24
  • 打赏
  • 举报
回复


那你比我快啦~~我还早着哪:)

pzytony 2003-06-24
  • 打赏
  • 举报
回复

stukov2002(卡拉是头猪) :你什么时候升5裤衩呀!

我还有79分就升了

idontlikenickname 2003-06-24
  • 打赏
  • 举报
回复


if(strlen(str[n]) == strlen(str[m]))

idontlikenickname 2003-06-24
  • 打赏
  • 举报
回复


void main(void)
{ char str[4][11];char temp[11];int i=0;
int m, n;

printf("\nPlease input four strings! \n\n");
for(;i<4;i++)
{printf("[%d] strings(1~10):",(i+1));
gets(temp);
strcpy(str[i],temp);
printf("\n");
}
for(n = 0; n < 3; n ++)
{
for(m = n + 1; m < 4; m ++)
{
if(strlen(str[n] == strlen[m])
{
printf("error!\n");
exit(0);
}
}
}
sorting(str);
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧