算法设计与分析

关于回文字符串,描述正确的是()。A、回文字符串的长度一定是奇数B、回文字符串的长度一定是偶数C、回文字符串的长度可以是奇数也可以是偶数D、回文字符串只要求首尾字母是一样的

题目

关于回文字符串,描述正确的是()。

  • A、回文字符串的长度一定是奇数
  • B、回文字符串的长度一定是偶数
  • C、回文字符串的长度可以是奇数也可以是偶数
  • D、回文字符串只要求首尾字母是一样的
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

如下哪个函数可以返回文本字符串所指定的引用()。

A、Column

B、Row

C、Index

D、Indirect


答案:C

第2题:

请编写函数fun(),该函数的功能是判断字符串是否为回文,若是则函数返回1,主函数中输出YES:否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。

例如:字符串LEVEL是回文,而字符串123312就不是回文。

注意;部分源程序已存在文件test26_.cpp中。

请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。

文件test26_2.cpp的内容如下:

include<iostream.h>

include<stdio.h>

define N 80

int fun(char*str)

{

}

void main()

{char s[N];

cout<<"Enter a string:"<<endl;

gets{s);

cout<<"\n\n";

puts(s);

if(fun(s))

cout<<"YES\n";

else

cout<<"NO\n";

}


正确答案:int fun(char*str) {int in=Ofg=1; char*p=str; while(*p) {n++; p++;} for(i=0;in/2;i++) if(str[i]==str[n-1-i]) ; else {fg=O;break;} return fg; }
int fun(char*str) {int i,n=O,fg=1; char*p=str; while(*p) {n++; p++;} for(i=0;in/2;i++) if(str[i]==str[n-1-i]) ; else {fg=O;break;} return fg; } 解析:解答本题的主要思路是:首先要利用循环中指针的移动来求得字符串的长度n,然后用一个for循环依次取得数组中的前半部分元素,用取得的前半部分内的元素逐个与后半部分内的对应位置的元素进行比较,如果相同,不做任何工作,接着取下一个元素,继续比较:如果不相同,可以判断该字符串肯定不是回文,就给标志变量fg赋值0(fg的初始值为1)。最终把fg作为函数的返回值返回(fg值为1表明是回文,fg值为0表明不是回文)。

第3题:

●试题二

阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。

【函数2.1说明】

函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:"LEVEL"是回文字符串,而"LEVAL"不是。

【函数2.1】

int palindrome(char s[])

{char*pi,*pj;

pi=s;pj=s+strlen(s)-1;

while(pi<pj && (1) ){

pi++;pj--;

}

if( (2) )return -1;

else return 0;

}

【函数2.2说明】

函数f(char*str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。

例如若str的值为"33123333435",del的值为"3",调用此函数后,将输出3个子字符串,分别为"12"、"4"和"5"。

【函数2.2】

void f(char*str,char del)

{int i ,j ,len;

len=strlen(str);

i=0;

while(i<len){

while( (3) )i++;/*忽略连续的标志字符*/

/*寻找从str[i]开始直到标志字符出现的一个子字符串*/

j=i+1;

while(str[j]!=del && str[j]!=′\0′)j++;

(4) =′\0′;/*给找到的字符序列置字符串结束标志*/

printf(″%s\t″,&str[i]);

(5) ;

}

}


正确答案:

●试题二

【答案】(1)*pi==*pj(2)pi<pj或者等价表达式(3)stri==del(4)strj(5)i=j+1

【解析】(1)指针pi从左往右移动,指针pj从右往左移动,每移动一次,判断二者指向的元素是否相等,所以此处应填入判断语句*pi==*pj(2)pi如果能移动到pj右面,说明字符串是回文字符串,否则返回-1,所以此处应填入pi<pj或者其他等价表达式。(3)此处表达式判断当前字符是否等于标志字符del,即填入 stri==del(4)此处表达式为符合要求的字符串置结束标志,此时j已指向最后,所以应填入strj]即可。(5)此处语句是修改i指针进行下一次循环,所以应填入i=j+1

 

第4题:

下面哪个函数用于返回文本字符串中的字符数()。

