假定输人的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。 例如,若字符串中的内容为****a*bc*def*

admin2013-03-25  19

问题 假定输人的字符串中只包含字母和*号。请编写函数proc(),它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。
    例如,若字符串中的内容为****a*bc*def*g****,删除后,字符串中的内容应当是abcdefg****。
    注意:部分源程序给出如下。
    请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
    试题程序:
#include
#include
void proc(char*str,char*p)
{
}
void main()
{
  char str[81],*t;
  printf(”Enter a string:\n”);
  gets(str);
  t:==str 0
  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加上结束符。
转载请注明原文地址:https://kaotiyun.com/show/VXJp777K
0

最新回复(0)