假定输入的字符串中只包含字母和*号。请编写函数 fun(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。 注意:部分源程序给出如下。 请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。 试题程序; #include <stdio. h> #include <conio. h> void fun (char *a) { } main() { char s[81]; printf("Enter a string :\n"); gets (s); fun (s); printf ("The string after deleted: \n"); puts (s); }
参考答案:
解析:void fun (char *a) { char*p=a; while(*P==‘+’) p++; /*指针p指向字符串第一个字母*/ for(;*p!=‘\0’;p++,a++) *a=*p; /*从第—个字母开始,其后的字符都放入指针a所指的字符串中*/ *a=‘\0’; /*在字符串最后加上结束标记符*/ } 在前面的改错题和编程题中,相关试题已经出现好多次了,我们在此提供另一种解答方法。 #include<string.h> void fun (char *a) {char *p=a; while (*p==‘*’)p++; strcpy (a,p); }