Palindrome计划中的数组

时间:2013-10-22 13:59:02

标签: c

所以我制作了一个程序,我必须输入一个单词,如果它是一个回文(一个双向相同的单词),它会显示出来。

#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),这将结束程序说:“这不是一个回文!”

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

3 个答案:

答案 0 :(得分:2)

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

fgets (word , 100 , stdin) 

length也未初始化,因此会导致UB。

答案 1 :(得分: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);
    }
}

答案 2 :(得分:-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: ";
}


}