| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3677 人关注过本帖
标题:求助,无法输出结果,编译可以过
取消只看楼主 加入收藏
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
求助,无法输出结果,编译可以过
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
char **readWords(int n)
{
    int i;
    char *a=malloc(n*sizeof(int));
    char **b=malloc(n*sizeof(*a));
    for(i=0;i<n;i++){
        scanf("%d",&*(a+i));
    }
    for(i=0;i<n;i++){
        *(b+i)=a+i;
    }
    return b;
}
void sort(char **ptr, int size,int *minlenPtr,int *maxlenPtr)
{
    int i,j,len=0,maxlen=0,minlen=0;
    char temp;
   
     for (j=0;j<size;j++){
         for(i=0;i<size-j;i++)
        {
            if(strlen(*(ptr+i))<strlen(*(ptr+j)))
            {
                temp=**(ptr+i);
                **(ptr+i)=**(ptr+j);
                **(ptr+j)=temp;
            }
            while(**ptr=getchar()!='n'){
                len++;
                if(len>maxlen){
                    maxlen=len;
                    *maxlenPtr=maxlen;
                }
                if(len<minlen){
                       minlen=len;
                    *minlenPtr=minlen;
                }
            }
        }
     }
     printf("Min length is %d and max length is %d",minlen,maxlen);
}
void output(char **ptr,int size)
{
    int i;
    for(i=0;i<size;i++){
        printf("%c",**(ptr+i));
    }
}
void freeMemory(char **ptr,int size)
{
    free(readWords(size));
    ptr=NULL;
}

main()
{
    char *ptr=0;
    int n;
    int *minlenPtr;
    int *maxlenPtr;
    printf("Please input the number of words:");
    scanf("%d",&n);
    getchar();
    printf("Please input the words:n");
    readWords(n);
    sort(&ptr,n,minlenPtr,maxlenPtr);
    output(&ptr,n);
    freeMemory(&ptr,n);
   
    system("pause");
   
}

搜索更多相关主题的帖子: include return 
2016-01-04 16:24
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
(1) 实现函数char ** readWords(int n),用于从键盘读取n个单词,保存在动态申请的字符数组中,字符数组首地址保存在动态申请的指针数组中。返回指针数组首元素的地址。
(2) 实现函数void sort(char * * ptr, int size,int * minlenPtr,int * maxlenPtr),用于对单词按照长度的从小到大顺序进行排序,并将单词的最短长度和最长长度分别写入minlenPtr和maxlenPtr指向的整形变量中。
(3) 实现函数void output(char ** ptr,int size),用于输出单词
(4) 实现函数void freeMemory(char ** ptr,int size),用于释放动态申请的内存,包括指针数组和字符数组的内存空间。


这是题目的几个要求。
2016-01-04 16:27
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
Please input the words:
Where↙
there↙
is↙
hope↙
a↙
way↙
Min length is 1 and max length is 5
After sort,the words are:
a
is
way
hope
Where
there


这是样例
2016-01-04 16:27
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
回复 4楼 TonyDeng
应该说输出的时候报错了,It stopped with signal SIGSEGV.Segmentation fault
2016-01-04 16:33
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
回复 6楼 TonyDeng
表示并不是很懂指针啊。。。。第一个应该怎么改。。
2016-01-04 17:43
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
回复 7楼 TonyDeng
THX。。。刚开始学指针。。好难感觉
2016-01-04 17:44
q452953979
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2016-1-4
收藏
得分:0 
回复 6楼 TonyDeng
void sort(char *ptr[],int n,int *minlenPtr,int *maxlenPtr)
{
    int i;
    int len[n];
    for(i=0;i<=n-1;i++)
    {   

        len[i]=strlen(&ptr[i]);
        if(len[i]>*maxlenPtr)
            *maxlenPtr=len[i];
        if(len[i]<*minlenPtr)
            *minlenPtr=len[i];
    }
    RecurSelectSort(len,n);   
}


这个sort函数调试的时候说是越界了,就是for里面的第一个语句,这是为什么
2016-01-04 17:53
快速回复:求助,无法输出结果,编译可以过
数据加载中...
 
   



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

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