runtime error 问题

C语言 码拜 9年前 (2016-04-08) 1324次浏览
本人在vs2010上能运行出来,oj的时候显示runtimeerror,不知道是哪里的问题
题目描述:
在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易的识别。我们给出一种最简的的加密方法,对给定的一个字符串,把其中从a-y,A-Y的字母用其后继字母替代,把z和Z用a和A替代,则可得到一个简单的加密字符串。
输入:
可能有多组测试数据。每组测试数据的第一行是字符串的数目n, (也要使用get(s)读取字符串,再用n=atoi(s)获得整数数值),其余n行每行一个字符串,用gets(s)方式读取这一行字符串.每个字符串长度小于80个字符。
输出:
对于每组数据,输出每行字符串的加密字符串。
样例输入:
1
Hello! How are you!
样例输出:
Ifmmp! Ipx bsf zpv!
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int n,i,j,m;
char str[2];
char **p;
while((n=atoi(gets(str)))!=EOF){
p=(char**)calloc(n,80*sizeof(char));
for(i=0;i<n;i++)
p[i]=(char*)calloc(80,sizeof(char));
for(i=0;i<n;i++)
gets(p[i]);
i=0;
while(i<n){
m=strlen(p[i]);
for(j=0;j<m;j++){
if((p[i][j]>=”a”&&p[i][j]<=”z”)||(p[i][j]<=”Z”&&p[i][j]>=”A”)){
if(p[i][j]==”Z”)
p[i][j]=”A”;
else if(p[i][j]==”z”)
p[i][j]=”a”;
else p[i][j]++;}
}
i++;
}
for(i=0;i<n;i++)
printf(“%s\n”,p[i]);
}
return 0;
}
解决方案

20

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main() {
    int n,i,j,m;
    char str[81];
    while((n=atoi(gets(str)))!=0) {
        i=0;
        while(i<n) {
            gets(str);
            m=strlen(str);
            for(j=0;j<m;j++) {
                if((str[j]>="a"&&str[j]<="z")||(str[j]<="Z"&&str[j]>="A")) {
                    if(str[j]=="Z")
                        str[j]="A";
                    else if(str[j]=="z")
                        str[j]="a";
                    else str[j]++;
                }
            }
            i++;
            printf("%s\n",str);
        }
    }
    return 0;
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明runtime error 问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)