标题:怎么在每个单词字母逆序中让标点符号的位置保持不变?
取消只看楼主
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
结帖率:80%
已结贴  问题点数:10 回复次数:7 
怎么在每个单词字母逆序中让标点符号的位置保持不变?
例如:
输入
I like thinking...
输出
I ekil gnikniht...
下面是我的代码:
程序代码:
#include <stdio.h>
#include <string.h>
int main(void)
{
    
    char a[20];
    gets(a); 
    int len;
    len=strlen(a);
    char b[20][20];
    int i,j,k;
    int m[20];
    j=0;
    k=0;
    for(i=0;i<len;i++)//将输入的字符串化为二维数组 每一个单词单独占一行 
    {
        if(a[i]==' ')
        {
            j++;
            
            k=0;
            continue;
        }
        
        b[j][k]=a[i];
        k++;
        m[j]=k;
    }
    /*int t;
    for(t=0;t<j+1;t++)
    printf("%d\n",m[t]);*/
    
    int p,q;
    char c[20][20];
    char d[20];
    for(p=0;p<j+1;p++)//
    {    for(q=0;q<m[p];q++)//
        { 
        
            if(b[p][m[p]-1-q]>='a'&&b[p][m[p]-1-q]<='z'||b[p][m[p]-1-q]>='A'&&b[p][m[p]-1-q]<='Z')
            c[p][q]=b[p][m[p]-1-q];//逆序,c为逆序后的数组 
            
        }
    }
         p=0;
         while(p<j+1)
          {
            for(q=0;q<m[p];q++)
           {
           printf("%c",c[p][q]);
           }
           p++;
           printf(" ");
          }
    
    
    return 0; 
    
    
}

然后我的输出结果是这样的:
i like thinking...
i ekil    gnikniht
可以看到,标点符号没有输出且占了位置。请教大佬们我该如何修改才能显示出样例中输出的结果。
搜索更多相关主题的帖子: 输出 单词 逆序 for int 
2020-12-24 20:26
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
回复 2楼 do8do8do8
那应该是怎么改才能正确输出呀
2020-12-24 21:29
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
我在原来的代码中这么加
程序代码:
if(b[p][m[p]-1-q]>='a'&&b[p][m[p]-1-q]<='z'||b[p][m[p]-1-q]>='A'&&b[p][m[p]-1-q]<='Z')
            c[p][q]=b[p][m[p]-1-q];//逆序,c为逆序后的数组 
            else {
                
                c[p][q]=c[p][q+1];
                c[p][q]=b[p][m[p]-1-q];
                }
                

然后输出的结果是
i like thinking...
i ekil ...gnikniht
              
2020-12-24 23:02
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
回复 7楼 apull
谢谢你的解答,但是标点符号的位置不能改变,您的代码运行出来的结果标点符号仍然被逆序了
2020-12-24 23:11
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
回复 11楼 apull
您刚才的代码还是有一点小问题
比如我随便输入以下例子
ashk; ;wjs' wsl/
khsa; ;sjw' /lsw 这里标点符号就换了

dskh;; ajl' ,sj'//sj ;sdk'
hksd;; lja' ,js'//j 这里到后面就没有了

虽然我还不太看得懂您写的代码,但是您最后写的新的循环主体运行结果是正确的,感谢!
祝您圣诞节快乐!

[此贴子已经被作者于2020-12-25 00:15编辑过]

2020-12-25 00:07
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
回复 13楼 do8do8do8
很奇怪 我运行这个程序根本没有输出结果
2020-12-25 14:31
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
回复 14楼 rjsp
好的,感谢!
祝您圣诞节愉快!
2020-12-25 14:31
Sopphhiiaa
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2020-12-7
得分:0 
回复 15楼 do8do8do8
你这个代码运行出来是对的 不过我还需要自己再理解一下
谢谢你抽出时间为我解答问题,祝您圣诞节快乐!
2020-12-25 14:39



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




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

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