问答题 1.  假定输入的字符串中只包含字母和“*”号。请编写函数proc(),它的功能是:除了尾部的“*”号之外,将字符串中其他“*”号全部删除。形参p已指向字符串中的最后一个字母。在编写函数时,不得使用C语言的字符串函数。
    例如,若字符串的内容为“****a*bc*def*g****”,删除后,字符串的内容应当是“abcdefg****”。
    注意:部分源程序给出如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
    试题程序:
    #include <conio.h>
    #include <stdio.h>
    void proc(char *str, char *p)
    {
    }
    void main()
    {
    char str[81], *t;
    printf("Enter a string:<n");
    gets(str);
    t=str;
    while(*t)
    t++;
    t--;  //指针t指向字符串尾部
    while(*t=='*')
    t--;  //指针t指向最后一个字母
    proc(str,t);
    printf("The string after deleted:<n");
    puts(str);
    }
【正确答案】void proc(char *str, char *p)
   char *t=str;
   for(;t<=p;t++)
   if(*t!='*')  //把前面不是“*”号的字符放到数组a中,通过t的移动来实现
   *(str++)=*t;
   for(;*t!='<0';t++)
   *(str++)=*t;  //把尾部的“*”号接到其后面,当*t为'<0'时结束
   *str='<0';  //题目要求数组a中存放字符,因此用'<0'作为结束标志
   }
【答案解析】 题目要求除了尾部的“*”号之外,将字符串中的其他“*”号全部删除。首先,将所有不是“*”号的字符放在字符串str中;然后,将尾部的“*”号接在字符的后面;最后,为字符串str加上结束符。