| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 316 人关注过本帖
标题:关于字符串的问题,求解答。
只看楼主 加入收藏
zhaoqiuquan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-11-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
关于字符串的问题,求解答。
先说问题,输入一个整数n,然后输入一个字符串,字符串中的每一个小写字符均往后退n位(意思是例如n=2,那么abc就变成cde),下面是我写的代码,不知道错哪里,
样例输入
1
hello world.
ifmmp xpsme.

下面是我的代码,求指导。(可能有点乱,麻烦耐心看。)
#include<stdio.h>
#include<string.h>
int main ()
{
    int n,i;
    char sentence[10001];
    while(scanf("%d",&n)!=EOF&&n!=0)
    {
        getchar();
        gets(sentence);
        for(i=0;i<strlen(sentence);i++)
        {
            if(sentence[i]>='a'&&sentence[i]<='z')
            {
                if(sentence[i]+n>'z' && (n-(('z'-sentence[i])+1))>=26)
                    sentence[i]=('a'+((n-(('z'-sentence[i])+1))%26));//这是那种要移动很多位的情况
                else if(sentence[i]+n>'z' && (n-(('z'-sentence[i])+1))<26)
                    sentence[i]=('a'+((n-(('z'-sentence[i])+1))));
                else
                    sentence[i]=sentence[i]+n;
            }
            else
                sentence[i]+=0;
        }
        printf("%s\n",sentence);
    }
    return 0;
}
搜索更多相关主题的帖子: include 字符串 
2012-11-28 22:04
zhaoqiuquan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-11-24
收藏
得分:0 
回复 楼主 zhaoqiuquan
样例输入哪里 hello world 下面是样例输出
2012-11-28 22:04
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
遇到z咋弄呢

DO IT YOURSELF !
2012-11-28 22:06
zhaoqiuquan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-11-24
收藏
得分:0 
回复 楼主 zhaoqiuquan
z下一位是a 不好意思 忘了打上去了
2012-11-28 22:13
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
回复 4楼 zhaoqiuquan
不需要用if判断是否是'z',用取余,
sentence[i]='a'+(sentence[i]-'a'+n)%26;

[ 本帖最后由 embed_xuel 于 2012-11-29 11:27 编辑 ]

总有那身价贱的人给作业贴回复完整的代码
2012-11-28 22:21
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
int main ()
{
    char *a="abcxyz";
    int n=5;
    int len=strlen(a);
    for(int i=0;i<len;i++)
    {
        if(a[i]+n>'z') printf("%c",(n-'z'+a[i]+'a'-1));
        else printf("%c",a[i]+n);
    }

    return 0;

}
没考虑空格等字符  你自己再改改 应该就可以了

DO IT YOURSELF !
2012-11-28 23:21
zhaoqiuquan
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-11-24
收藏
得分:0 
回复 6楼 wp231957
嗯,我先改改
2012-11-29 10:39
快速回复:关于字符串的问题,求解答。
数据加载中...
 
   



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

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