标题:请问下面的程序哪里有问题,怎么输不出结果?
只看楼主
srl237381
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2018-12-19
结帖率:100%
已结贴  问题点数:8 回复次数:7 
请问下面的程序哪里有问题,怎么输不出结果?
//编写程序用5个字符串的第1个字符组成一个新的字符串(用指针数组实现)
#include "stdio.h"
#include "string.h"
#define M 0
char *copy(char (*p)[20],int n){
    int i;
    for(i=0;i<n;i++){
        return(*(p+i)+M);
    }
}
main(){
    int i,m=5;
    char *t,str[5][20];
    printf("请输入五个字符串:\n");
    for(i=0;i<5;i++){
    gets(str[i]);
    //puts(str[i]);
    }
   
   
    for(i=0;i<5;i++){
    t=copy(str,m);
    printf("%c",t);
    }
   
    }
 
搜索更多相关主题的帖子: 结果 字符串 str char for 
2019-04-27 20:21
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1728
专家分:3216
注 册:2015-12-2
得分:4 
#include "stdio.h"
#include "string.h"
#define M 0
char *copy(char (*p)[20],int n){
    int i;
    for(i=0;i<n;i++){
        return(*(p+i)+M);
    }
}
main(){
    int i,m=5;
    char *t,str[5][20];
    printf("请输入五个字符串:\n");
    for(i=0;i<5;i++){
    gets(str[i]);
    //puts(str[i]);
    }
   
   
    for(i=0;i<5;i++){
    t=copy(&str[i],m);//这里str改为&str[i]
    printf("%c",*t);  //这里t改为*t
    }
   
    }
2019-04-27 20:56
C基础
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:133
专家分:421
注 册:2018-10-15
得分:4 
二楼的程序是正确
不过我个人觉得你的这个问题可以简单一点
主函数中你已经调用五次函数了,每一次只需要返回字符串的首字母就可以了,被调函数里面就可以不同循环了,
还有就是你的符号变量M没有用到,在开始的时候就可以不用定义的
还有头文件string.h可以不用加,因为你的程序中用到的字符串函数只有gets和puts有stdio.h就可以了,(不过你加上是对的,这样比较严谨一些)
#include "stdio.h"
#include "string.h"
char *copy(char (*p)[20],int n)
{
        return *(p+n);
    }
main()
{
    int i;
    char *t,str[5][20];
    printf("请输入五个字符串:\n");
    for(i=0;i<5;i++){
    gets(str[i]);
    }  
    for(i=0;i<5;i++){
    t=copy(str,i);
    printf("%c",*t);
    }
}

我是基于DEVC编译器的程序,如果不要求是指针数组的话,会更简单一些,但是不符合你的题目要求,我就不说了
2019-04-27 22:08
srl237381
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2018-12-19
得分:0 
回复 3楼 C基础
谢谢,程序好巧妙
2019-04-27 22:30
srl237381
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2018-12-19
得分:0 
回复 2楼 ehszt
谢谢(*°∀°)=3
2019-04-27 22:30
srl237381
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2018-12-19
得分:0 
回复 3楼 C基础
谢谢,程序好巧妙
2019-04-27 22:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
这题最难办的就是 题目交代字符串的最大长度。
按照题主的代码,如果字符串长度超过19就完蛋了

程序代码:
#include <stdio.h>

int main( void )
{
    char str[6];
    for( size_t i=0; i!=sizeof(str)-1; ++i )
    {
        scanf( "%1s%*[^ \f\n\r\t\v]", str+i );
    }
    puts( str );
}

2019-04-28 09:18
阿杰小白
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-4-28
得分:0 
看上去好难的样子
2019-04-28 10:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494448-1-1.html




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

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