题目描述
规定字符串中只包含字母和 * 号,本题中除了字符串前导的 * 号外,将其他位置的 * 全部删除。
要求:多组输入。
样例输入
****A*BC*DEF*G********
样例输出
****ABCDEFG
分析
以样例输入为例,要求保留A前边的 * 和A后边的非 * 部分,那么我们可以使用一个新的数组保留前边的 * ,对于后边的 * ,可以采用循环 + if 语句的形式设定一定的条件让非 * 存入刚刚提到的新的数组中,这样就实现了样例输出。代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
char line[1000] = { 0 }, array1[1000] = { 0 };
while (gets(line) != NULL)
{
j = 0;
for (i = 0; line[i] == '*'; i++)
array1[j++] = line[i];
for (; line[i] != '\0'; i++)
if (line[i] != '*')
array1[j++] = line[i];
array1[j] = '\0';
for (i = 0; i < j; i++)
printf("%c", array1[i]);
printf("\n");
}
return 0;
}
易错点
在设计while多组输入时要使用NULL而不是EOF,使用EOF会显示运行超时(time limit exceeded),在进行输出操作时把握好i与j的关系。