| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3825 人关注过本帖
标题:应用指针指向二维字符数组或使用数组名(常量指针),实现对输入的5个字符串按 ...
只看楼主 加入收藏
ch12345
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-3-27
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:5 
应用指针指向二维字符数组或使用数组名(常量指针),实现对输入的5个字符串按ASCII码值排序
#include<stdio.h>
void sortstring(char(*p)[20],int n)
int main()
{
    char str[5][20];
    int i;
    for(i=0;i<5;i++)
        gets(str[i]);
    sortstring(str,5);
    printf("after sort:\n");
    for(i=0;i<5;i++)
        puts(str[i]);

}
void sortstring(char(*p)[20],int n)
{
    int i,j;
    char t[20];
    for(j=0;j<n-1;j++)
    for(i=0;i<n-1;i++)
     if(strcmp(p[i],p[i+1]>0))
         strcpy(t,p[i]);
         strcpy(p[i],p[i+1]);
         strcpy(p[i+1],t);
}


这个程序哪里有错了,得怎么改呢?谢谢
搜索更多相关主题的帖子: void include 字符串 
2013-05-19 16:18
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
收藏
得分:2 
#include<stdio.h>
#include<string.h>//用到关于字符串的函数strcmp必须包含这个头文件
void sortstring(char(*p)[20],int n);
int main()
{
    char str[5][20];
    int i;
    for(i=0;i<5;i++)
        gets(str[i]);
    sortstring(str,5);
    printf("after sort:\n");
    for(i=0;i<5;i++)
        puts(str[i]);
return 0;
}
void sortstring(char(*p)[20],int n)
{
    int i,j;
    char t[20];
    for(j=0;j<n-1;j++)//注意大括号
    {      
        for(i=0;i<n-1;i++)
             if(strcmp(p[i],p[i+1])>0)
             {
                 strcpy(t,p[i]);
                 strcpy(p[i],p[i+1]);
                 strcpy(p[i+1],t);
             }
     }
}
2013-05-19 17:15
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:2 
问题已改正:
#include<stdio.h>
#include <string.h>
 void sortstring(char(*p)[20],int n);
 int main()
 {
     char str[5][20];
     int i;
     for(i=0;i<5;i++)
         gets(str[i]);
     sortstring(str,5);
     printf("after sort:\n");
     for(i=0;i<5;i++)
         puts(str[i]);
     return 0;

 }
 void sortstring(char(*p)[20],int n)
 {
     int i,j;
     char t[20];
     for(j=0;j<n-1;j++)
     for(i=0;i<n-1;i++)
      if(strcmp(p[i],p[i+1]))
          strcpy(t,p[i]);
          strcpy(p[i],p[i+1]);
          strcpy(p[i+1],t);
 }


Maybe
2013-05-19 19:29
scrooper
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:13
专家分:21
注 册:2012-7-10
收藏
得分:2 
程序代码:
//这里实现降序排列,如果要升序,将comp函数里的1和-1互换即可

#include<stdio.h>
#include<stdlib.h>

int comp(void const *a,void const *b)
{
    if(*(char*)a<=*(char*)b) return 1;
    else return -1;
}

int main()
{
    char str[5][20];
    int i;

    for(i=0;i<5;i++) gets(str[i]);

    qsort(str,5,sizeof(char)*20,comp);
    for(i=0;i<5;i++) printf("%s\n",str[i]);

    return 0;
}
2013-05-19 20:33
猫小喵
Rank: 2
来 自:计算机专业
等 级:论坛游民
帖 子:29
专家分:77
注 册:2013-5-12
收藏
得分:2 
#include<stdio.h>
#include <string.h>

 void sortstring(char(*p)[20],int n);
 int main()
 {
     char str[5][20];
     int i;
     for(i=0;i<5;i++)
         gets(str[i]);
     sortstring(str,5);
     printf("after sort:\n");
     for(i=0;i<5;i++)
         puts(str[i]);
 
}
 void sortstring(char(*p)[20],int n)
 {
     int i,j;
     char t[20];
     for(j=0;j<n-1;j++)
     for(i=0;i<n-1;i++)
      if(strcmp(p[i],p[i+1])>0)
      {
          strcpy(t,p[i]);
          strcpy(p[i],p[i+1]);
          strcpy(p[i+1],t);
      }
 }
 看来我不需要多说了,比较字符串大小和交换字符串的函数strcmp和strcpy的使用要加 #include <stdlib.h>。
在声明一个函数要加分号,if条件后面的循环体要加大括号,要不会默认if后面的第一个为if的循环体

做一个爱编程得女生
2013-05-20 18:39
YJ_Hao
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:215
专家分:609
注 册:2013-3-22
收藏
得分:2 
回复 3楼 邓士林
老鸟也有错的时候!
没运行过吗?
2013-05-20 19:13
快速回复:应用指针指向二维字符数组或使用数组名(常量指针),实现对输入的5个字 ...
数据加载中...
 
   



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

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