| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 515 人关注过本帖
标题:密码破译
只看楼主 加入收藏
ll1512121699
Rank: 1
来 自:成都
等 级:新手上路
帖 子:27
专家分:2
注 册:2013-3-21
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:6 
密码破译
#include<stdio.h>
#include<string.h>
int main()
{
    int i=0;
    int n;
    char a[300];
    scanf("%d",&n);
    while(n--)
    {
    scanf("%s",a);
    while(a[i]!='\0')
    {
        if('a'<=a[i]&&a[i]<='y'||'A'<=a[i]&&a[i]<='Y')
            a[i]++;
        else
            a[i]=a[i]-25;
        i++;
    }
   printf("%s\n",a);                                                                                                                                                                                         
    }
    return 0;
}
为什么只能输出字符串第一个空格前的,后面的输不出来。求帮助。先谢谢了!
搜索更多相关主题的帖子: include 密码 
2013-04-11 19:56
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
又碰到个爹

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-11 20:42
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:5 
scanf("%s",a);
接收字符串以空格分开,所以只能输入第一个空格前的字符。。
用gets

#include<stdio.h>
#include<string.h>
int main()
{
    int i=0;
    int n;
    char a[300];
    scanf("%d\n",&n);
    while(n--)
    {
    //scanf("%s",a);
    gets(a);
    while(a[i]!='\0')
    {
        if(('a'<=a[i]&&a[i]<='y')||('A'<=a[i]&&a[i]<='Y'))
            a[i]++;
        else
            a[i]=a[i]-25;
        i++;
    }
   printf("%s\n",a);                                                                                                                                                                                         
    }
    system("pause");
    return 0;
}
2013-04-11 20:43
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
scanf("%s",a);遇空格就停的 换成gets试试

人生是一场错过 愿你别蹉跎
2013-04-11 20:44
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:5 
#include<stdio.h>
#include<string.h>
int main()
{
    int i;
    int n;
    char a[300];
    scanf("%d",&n);
    while(n--)
    {
        i=0;              //i=放在这里
        fflush(stdin);    //接收输入n后的回车键
        gets(a);          //不能用scanf键入,因为这种输入法只能将空格以前的部分读入数组
        while(a[i]!='\0')
        {
            if('a'<=a[i]&&a[i]<='y'||'A'<=a[i]&&a[i]<='Y')
                a[i]++;
            else if(a[i]==' ')    //如果是空格,则a[i]的值不变
                goto loop;
            else
                a[i]=a[i]-25;
            loop:i++;
        }
        puts(a);
    }
        
    return 0;
}


不好意思啊   上个你的密码破译 帖子,我答复时没注意 scanf 问题...   不过这个   还有个新问题就是空格也要处理

[ 本帖最后由 韶志 于 2013-4-11 21:37 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2013-04-11 20:47
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
gets()函数和scanf函数相似,但是不完全相同,使用scanf函数输入字符串是存在一个问题,就是输入空格会认为是字符串结束,空格后的字符将作为下一个输入项处理,gets函数将接受输入的整个字符串直至回车为止。你的问题就处在着了,用gets函数就可以了。

Maybe
2013-04-11 21:03
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:5 
补充:
int i=0;//初始化要在第二循环的前面

www.qunxingw.wang
2013-04-11 21:24
快速回复:密码破译
数据加载中...
 
   



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

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