作业帮 > 综合 > 作业

C语言 电文破译 题目和我编写的程序如下,请大神指出我错在哪里,并改正,答得好的追加.

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/04/30 06:35:09
C语言 电文破译 题目和我编写的程序如下,请大神指出我错在哪里,并改正,答得好的追加.
Description
有n行电文,每行电文都已按下面规律译成密码:
即第1个字母变成第26个字母,第2个字母变成第25个字母,……,第26个字母变成第1个字母.其它非字母字符不变.
现在我们已截获n行采取这种方式加密的电文,为了帮助情报员获取正确情报,需要你编写一段程序将加密的电文译回原文.
Input
输入有若干行,第一行是一个正整数n,表示共需破译n行电文.
其后的每行都各是一个字符串,表示截获的加密电文.每行电文最多可以有200个字符,其中包括了大小写字母、空格、标点符号等各种字符.
Output
对应于每行输入应该输出一行,即对应破译后的电文原文.
Sample Input
2
Dv droo wrhxfhh gsrh kilyovn glnliild.
R'ev xszmtvw nb nrmw.
Sample Output
We will discuss this problem tomorrow.
I’ve changed my mind.
我的代码如下:
#include
#include
int main()
{
int n,i,j;
char s[210],xiao[26],da[26];
while(~scanf("%s",s))
{
memset(xiao,0,sizeof(xiao));
memset(da,0,sizeof(da));
for(i=0;i
C语言 电文破译 题目和我编写的程序如下,请大神指出我错在哪里,并改正,答得好的追加.
你没有处理第一个数据……人家第一个数据是总的测试个数……你读到哪里去了?
#include <stdio.h>
#include <algorithm>
void Decrypt(char &c)
{
    if ( c >= 'a' && c <= 'z' )
    {
        c  = 'z' - (c - 'a');
    }
    else if ( c >= 'A' && c <= 'Z' )
    {
        c = 'Z' - (c - 'A');
    }
}
int main(int argc, char* argv[])
{
    int n = 0;
    scanf( "%d\n" , &n );
    while ( n-- > 0 )
    {
        char szBuff[200 + 1] = {0};
        gets( szBuff );
        std::for_each( szBuff , szBuff + 200 , Decrypt );
        printf( "%s\n" , szBuff );
    }
    return 0;
}
C C++混合物,哈哈,纯粹恶搞~
再问: 请用C语言回答,谢谢。
再答: #include <stdio.h>
#include <stdlib.h>
int main()
{
    int n = 0;
    int nLen;
    int i = 0;
    char szBuff[200 + 1] = {0};
    char c = '\0';
       
    scanf( "%d\n" , &n );
       
    while ( n-- > 0 )
    {
        gets( szBuff );
        nLen = strlen(szBuff);
        for( i = 0; i < nLen; ++i )
        {
            c = szBuff[i];
            if ( c >= 'a' && c <= 'z' )
            {
                c  = 'z' - (c - 'a');
            }
            else if ( c >= 'A' && c <= 'Z' )
            {
                c = 'Z' - (c - 'A');
            }
            szBuff[i] = c;
        }
        printf( "%s\n" , szBuff );
    }
       
    return 0;
}