niusouti.com

回文序列是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符串是否为回文序列。

题目

回文序列是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符串是否为回文序列。


相似考题
参考答案和解析
D
更多“回文序列是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符串是否为回文序列。”相关问题
  • 第1题:

    阅读以下说明和C程序代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    下面C程序代码的功能是:对于输入的一个正整数n(100≤n<1000),先判断其是否是回文数(正读反读都一样的数)。若不是,则将n与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278不是回文数,其反序数为872,相加后得到的1150还不是回文数,再将1150与其反序数511相加,得到的1661是回文数。

    函数int isPalm(long m)的功能是:将正整数m的各位数字取出存入数组中,然后判断其是否为回文数。若m是回文数则返回1,否则返回0。

    【C程序代码】

    include <stdio.h>

    include <stdlib.h>

    int isPalm(long m)

    { /*判断m是否为回文数*/

    int i = 0, k = 0;

    char str[32];

    while (m > 0) { /*从个位数开始逐个取出m的各位数字并存入字符数组str*/

    str[k++] =(1)+ '0';

    m = m / 10;

    }

    for(i = 0; i < k/2; i++) /*判断str中的k个数字字符序列是否是回文*/

    if ( str[i] != str[(2)] ) return 0;

    return 1;

    }

    int main ( )

    {

    long n, a, t;

    printf("input a positive integer:"); scanf("%ld",&n);

    if (n < 100 || n > =1000) return -1 ;

    while((3)) { /*n不是回文数时执行循环*/

    printf("%ld-> ", n);

    for(a = 0, t = n; t > 0; ) { /*计算n的反序数并存入a*/

    a =(4)*10 + t % 10; t = t / 10;

    } /*end of for*/

    n =(5); /*与反序数求和*/

    } /*end of while*/

    printf ("%id\n",n);

    system("pause"); return 0;

    }


    正确答案:(1) m%10或其等价表示 (2) k-1-i (3) !isPalm(n)或isPalm(n)!=1或isPalm(n)= =0 (4) a (5) n+a
    (1) m%10,或其等价表示 (2) k-1-i (3) !isPalm(n),或isPalm(n)!=1,或isPalm(n)= =0 (4) a (5) n+a 解析:本题考查C程序设计的基本能力。
    函数isPalm(long m)的功能是判断m是否为回文数,其方法是先将m的各位数字依次取出转换为对应的数字字符保存在数组str中,然后再判断str中的字符序列是否对称。代码如下:
    while(m>0){/*从个位数开始逐个取出m的各位数字并存入字符数组str*/
    str[k++] = m %10 +'0';
    m=m/10;
    }
    因此,空(1)处应填入“m%10",将数m的个位数字取出。以上while循环结束时,k的值即为m取初始值时的位数。
    若需判断str[0]、str[1]、…、str[k-1]中的k个数字字符序列是否对称,则应依次比较str[0]与str[k-1]、str[1]与str[k-2]、…str[k/2-1]与str[k2+1]是否相等,若都相等,则是回文数;若其中有一处不等,则不是回文数。代码如下:
    for(i=0;ik/2;i++)
    if ( str[i] !=str[(2)] )return 0;
    因此,空(2)处应填入“k-1-i”。
    根据题目描述,从最初输入的数开始,直到得到一个回文数时结束,因此对于数n,调用函数is Palm(n),根据返回值确定n是否为一个回文数,空(3)处应填入“!isPalm(n)”。
    为了求一个数t的反序数,可从其个位数字开始,依次取出其各位数字并进行组合。下面以t=345举例说明通过整除取余“%”、整除“/”取出各位数字并组合出543的过程。
    初始时:a=0t=345
    下一步:345%10=>5a*10+5=>a=5t/10=345/10=>t=34
    下一步:34%10=>4a*10+4=>a=54t/10=34/10=>t=3
    下一步:3%10=>3a*10+3=>a=543t/10=3/10=>t=0
    因此,可知空(4)处应填入“a”。
    最后数n与其反序数a相加得到新的数,继续产生回文数的过程。空(5)处应填入“n+a”。

  • 第2题:

    试题二(共 15 分)

    阅读以下说明和 C 程序代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

    [说明]

    下面 C 程序代码的功能是:对于输入的一个正整数 n(100≤n<1000) ,先判断其是否是回文数(正读反读都一样的数) 。若不是,则将 n 与其反序数相加,再判断得到的和数是否为回文数,若还不是,再将该和数与其反序数相加并进行判断,依此类推,直到得到一个回文数为止。例如,278 不是回文数,其反序数为 872,相加后得到的 1150还不是回文数,再将 1150 与其反序数 511 相加,得到的 1661 是回文数。 函数 int isPalm(long m)的功能是:将正整数 m的各位数字取出存入数组中,然后判断其是否为回文数。若 m是回文数则返回 1,否则返回 0。

    [C 程序代码]

    #include <stdio.h>

    #include <stdlib.h>

    int isPalm(long m)

    { /*判断 m是否为回文数*/

    int i = 0, k = 0;

    char str[32];

    while (m > 0) { /*从个位数开始逐个取出 m的各位数字并存入字符数组 str*/

    str[k++] = (1) + '0';

    m = m / 10;

    }

    for(i = 0; i < k/2; i++) /*判断 str中的 k 个数字字符序列是否是回文*/

    if ( str[i] != str[ (2) ] ) return 0;

    return 1;

    }

    int main( )

    {

    long n, a, t;

    printf("input a positive integer:"); scanf("%ld",&n);

    if (n < 100 || n > =1000) return -1 ;

    while( (3) ) { /*n 不是回文数时执行循环*/

    printf("%ld -> ", n);

    for(a = 0, t = n; t > 0; ) { /*计算 n 的反序数并存入 a*/

    a = (4) *10 + t % 10; t = t / 10;

    } /*end of for*/

    n = (5) ; /*与反序数求和*/

    } /*end of while*/

    printf("%ld\n",n);

    system("pause"); return 0;

    }


    正确答案:


  • 第3题:

    所谓“回文数”是指读一个自然数,从正方向读和反方向读,结果是一样的。例如:646,1551,891232198都认为是回文数。编一个程序,输入一个正整数,判定它是否为回文数。当输入的数为0时,则退出程序,否则继续循环执行程序。


    正确答案: ints,k;
    inti,j;
    int[]a=newint[20];
    boolpos;
    while(true)
    {
    s=-1;
    while(s<0)
    {
    Console.Write("请输入一个正整数或者只按一个数字0:");
    s=int.Parse(Console.ReadLine());
    if(s==0)return;
    }
    k=s;
    pos=true;
    i=-1;
    while(k>0)
    {
    i++;
    a[i]=k%10;
    k=k/10;
    }
    //注意:数组a的长度为(i+1)
    for(j=0;j<(i+1)/2;j++)
    if(a[j]!=a[i-j])
    {
    pos=false;
    break;
    }
    if(pos)Console.WriteLine("{0}是回文数。",s);
    elseConsole.WriteLine("{0}不是回文数。",s);
    }

  • 第4题:

    结构基因3’端的5’AATAAA3’序列为()。

    • A、转录终止信号
    • B、加尾信号
    • C、回文序列
    • D、剪接信号

    正确答案:B

  • 第5题:

    回文序列(phlindromic sequence)


    正确答案: 是指DNA碱基的反向重复序列,该片段的碱基序列受互补链之间正读反读都一样。

  • 第6题:

    回文字符串算法,不可以判断一串汉字字符串是否是回文。


    正确答案:正确

  • 第7题:

    Alu序列是()。

    • A、单一序列
    • B、高度重复序列
    • C、短分散核单元
    • D、长分散核单元
    • E、回文结构

    正确答案:C

  • 第8题:

    单选题
    Alu序列是()。
    A

    单一序列

    B

    高度重复序列

    C

    短分散核单元

    D

    长分散核单元

    E

    回文结构


    正确答案: A
    解析: 暂无解析

  • 第9题:

    判断题
    回文字符串算法,不可以判断一串汉字字符串是否是回文。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第10题:

    多选题
    回文字符串是正反都一样的英文字符串,那么下面不是回文字符串的应为()。
    A

    XYZZ

    B

    XYZXYZ

    C

    XXMXX

    D

    MMNMMN


    正确答案: A,C
    解析: 暂无解析

  • 第11题:

    判断题
    回文序列是一种没有间隔序列的反向重复序列。
    A

    B


    正确答案:
    解析: 暂无解析

  • 第12题:

    多选题
    以下属于转座因子的是()。
    A

    插入序列

    B

    Mu噬菌体

    C

    质粒

    D

    卫星DNA

    E

    回文序列


    正确答案: E,A
    解析: 暂无解析

  • 第13题:

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


    正确答案:
     

  • 第14题:

    回文序列


    正确答案: DNA片段上的一段所具有的反向互补序列,常是限制性酶切位点。

  • 第15题:

    回文序列是一种没有间隔序列的反向重复序列。


    正确答案:正确

  • 第16题:

    下列DNA序列属于回文结构的是()。

    • A、GAAACTGCTGTTTC
    • B、GAAACTGGTCAAAG
    • C、GAAACTGGTCTTTC
    • D、GAAACTGCAGTTTC

    正确答案:B

  • 第17题:

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

    • A、回文字符串的长度一定是奇数
    • B、回文字符串的长度一定是偶数
    • C、回文字符串的长度可以是奇数也可以是偶数
    • D、回文字符串只要求首尾字母是一样的

    正确答案:C

  • 第18题:

    以下属于转座因子的是()。

    • A、插入序列
    • B、Mu噬菌体
    • C、质粒
    • D、卫星DNA
    • E、回文序列

    正确答案:A,B

  • 第19题:

    原核生物基因转录终止子在终止点前均有()

    • A、回文结构
    • B、多聚A序列
    • C、TATA序列
    • D、多聚T序列

    正确答案:A

  • 第20题:

    多选题
    糖皮质激素类的甾醇受体()。
    A

    是同源二聚体

    B

    所结合的DNA回文序列的不同的

    C

    通常与同样的DNA回文序列结合,但组成回文序列的两段DNA间的序列不一样

    D

    与RXR形成异源二聚体与同向重复序列结合

    E

    因为对应的激素出现在核内,所以也被定位在细胞核中


    正确答案: A,C
    解析: 暂无解析

  • 第21题:

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

    回文字符串的长度一定是奇数

    B

    回文字符串的长度一定是偶数

    C

    回文字符串的长度可以是奇数也可以是偶数

    D

    回文字符串只要求首尾字母是一样的


    正确答案: C
    解析: 暂无解析

  • 第22题:

    多选题
    回文字符串是正反都一样的英文字符串,那么下面不属于回文字符串的是()。
    A

    aabb

    B

    aabbccdd

    C

    ABCABC

    D

    AABBB


    正确答案: D,C
    解析: 暂无解析

  • 第23题:

    问答题
    所谓“回文数”是指读一个自然数,从正方向读和反方向读,结果是一样的。例如:646,1551,891232198都认为是回文数。编一个程序,输入一个正整数,判定它是否为回文数。当输入的数为0时,则退出程序,否则继续循环执行程序。

    正确答案: ints,k;
    inti,j;
    int[]a=newint[20];
    boolpos;
    while(true)
    {
    s=-1;
    while(s<0)
    {
    Console.Write("请输入一个正整数或者只按一个数字0:");
    s=int.Parse(Console.ReadLine());
    if(s==0)return;
    }
    k=s;
    pos=true;
    i=-1;
    while(k>0)
    {
    i++;
    a[i]=k%10;
    k=k/10;
    }
    //注意:数组a的长度为(i+1)
    for(j=0;j<(i+1)/2;j++)
    if(a[j]!=a[i-j])
    {
    pos=false;
    break;
    }
    if(pos)Console.WriteLine("{0}是回文数。",s);
    elseConsole.WriteLine("{0}不是回文数。",s);
    }
    解析: 暂无解析

  • 第24题:

    问答题
    完全的回文序列具有两个基本的特点是什么?

    正确答案: (1)能够在中间划一个对称轴,两侧的序列两两对称互补配对;
    (2)两条互补链的 5’ 3’的序列组成相同,即将一条链旋转 180°,则两条链重叠。
    解析: 暂无解析