【程序改错】 题目:假定输入的字符串中只包含字母和号。编写程序只删除字符串的前面号。例如,****ACFF**,删除后,字符串中的字符为ACFF** 程序中共有3条错误语句,请改正错误。 注意:不可以增加或删除程序行,也不可以更改程序的结构。 一*/ #include<stdio.h>#include<string.h> void fun(char a[]); main()
时间: 2023-11-14 12:25:26 浏览: 119
除了尾部的*号之外,将字符串中其它*号全部删除。
5星 · 资源好评率100%
【改错后程序】
```c
#include <stdio.h>
#include <string.h>
void fun(char a[]);
int main()
{
char str[100];
printf("请输入一个字符串(只包含字母和*号):");
scanf("%s", str);
fun(str);
printf("处理后的字符串为:%s\n", str);
return 0;
}
void fun(char a[])
{
int i, j;
j = strlen(a) - 1; // 错误1:应该是strlen(a)-1,因为下标从0开始计算
while (a[j] == '*')
{
j--; // 错误2:应该是j--,因为要删除前面的*号
}
for (i = 0; a[i] == '*' && i <= j; i++); // 错误3:应该在for循环中加上a[i] == '*'的判断条件,并且要加上分号
for (; i <= j; i++)
{
a[i - j + j - 1] = a[i];
}
a[i - j + j - 1] = '\0';
}
```
阅读全文