规定输人的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。 例如,字符串中的内容为“****A*BC*DEF*G**

admin2021-02-25  49

问题  规定输人的字符串中只包含字母和*号。请编写函数fun,其功能是:使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。
    例如,字符串中的内容为“****A*BC*DEF*G******,若n的值为4,删除后,字符串中的内容应为“****A*BC*DEF*G****”;若n的值为7,则字符串中的内容仍为“****A*BC*DEF*G******”。n的值在主函数中输入。编写函数时,不得使用C语言提供的字符串函数。
    注意:部分源程序给出如下。
    请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
    试题程序:
#include
void fun(char*a,int n)
{   
}
main()
{
    char s[81];int n;   
    printf(“Enter a string:\n”);
    gets(s);
    printf(“Enter n:”);scanf(“%d”,&n);
    fun(%n);
    printf(“The string after deleted:\n”);
puts(s);}

选项

答案void fun(char*a,int n) { int i=0,k=0; char*P,*t; p=t=a; while(*t) t++; t--; while(*t==’*’) {k++;t--;} if(k>n) {while(*p&&p
解析 通过while循环统计字符串尾部木号的个数,然后通过if语句比较尾部*号数是否多于n个,若大于则保留n个*号和其余字符。
转载请注明原文地址:https://kaotiyun.com/show/gmtp777K
0

最新回复(0)