itgle.com
更多“以下函数的功能是删除字符串s中的所有数字字符。请填空。 void dele (char *s){ int n=O; for(i=0; ”相关问题
  • 第1题:

    以下程序的功能是输出a数组中所有字符串,请填空。

    #include <stdio.h>

    main( )

    { char *a[ ]={”ABC”,”DEFGH”,”IJ”,”KLMNOP”};

    int i=0;

    for(;i<4; i++) printf(”%s\n【 13 】 );

    }


    正确答案:
    【答案】a[i]
    【知识点】指针数组的使用
    【解析】在指针数组中,a[i]即为二维数组的行指针,即每个字符串的首地址。

  • 第2题:

    下列给定程序中,函数fun()的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。

    请改正函数fun()中的错误,使它能得出正确的结果。

    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

    试题程序:

    include <stdio.h>

    include <conio.h>

    void fun(char *s)

    {int i,j;

    for(i=0,j=0; s[i]!= '\0'; i++)

    if(s[i]>= '0'&&s[i]<= '9')

    /*************found**************/

    s[j]=s[i];

    /*************found**************/

    s[j]="\0";

    }

    main()

    {char item[80];

    clrscr();

    printf("\nEnter a string: ");gets(item);

    printf("\n\nThe string is:\%s\n", item);

    fun(item);

    printf("\n\nThe string of changing is :

    \%s\n",item);

    }


    正确答案:(1)错误;s[j]=s[i]; 正确:s[j++]=s[i]; (2) 错误:s[j]="\0"; 正确:s[j]='\0';
    (1)错误;s[j]=s[i]; 正确:s[j++]=s[i]; (2) 错误:s[j]="\0"; 正确:s[j]='\0'; 解析:有循环条件if(s[i]>='0'&&s[i]='9')以及题目要求“依次取出字符串中所有的数字字符”可知,s[j]=s[i];表述错误。s[j]="\0";中是一个常识性语法错误,学习者只要在平时训练的时候注意一下就可以了。

  • 第3题:

    下面程序段的功能是将字符串s中所有的字符c删除,请填空()。 char s[80]; int i,j; gets(s); for(i=j=0;s[i]!='0';i++) if(s[i]!='c') (); s[j]='0'; puts(s);


    C

  • 第4题:

    以下程序用以删除字符串中所有的空格,请填空。

    inculde <stdio.h>

    main()

    { char s[100]=(“our teacher teach c language!”);int I,j;

    For(i=j=0;s[i]!=’’)

    iF(s[i];s[i]!=’\0’) {s[j]=s[i];j ++}

    s[j]=【 】

    printF(“index=%d\n”,s-a);

    }


    正确答案:‘\0’
    ‘\0’ 解析:程序使用变量i遍历字符数组s中的所有字符,使用变量j存放非空格字符。当将所有的非空格字符重新存放到字符数组s中后,应添加字符串结束标志'\0'。

  • 第5题:

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

    [说明1]

    函数void fun(char*w,char x,int*n)用来在w数组中插入x,w数组中的数已按由小到大顺序存放,n指存储单元中存放数组中数据的个数,插入后数组中的数仍有序。

    [C函数1]

    void fun(char*W,char x,int*n)

    { int i,P;

    p=0;

    w[*n]=x;

    while(x>w[p]) (1) ;

    for(i=*n,i>p;i--)w[i]=(2);

    w[p]=x;

    ++*n;

    }

    [说明2]

    函数void revstr(char*s)将字符串s逆置。例如:字符串“abcde”,经过逆置后变为“edcba”。

    [C函数2]

    void revstr(char*s)

    { char*p,c;

    if(s==NULL)return;

    p=(3); /*p指向字符串s的最后一个有效字符*/

    while(s<p){ /*交换并移动指针*/

    C=*s;

    (4)=*p;

    (5)=c;

    }

    }


    正确答案:(1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--)
    (1) p++ (2) w[i-1] (3) s+strlen(s)-1 (4) *s++或*(s++) (5) *p-或*(p--) 解析:函数1的fun()中的while循环是为了找到x的插入位置,因此(1)填“p++”,for循环是移动数组中的元素,因此(2)填“w[i-1]”。
    对于函数2,设字符串的长度为n,则该函数的思想为将*(s+j)与*(s+n-1+i)对换,i=0....n/2。采用指针来实现,s为起始地址,p定位为最后一个字符的位置,所以空(3)应填“s+strlen(s)-1”;采用*s与*p交换后为s++与P--。即空(4)填“*s++”或“*(s++)”,空(5)填“*p-”或“*(p--)”。