C 给出一行回文的列表
我正在尝试编写一个程序,它查找回文(在一行中的几个单词之间)并编写它们。例如:C 给出一行回文的列表,c,stdout,stdin,palindrome,C,Stdout,Stdin,Palindrome,我正在尝试编写一个程序,它查找回文(在一行中的几个单词之间)并编写它们。例如: >Maszka anna rentner forfreakingsake >anna rentner 但是我确实检查了第一个单词(直到空格),我不知道如何开始检查下一个单词。这应该是一种简单、原始的方式,有人能帮我吗? 我拥有的(不多): #包括 #包括 #定义N 10000 int main() { int i,j; char-satz[N]; 字符回文[N]; fgets(satz
>Maszka anna rentner forfreakingsake
>anna rentner
但是我确实检查了第一个单词(直到空格),我不知道如何开始检查下一个单词。这应该是一种简单、原始的方式,有人能帮我吗?
我拥有的(不多):
#包括
#包括
#定义N 10000
int main()
{
int i,j;
char-satz[N];
字符回文[N];
fgets(satz);
对于(i=0;i!=EOF;i++)
satz[i]=getchar();//首先用字符填充数组
}
printf(“wth:(”);
}
我想比较satz[I]和satz[j](j=strlen(word)-1应该是单词的最后一个字母),回文[]应该是带有回文的数组,我可以打印出来。但是我不知道数组的大小,也不知道单词的长度,所以我被困在这里。我能想到的最简单的方法是从字符串中创建一个数组。空格可以是其中的分隔符。所以只要解析它并将每个单词添加到一个数组中。然后你就可以对该数组。
\include
#include <stdio.h>
#include <ctype.h>
int main(void){
char word[128];
int i=0, ch;
putchar('>');
while(EOF != (ch = getchar())){
if(isspace(ch)){
if(i){
int fr, bk;
for(fr=0, bk=i-1;word[fr]==word[bk];++fr,--bk);
if(fr < bk)//not palindromes
i = 0;
else {
while(i)
putchar(word[--i]);
putchar(ch);
}
}
if(ch == '\n')
break;
} else {
word[i++] = tolower(ch);//check i < sizeof(word)
}
}
putchar('\n');
return 0;
}
#包括
内部主(空){
字符字[128];
int i=0,ch;
putchar('>');
而(EOF!=(ch=getchar()){
if(isspace(ch)){
如果(i){
int-fr,bk;
for(fr=0,bk=i-1;字[fr]==字[bk];++fr,--bk);
if(fr
请显示您拥有的代码您至少应该告诉您尝试了什么…并在此处复制/粘贴您的代码。数组之间用空格分隔?请用示例进一步解释,因为as is是不正确的。我不认为这等于一个答案。可能应该是一个注释。它看起来很好,工作正常。但是当我开始这个程序时在Windows中,控制台在给出答案后立即关闭。我可以得到一些解决此问题的建议吗?@user2957781getchar();
或系统(“暂停”);
在返回0之前写入;
#include <stdio.h>
#include <ctype.h>
int main(void){
char word[128];
int i=0, ch;
putchar('>');
while(EOF != (ch = getchar())){
if(isspace(ch)){
if(i){
int fr, bk;
for(fr=0, bk=i-1;word[fr]==word[bk];++fr,--bk);
if(fr < bk)//not palindromes
i = 0;
else {
while(i)
putchar(word[--i]);
putchar(ch);
}
}
if(ch == '\n')
break;
} else {
word[i++] = tolower(ch);//check i < sizeof(word)
}
}
putchar('\n');
return 0;
}