A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

想了半天,能让其长度进行排序,没法让其按长度排序输出,看看大家代码怎么写的。代码还是写的少啊

10 个回复

正序浏览
从今以后 发表于 2014-12-29 12:46
功能实现了就行呗 题目有要求吗

没有特殊要求,我这是看网上的他们的面试题,我拿来做做练练手
回复 使用道具 举报
好高深  还没学到
回复 使用道具 举报
邓明 中级黑马 2014-12-29 14:02:14
9#
chasedream 发表于 2014-12-29 12:23
我之前就是这思路,但是没做通,你能把代码贴出来看看嘛

我这是最常规的思路,代码写起来会显得比较啰嗦
我看了一下三楼所提示用的strcmp函数,这个确实会比较简单一些
用字符串数组进行简单的冒泡法排序就行了
你可以再试一下
回复 使用道具 举报
chasedream 发表于 2014-12-29 12:21
你这是用的指针操作啊。。

功能实现了就行呗 题目有要求吗{:3_60:}
回复 使用道具 举报
邓明 发表于 2014-12-29 11:46
可以新建一个整数数组,存放字符串长度
复制一个数组然后排序,根据排序结果和原数组进行比较,再输出字符 ...

我之前就是这思路,但是没做通,你能把代码贴出来看看嘛
回复 使用道具 举报

你这是用的指针操作啊。。
回复 使用道具 举报
从今以后 发表于 2014-12-29 12:03
想复杂了,这道题用strcmp函数比较字符串就好了。

这样可以吗
  1. int myStrcmp(char *s1, char *s2) {
  2.    
  3.     int result = (int)(strlen(s1) - strlen(s2));
  4.    
  5.     if (!result)
  6.         result = strcmp(s1, s2);
  7.    
  8.     return result;
  9. }
复制代码
回复 使用道具 举报
  1. #include<stdio.h>
  2. #include<string.h>

  3. int main()
  4. {
  5.         char str[6][80];
  6.         char temp[80];
  7.         int i,j;
  8.         printf("Please input 6 strings:\n");
  9.         for (i=0;i<6;i++)
  10.         {
  11.                 gets(str[i]);
  12.         }
  13.         for (i=0;i<6;i++)
  14.         {
  15.                 for (j=i+1;j<6;j++)
  16.                 {
  17.                         if (strlen(str[i])>=strlen(str[j]))
  18.                         {
  19.                                 strcpy(temp,str[i]);
  20.                                 strcpy(str[i],str[j]);
  21.                                 strcpy(str[j],temp);
  22.                         }
  23.                 }
  24.         }
  25.         printf("The strings:\n");
  26.         for (i=0;i<6;i++)
  27.         {
  28.                 puts(str[i]);
  29.         }
  30.         return 0;
  31. }
复制代码
已解决,贴代码
回复 使用道具 举报
想复杂了,这道题用strcmp函数比较字符串就好了。
回复 使用道具 举报
可以新建一个整数数组,存放字符串长度
复制一个数组然后排序,根据排序结果和原数组进行比较,再输出字符串
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马