gpt4 book ai didi

c - C语言的回文查找器?

转载 作者:行者123 更新时间:2023-11-30 17:09:18 26 4
gpt4 key购买 nike

我正在尝试用 C 语言制作一个回文查找器,但我不知道哪里出了问题,无论我尝试编码的两种不同方式都得到错误的输出。我刚刚开始学习 C(上周),所以如果你能简单地解释一下,那就太好了,谢谢!

//way1
#include <stdio.h>

int read_char() { return getchar(); }
void read_string(char* s, int size) { fgets(s, size, stdin); }

void print_char(int c) { putchar(c); }
void print_string(char* s) { printf("%s", s); }


int is_palin(char word[]) {

int m = 0;
int arr_len = sizeof(word) / sizeof(char); //change to char_index
int n = arr_len;
int t = 1;

if(n % 2 != 0) {
for (m=0; m < ((n-1)/2); m++) {
if(word[m] != word[n-m-2]) {
t = 0;
}
else {
t = 1;
}
}
}
else {
for (m=0; m < (n/2)-1; m++) {
if(word[m] != word[n-m-2]) {
t = 0;
}
else {
t = 1;
}
}
}

if(t == 1) {
return 1;
}
else {
return 0;
}
}

int main(void) {
char word[6] = "civic";
int arr_len = sizeof(word)/sizeof(char);

if (is_palin(word) == 1) {
printf("is palin\n");
}
else {
printf("is not palin\n");
}

printf(word);
printf("\n");
printf("%d\n", arr_len);
return 0;
}

////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////

//way2
#include <stdio.h>

int read_char() { return getchar(); }
void read_string(char* s, int size) { fgets(s, size, stdin); }

void print_char(int c) { putchar(c); }
void print_string(char* s) { printf("%s", s); }


int is_palin(char word[]) {
int m = 1;
int input_length = sizeof(word);
int j = input_length-1;
int i = 0;

for(i=0; i <= j; i++) {
if(word[i] != word[j]) {
m = 0;
j--;
}
}

if(m == 1) {
return 1;
}
else {
return 0;
}
}


int main(void) {
char word[6] = "civic";
int input_length = sizeof(word);

if (is_palin(word) == 1) {
printf("is palin\n");
}
else {
printf("is not palin\n");
}

printf(word);
printf("\n");
printf("%d\n", input_length);
return 0;
}

最佳答案

请尝试一下,效果很好。

   #include <stdio.h>

int main( )
{
int flag = 0;
int length = 0;
int len2 = 0;
int i = 0;
char name[130];
char p[130];
char q[130];

printf( "please enter a name or sentence\n" );
scanf( "%[^\n]", name );

length = strlen( name );
len2 = length;
strcpy( p, name );
memset( q, '.', length ); // handy to debug comparaison
q[length] = '\0';

for ( i = 0; i < length; i++ )
{
q[--len2] = p[i];
}

printf( "\n p==%s", p );
printf( "\n q==%s", q );
getchar( );

if ( !strcmp( p, q ) )
flag = 1;

if ( flag == 1 )
printf( "\npalindrome\n" );
else
printf( "\nnot a palindrome\n" );

return 0;
}

关于c - C语言的回文查找器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com