一个c语言解密的问题运行没结果

一个解密的程序,运行的时候没有结果,错误,编译没有错误
#include
#include
char jiemi(char a[])//吧所有字母都向前移动5位,得出明文
{
int i=0;
while(a[i]!='\0')
{
if(a[i]==','||a[i]==' ')
{
i++;
}
else
{
a[i]=a[i]-5;
i++;
}
}
return 0;
}
int main()//遇到start开始输入数据,遇到end 打印数据
//遇到 ENDINPUT 程序结束
{
char a[201]={0};
char c[11]={0};
char str1[6]="start";
char str2[4]="end";
char str3[11]="ENDOINPUT";
while(1)
{
scanf("%s",c);//c start
if(strcmp(c,str1)==0)
{
scanf("%s",a);
jiemi(a);
}
scanf("%s",c);//b end
if(strcmp(c,str2)==0)
{
printf("%s",a);
}
scanf("%s",c);
if(strcmp(c,str3)==0)
{
break;
}
}
return 0;
}

4个回答

这个问题谭浩强的那本C语言书上有解法啊,应该是第六章的例题吧!你不能直接减5,字符a减5之后输出结果就错误了,而且应该区分大小写字母吧,这个程序不是很难的。

这个你可以单步调试跟踪一下,估计是你的算法计算有问题

可以了,是因为scanf("%s",c)输入的是一个字符串,不过c只代表了首地址,只有一个储存位置,不能存放整个字符串
改成gets(c)就可以了

运行后可以了,这道题目是数据结构的题目
按照我刚才写的程序可以结果正确不过运行时间有问题,不知道有没有比较快一点的算法?

http://jmusoft.openjudge.cn/practice/0003/
这个是题目链接。

我的runtime wrong 代码
#include
#include
char jiemi(char a[])//吧所有字母都向前移动5位,得出明文
{
int i=0;
while(a[i]!='\0')
{
if(a[i]==','||a[i]==' ')
{
i++;
}
else if(a[i]>='E')
{
a[i]=a[i]-5;
i++;
}
else
{
a[i]=a[i]+21;
i++;
}
}
return 0;
}
int main()//遇到start开始输入数据,遇到end 打印数据
//遇到 ENDINPUT 程序结束
{
char a[201]={0};
char c[11]={0};
char str1[6]="START";
char str2[4]="END";
char str3[11]="ENDOINPUT";
int i=0;
while(1)
{
gets(c);//c start
if(strcmp(c,str1)==0)
{
gets(a);
jiemi(a);
}
gets(c);//b end
if(strcmp(c,str2)==0)
{
printf("%s\n",a);
}
gets(c);
if(strcmp(c,str3)==0)
{
break;
}
}
return 0;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