A、LEN()
B、RIGHT()
C、LOOKUP()
D、MONTH()

答案:A
解析:
LEN()函数用于返回文本字符串中的字符数。

第5题:

写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1


正确答案:
 

第6题:

如下哪个函数表示返回文本字符串中的字符个数()。

A.substitute

B.match

C.sum

D.len


答案:D

第7题:

给定程序中,函数fun的功能是:判断形参s所指字符串是否是”回文”(Palindrome),若是,函数返回值为1;不是,函数返回值为0。”回文”是正读和反读都一样的字符串:不区分大小写字母)。

例如,LEVEL和Level是”回文”,而LEVLEV不是”回文”。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK.1.C中。

不得增行或删行,也不得更改程序的结构!


正确答案:(1)s (2)-- (3)return O
(1)s (2)-- (3)return O 解析:函数fun的功能是:判断形参s所指字符串是否是”回文”,即比较第一个字符和最后一个字符是否相同,第二个字符和倒数第二个字符是否相同,依此类推,可以用循环来实现。

第8题:

阅读下列函数说明和C函数,将应填入(n)处的字句写在对应栏内。

【函数2.1说明】

函数palindrome(char s[])的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。

【函数2.1】

int palindrome( char s[ ] )

{ char * pi, * pj;

pi=s; pj=s+strlen(s)-1;

while( pi<pj&&(1)){

pi ++ ;pj --

}

if((2))return -1;

else return 0;

}

【函数2.2说明】

函数f(char * str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。

例如若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”、“4”和“5”。

【函数2.2】

void f( char * str, char del)

{ int i ,j ,len;

len = strlen (str)

i=0;

while(i < len) {

while((3))i++; /*忽略连续的标志字符*/

/*寻找从str[i]开始直到标志字符出现的一个子字符串*/

j=i+1;

while(str[j] != del && str[j] ! = '\0')j ++

(4): '\0'; /*给找到的字符序列置字符串结束标志*/

printf("%s\t",&str[i]);

(5);

}

}


正确答案:(1)*pi==*pj (2)pipj或者等价表达式 (3)str[i]==del (4)str[j] (5)i=j+1
(1)*pi==*pj (2)pipj或者等价表达式 (3)str[i]==del (4)str[j] (5)i=j+1 解析:(1)指针pi从左往右移动,指针pj从右往左移动,每移动一次,判断二者指向的元素是否相等,所以此处应填入判断语句*pi= =*pj。(2)pi如果能移动到pj右面,说明字符串是回文字符串,否则返回-1,所以此处应填入pipj或者其他等价表达式。(3)此处表达式判断当前字符是否等于标志字符del,即填入str[i]==del。(4)此处表达式为符合要求的字符串置结束标志,此时j已指向最后,所以应填入str[j]即可。(5)此处语句是修改i指针进行下一次循环,所以应填入i=j+1。

第9题:

试题3

本程序中,函数fun的功能是判断字符串是否是回文,若是回文,则返回1,主函数中输出YES;否则,函数返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而123312就不是回文。请在函数fun的花括号中填入你编写的若干语句。(注意:不改动程序的结构,不得增行或删行。)

#include <stdio.h>

#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) ;

}


正确答案:
试题3分析
**********************
本题中函数的功能是判断字符串是否是回文,若是回文,则返回1;否则,函数返回0。
要判断字符串是否是回文,我们可以将首尾两边字符进行比较,如果想等,则是回文,如果有不等的情况,说明不是回文;
试题3答案
*************************
完整的fun函数如下。
int  fun ( char  *str )
  { int  i,j,k;
    j=strlen (str);
    k=1;
    for (i=0;i<j/2-1;i++)
      if(* (str+i) != * (str+j-i-1))
        { k=0;
         break;
        }
     return (k) ;
   }

第10题:

用于返回文本字符串中从指定位置开始的指定数目的字符的函数是()。

A:RIGHT
B:MID
C:LEN
D:LEFT

答案:B
解析:
MID用于返回文本字符串中从指定位置开始的指定数目的字符。

更多相关问题