| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 340 人关注过本帖
标题:大一党,c语言初学者,问下程序哪里错了?
只看楼主 加入收藏
骑拖把的女巫
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-12-12
收藏
 问题点数:0 回复次数:2 
大一党,c语言初学者,问下程序哪里错了?
题目:编写一个书名排序程序,在主函数中输入n(n<=10)个书名存入一个二维数组,用函数void sort(char *name[],int n)实现他们的字典顺序,并用函数print(char *name[],int n)输出n个书名。
样例输入
5
Follow me
BASIC
Great Wall
FORTRAN
Computer
样例输出
BASIC
Computer
FORTRAN
Follow me
Great Wall

我写的
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void sort(char *str[],int size)
{
int i,j;
char *temp;
for(i=0;i<size-1;i++)
{
for(j=i+1;j<size;j++)
{
if(strcmp(str[i],str[j])>0)
{
temp=str[i];
str[i]=str[j];
str[j]=temp;
}
}
}
}
void print(char *str[],int size)
{
int i;
for(i=0;i<size-1;i++)
printf("%s\n",*str[i]);
}
main()
{
char *p[200],str[200][20];
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",str[i]);
p[i]=str[i];
}
sort(p,n);
print(p,n);
}
程序运行不了
搜索更多相关主题的帖子: include c语言 
2013-12-13 09:20
yong6562229
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2013-3-30
收藏
得分:0 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void sort(char *str[],int size)
{
    char temp = NULL;
    for (int i = 0; i < size; i++)
    {
        char * s1 = str[0] + 200 * i;
        char * s2 = str[0] + 200 * (i + 1);

        if(strcmp(s1,s2)>0)
        {
            while (*s1 != '\0' || *s2 != '\0')
            {
                temp=*s1;
                *s1=*s2;
                *s2=temp;
                s1++;
                s2++;
            }
        }
    }

}

void print(char *str[],int size)
{
    int i;
    for(i=0;i<size;i++)
    printf("%s\n",str[0]+200*i);
}

void main()
{
    char *p = new char[20];
    char str[20][200];
    int i,n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s",str[i]);
        
    }
    p=(char *)str;
    sort(&p,n);
    print(&p,n);
}


随便改了下  你看下
2013-12-13 13:42
yong6562229
Rank: 1
等 级:新手上路
帖 子:7
专家分:4
注 册:2013-3-30
收藏
得分:0 
以下是引用yong6562229在2013-12-13 13:42:42的发言:

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

void sort(char *str[],int size)
{
    char temp = NULL;
    for (int i = 0; i < size; i++)
    {
        char * s1 = str[0] + 200 * i;
        char * s2 = str[0] + 200 * (i + 1);

        if(strcmp(s1,s2)>0)
        {
            while (*s1 != '\0' || *s2 != '\0')
            {
                temp=*s1;
                *s1=*s2;
                *s2=temp;
                s1++;
                s2++;
            }
        }
    }

}

void print(char *str[],int size)
{
    int i;
    for(i=0;i<size;i++)
    printf("%s\n",str[0]+200*i);
}

void main()
{
    char *p = new char[20];
    char str[20][200];
    int i,n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s",str);
        
    }
    p=(char *)str;
    sort(&p,n);
    print(&p,n);
}


随便改了下  你看下



我只验证了两个书名  多于两个的 话  还要加个while循环 吧
2013-12-13 13:47
快速回复:大一党,c语言初学者,问下程序哪里错了?
数据加载中...
 
   



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

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