itgle.com

●试题三请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。试题程序:#include<stdio.h>#include<conio.h>int m;void fun(char *s){int i=0,j=0;char *p=s;while(*(p+i)){if(*(p+i)>=′A′

题目

●试题三

请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

试题程序:

#include<stdio.h>

#include<conio.h>

int m;

void fun(char *s)

{

int i=0,j=0;

char *p=s;

while(*(p+i))

{

if(*(p+i)>=′A′&&*(p+i)<=′Z′)

{

(1) ;

}

(2) ;

}

s[j]=′\0′;

(3) ;

}

main()

{

char str[80];

clrscr();

printf("\nEnter a string:");

gets(str);

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

fun(str);

printf("\n\nThe string of changing

is:\%s\n",str);

printf("\n\nThe length of changed string

is:\%d\n",m);

}


相似考题
更多“●试题三 请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在 ”相关问题
  • 第1题:

    假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

    例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。

    注意:部分源程序在文件PROGl.C文件中。

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


    正确答案:
    解析:该程序功能是将字符串尾部的“*”号全部删除,前面和中间的“*”号不删除。本题的解题过程首先确定由串尾开始的第一个非“*”位置,将由头开始到此位置的字符拷贝到字符串。

  • 第2题:

    规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.


    正确答案:
    程序设计题解析:【考点分析】本题考查:指针型变最定义;wh丑e循环语句;语句条件表达式;字符串结束标识‘\0’。【解题思路】函数fun的功能:除了字符串前导的*号之外,将串中其他+号全部删除。【解答本题】(1)定义一个临时指针P,初始指向原串首地址;(2)利用循环语句把字符串前导*号拷贝到原串;(3)继续移动指针,把串中和串尾的非*号字符拷贝到原串;(4)为修改后的字符串赋结束字符‘、O’。【解题宝典】要删除字符串中的指定字符,我们通常采用保留非指定字符的方法。可以将非指定字符保留在原串,即将需要保留的字符从原串的起始位置重新赋值;也可以保留到新串,即新建一个字符串,存放要保留的字符。

  • 第3题:

    请补充fun()函数,该函数的功能是:把字符的ASCII码中为奇数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输人,其长度作为参数传人fun()函数。

    例如,输入“abcdef”,则输出“bdf”。

    注意:部分源程序给出如下。

    请勿改动main()函数和其他函数中的任何内容,仅在mare()函数的横线上填入所编写的若干表达式或语句。

    试题程序:


    正确答案:


    【解析】先判断ASCⅡ码的奇偶。
    第一空:根据主函数“fun(str,len);”调用语句,其中len为字符串str的长度,用来控制循环。根据主函数中对应的调用语句,补全fun()函数定义,第一空填“fun(chars[],intn)”。
    第二空:“s[j++]=s[i];”语句中j的变量在使用前要对其取值进行初始化,因为数组下标是由0开始的,初始化值为0,所以第二空填“j-0”。
    第三空:新生成的字符串要加尾符标志,所以第三空填“s[j]=ˊ\0ˊ”。

  • 第4题:

    请补充函数fun(),该函数的功能是:把ASCⅡ码为偶数的字符从字符串s打中删除,结果仍然保存在字符串srt中,字符串str从键盘输入,其长度作为参数传入函数fun()。

    例如,输入“abcdef”,输出“ace”。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    inc lude< stdio, h>

    define N 80

    【 】

    {

    int i, j;

    【 】

    for (i=0;i<n;i++)

    {

    if (s [i] %2!=0)

    s [j++]=s [i];

    }

    【 】;

    }

    main ( )

    {

    int i=0, strlen=0;

    char str[N];

    clrscr ();

    printf ("\nInput a string:\n");

    gets (str);

    while (str [i] !=' \0' )

    {

    strlen++;

    i++;

    }

    fun (str, strlen);

    printf("\n*** display string ***\n");

    puts (str);

    }


    正确答案:void fun(char s[]int n) j=0 s[j]='\0'
    void fun(char s[],int n) j=0 s[j]='\0' 解析:第一空:由主函数main()调用fun()函数的格式可以知道,fun()函数没有返回值,第二个参数是字符数组,第二个参数是整型变量。第二空:变量j声明时没有初始化,所以在使用j之前要将它初始化为0。第三空:当把所有ASCⅡ码为偶数的字符都存入字符串s中后,要在最后加上‘\0’,表示字符串的结束。

  • 第5题:

    请补充函数proc(),该函数的功能是:删除字符数组中小于指定字符的字符,指定字符从键盘输入,结果仍保存在原数组中。 例如,输人“abcdefghij”,指定字符为“f”,则结果输出“fghij”。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。 试题程序:


    正确答案:
    【l】i++【2】str[j++]=str[i]【3】str[j]=ˊ\0ˊ
    【解析】要删除字符串中小于指定字符的字符,就要把字符串中每一个字符跟指定字符相比较,小于指定字符的字符不予处理,因此【l】处填“i++”;把大于等于指定字符的字符保存在原字符串中,因此【2】处填“str[j++]=str[i]”;处理完整个字符串后.为新生成的字符串添加结束符,因此【3】处填“str[j]=ˊ\0ˊ”。