【发布时间】:2019-03-22 23:43:55
【问题描述】:
基本上,我的代码应该通过取出所有偶数索引值(从 0 开始)和奇数索引值并将偶数索引值放在奇数索引值之前来加密句子(或单词)。 例如,像 "test" (0)t(1)e(2)s(3)t 这样的单词应该打印为 (0)t(2)s(1)e(3)t 或 "tset"。不应该打印任何数字,我只是用它们来显示奇数和偶数索引值。 我的代码有时会起作用,具体取决于它的运行位置。我似乎在代码块和我尝试过的在线编译器之间得到了不同的结果。我怀疑这种不一致必须归咎于一个更大的问题。谁能帮我看看我做错了什么,以便我最终能够理解并纠正我的错误?
我曾尝试使用一个计数器将偶数和奇数索引值输入到一个数组中,但我也遇到了错误,因此我决定将它们放入单独的数组中,然后使用strcat 将它们组合起来。有没有办法让它与我在代码中显示的方法一起工作,还是应该回到以前的方法?
#include <stdio.h>
#include <string.h>
#define SIZE 1000
int main()
{
char message[SIZE];
char even[SIZE];
char odd[SIZE];
int length,j=0;
printf("Enter a word or sentence.\n");
fgets(message,SIZE,stdin);
printf("Your message is: %s\n",message);
message[strcspn(message, "\n")] = 0;
length=strlen(message);
printf("The length of the message is: %d\n",length);
for(int i=0;i<length;i+=2){
even[i/2]=message[i];
// printf("%c\n",even[i/2]);
}
for(int i=1;i<length;i+=2){
odd[j]=message[i];
j++;
}
printf("The even letters are: %s\n",even);
printf("The odd letters are: %s\n",odd);
strcat(even,odd);
printf("%s",even);
/*printf("\nFInalyy.");
for(i=0;i<=count;i++)
for(j=i+1;j<=count;j++){
if(strcmp(allmessages[i],allmessages[j])>0){
strcpy(temp,allmessages[i]);
strcpy(allmessages[i],allmessages[j]);
strcpy(allmessages[j],temp);
}
}
printf("The original messages in alphabetical order are: ");
for(i=0;i<=count;i++)
puts(allmessages[i]);*/
return 0;
}
当我输入“测试”或“句子”之类的词时,它可以完美运行。有时我输入诸如“这是一个测试句子”之类的句子,它会完美地工作,然后有一次它会打印出一些随机的垃圾字母以及加密的句子。我想知道如何解决这个问题,并了解为什么它在同一个条目上完美运行几次然后就停止了。我最近几次使用https://www.onlinegdb.com/online_c_compiler 对其进行了测试,所以我的结果就是基于此。
成功的结果:
使用相同条目的不成功结果:
【问题讨论】:
-
将文本作为文本发布比将文本作为图片发布更有用。请用文字替换图片。