C语言100分求解

如题所述

#include<stdio.h>
#include<string.h>
void main()
{
char str[100];//定义一个字符串数组
int i,n,flag=1;
scanf("%s",str);
n=strlen(str);//计算str实际长度(不算'\0')
for(i=0;i<n/2;i++)
  if(str[i]!=str[n-1-i])  {flag=0;break;} //如果不符合回文条件,flag赋值为0
if(flag)                                 //如果flag=1,就说明一直符合回文条件
  {
 printf("Yes");
  }
else                         //如果flag=0,就说明至少有一处不符合回文条件
  {
 printf("No");
  }
printf("\n");
}

 

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-24
#include <stdio.h>
#include <string.h>
int main()
{
    char str[100] = {0};  //定义一个字符数组,用于存储用户输入字符串.
    char *start,*end; //定义两个字符指针,分别用于指向头与尾.
    int flag = 1; //默认为回文.
    printf( "input:" ); //提示用户输入数据.
 
    scanf( "%s", str ); //获取用户输入数据.
 
    start = str; //指向输入数据的开始地址位置.
    end = str + strlen(str) - 1; //指向输入数据的末尾地址位置
 
    while( end >= start ) //末尾地址位置需大于开始地址位置
    {
       if( *end-- != *start++ ) //如果左右两边一次不相等,那么就不是回文.
       {
          flag = 0;
          break;
       }
    }
    if( flag ) //根据判断标记,输出对应结果.
    {
        printf("yes");
    }
    else
    {
        printf( "no" );
    }    
    return 0;    
}

本回答被提问者采纳
第2个回答  2015-01-17
#include <stdio.h>
#include <string.h>

int main(void)
{
int i,ret;
char str[128]={0};

scanf("%s",str);

for(i=0; i<strlen(str)/2 ;i++)
{
if(str[i] == str[strlen(str) - 1 -i])
continue;
else
{
ret = 0;
break;
}
}
if(!(i<strlen(str)/2))
ret = 1;


if(ret)
printf("yes");
else
printf("no");
}

运行无误,哈哈,望采纳

相似回答