输入一个字符串,判断是否为回文串。 注:回文是指数或者字符串具有首尾回环性质,从后向前按位颠倒
给定1个长度为n的字符串x,最长回文子串问题就是要找出X中长度最长的回文了串.例如,如果给定的字符串X=bbacababa,则子串bacab是X的一个最长的回文子串,它的长度是5.
算法设计:设计一个算法,找出给定字符串X的最长回文子串.
数据输入:由文件input.txt提供输入数据.文件的第1行中给出字符串X.
结果输出:将计算出的字符串X的最长回文子串输出到文件output.txt中.文件的第1行是最长回文子串的长度.文件的第2行是最长回文子串.
编程判断输入的一串字符是否为“回文”。所谓“回文”,是指顺读和倒读都一样的字符串,如"level"和"ABCCBA"都是回文。 提示: (1)设置两个指针pStart和pEnd,让pStart指向字符串首部,让pEnd指向字符串尾部。 (2)利用循环从字符串两边对指针所指字符进行比较,当对应的两字符相等且两指针未超越对方时,使指针pStart向前移动一个字符位置(加1),使指针pEnd向后移动一个字符位置(减1),一旦发现两字符不等或两指针已互相超越(不可能是回文),则立即停止循环。 (3)根据退出循环时两指针的位置,判断字符串是否为回文。 在空白处填写适当的表达式或语句,使程序完整并符合题目要求。#include <stdio.h> #include <string.h> int main(void) { char str[80], *pStart, *pEnd; int len; printf("Input string:"); gets(str); len = __________; pStart = str; pEnd = ____________; while (__________________) { pStart++; pEnd--; } if (__________) { printf("No!\n"); } else { printf("Yes!\n"); } return 0; }
A、第9行: strlen(str) 第13行: str + len - 1 第15行: (*pStart == *pEnd) && (pStart < pEnd) 第21行: pStart < pEnd
B、第9行: sizeof(str) 第13行: str + len 第15行: (*pStart != *pEnd) && (pStart < pEnd) 第21行: pStart != pEnd
C、第9行: strlen(str) 第13行: str + len 第15行: (*pStart = *pEnd) && (pStart <= pend) 第21行: pstart="=" pend> D、第9行: sizeof(str) 第13行: str + len - 1 第15行: (*pStart == *pEnd) || (pStart < pEnd) 第21行: pStart <= pend>
本程序中,函数fun的功能是判断字符串是否是回文,若是回文,则返回1,主函数中输出YES;否则,函数返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而123312就不是回文。请在函数fun的花括号中填入你编写的若干语句。(注意:不改动程序的结构,不得增行或删行。)
#include
#define N 80
int fun (char *str)
{
}
main()
{ char s[N];
printf(“Enter a string : ”) ;
gets (s) ;
printf(“\n\n”) ;
puts (s) ;
if (fun (s))
printf (“YES\n”) ;
else
printf (“N0\n”) ;
nono ();
}
nono ()
{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件.*/
int i;
FILE *rf, *wf ;
char s[N] ;
rf = fopen (“bc.in”,“r”) ;
wf = fopen (“bc.out”,“w”) ;
for (i=0; i<10; i++ )
{ fscanf (rf, “%s”,s ) ;
if (fun (s ))
fprintf (wf, “%s YES\n”, s ) ;
Else
fprintf(wf, “%s NO\n”, s ) ;
}
fclose (rf) ;
fclose (wf) ;
}
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!