| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8480 人关注过本帖
标题:求教,为什么会输出超限!
只看楼主 加入收藏
qiujiao1
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-4-10
结帖率:80%
收藏
已结贴  问题点数:13 回复次数:10 
求教,为什么会输出超限!
输入一串字符和一个正整数k,将其中的英文字母加密并输出加密后的字符串,非英文字母不变。加密思想:将每个字母c加一个序数k,即用它后面的第k个字母代替,变换公式:c=c+k。如果字母为z,则后一个字母是a,也就是字母字符形成一个圆。

输入
输入第一行是若干字符,以回车结束,输入第二行是一个整数k,k是int范围内的正整数。

输出
输出加密后的字符串,占一行。

样例输入
12kjsdZjk
280
样例输出
12edmxTde
#include<stdio.h>  
int main()  
{  
    int k;  
    char ch;
    scanf("%d",&k);
    while(scanf("%c",&ch),ch!='13')  
    {  
        if('a'<=ch&&ch<='z')  
            ch=(ch-'a'+k)%26+'a';  
        if('A'<=ch&&ch<='Z')  
            ch=(ch-'A'+k)%26+'A';
        printf("%c",ch);
        printf("\n");
    }   
    return 0;  
}
搜索更多相关主题的帖子: 英文字母 include 正整数 字符串 加密 
2014-05-09 16:28
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
ch!='13'   这是什么意思?

总有那身价贱的人给作业贴回复完整的代码
2014-05-09 16:32
qiujiao1
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-4-10
收藏
得分:0 
我想的是回车键的ASCII码值是13,然后“输入第一行是若干字符,以回车结束”
2014-05-09 16:35
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
回复 3 楼 qiujiao1
那你用单引号做啥?

总有那身价贱的人给作业贴回复完整的代码
2014-05-09 16:39
qiujiao1
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 4 楼 embed_xuel
字符型的常量不是应该加英文状态下的单引号吗?
2014-05-09 17:14
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:4 
我验证了是正确的哦

我不是砖家,要努力成为砖家。
2014-05-09 17:15
qiujiao1
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2014-4-10
收藏
得分:0 
回复 6 楼 砖家的谎言
不过,判题平台上说这个程序输出超限
2014-05-09 17:28
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:4 
ch!='13'
是错误的写法,你至少应该写成
ch!='\15' // 8进制换码
2014-05-09 17:33
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
简单修改如下:
程序代码:
#include<stdio.h>
int main()
{
    int k;
    char ch;
    printf ("Input k: ");
    scanf( "%d", &k );
    printf ("Input str: ");
    while ( (ch = getchar() ) != '\x0a' ) {
        if ( 'a' <= ch && ch <= 'z' )
            ch = ( ch - 'a' + k ) % 26 + 'a';
        if ( 'A' <= ch && ch <= 'Z' )
            ch = ( ch - 'A' + k ) % 26 + 'A';
        printf( "%c", ch );
    }
    printf( "\n" );
    return 0;
}

请楼主与原程序对照。
2014-05-09 17:43
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
楼主的程序实际上利用了IO缓冲的特点,在输入没有回车之前,程序的 printf 输出不会显示。按标准的做法应该保存输入的所有字符直至回车,再一次转换输出。
2014-05-09 17:46
快速回复:求教,为什么会输出超限!
数据加载中...
 
   



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

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