2

所以我做了一个程序,我必须输入一个单词,它会显示它是否是回文(一个双向相同的单词)。

#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]){
    char word;
    int length, counter;

    printf("Please enter a word: ");
    scanf("%c", &word);

    int flag = 1;

    for (counter = 0; counter < length && flag; counter++) {
        printf("%c\t %c", word[counter], word[length - counter])
        if (word[counter] == word[length - counter - 1]){
            flag = 0;
        }
    }
    if (flag) {
        printf("%c is a palindrome!", word);
    }
    else {
        printf("%c is NOT a palindrome!", word);
    }
}

我将其设置为并排显示每个字母。如果一个字母不相同,则“抛出”标志(设置为 0),这将结束程序说:“单词不是回文!”

我在说 word[counter] 的部分出现错误,说它不是下标值。我能做些什么来完成这项工作?还有什么我做错了吗?

4

3 回答 3

2

char word;不是一个数组。这char word[100];是一个数组。此外,您不使用单词读取单个字符scanf("%c", &word);(如字符串或字符系列)。利用:

fgets (word , 100 , stdin) 

length没有初始化,所以会导致UB。

于 2013-10-22T14:00:00.630 回答
0

在您的程序中进行此修改。它将运行良好。

#include <stdio.h>
#include <string.h>
int main()
    {
    char word[100];
    int length, counter;

    printf("Please enter a word: ");
    scanf("%s",word);
    length=strlen(word);
    int flag = 1;

    for(counter = 0; counter < length/2 && flag; counter++) 
        {
        if (word[counter] != word[length-counter-1])
        {
            flag = 0;
            break;
        }
    }
    if (flag) 
    {
        printf("%s is a palindrome!\n", word);
    }
    else {
        printf("%s is NOT a palindrome\n!", word);
    }
}
于 2013-10-22T16:41:35.857 回答
-2
****************************************************************
*              Simple Array Palindrome Program                 *                               
****************************************************************/
#include <iostream>
using namespace std;
int main (){
int arr_size;
int flag=0;
/*****************************************
 *             Array Size                *
 *****************************************/

cout<<"Enter The Array Size: \n->arr[";
cin>>arr_size;cout<<" ]";
int arr[arr_size];
/*****************************************
 *             User_Input                *
 *****************************************/


for(int i=0;i<arr_size;i++){
cout<<"Enter Value For Arr[ "<<i<<" ]  -> "; 
cin>>arr[i];
} 
/*****************************************
 *           Palindrome_Check            *
 *****************************************/


for(int k=0,j=arr_size-1;k<arr_size && j>-1;k++)
{

if(arr[i]==arr[j];
{
flag++;
}

}
/*****************************************
 *             Flag Check                *
 *****************************************/


if(flag==arr_size) {
cout<<"Array Is Palindrome: ";
}
else
{
cout<<"Array Is Not Palindrome: ";
}


}
于 2017-01-16T09:38:43.530 回答