【程序改错】 题目:假定输入的字符串中只包含字母和*号。编写程序只删除字符串的前面*号。例如,水水*CFF***,删除后,字符串中的字符为ACF*F*G***** 程序中共有3条错误语句,请改正错误。 注意:不可以增加或删除程序行,也不可以更改程序的结构。 一*/ #include<stdio.h>#include<string.h> void fun(char a[]); main()
时间: 2023-07-23 20:31:07 浏览: 91
【改错后程序】
```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; i <= j; i++) // 错误3:应该是i<=j,因为只处理前面的*号
{
if (a[i] == '*')
{
a[i] = a[j];
a[j] = '*';
while (a[j] == '*')
{
j--;
}
}
}
}
```
相关问题
【程序改错】 题目:假定输入的字符串中只包含字母和号。编写程序只删除字符串的前面号。例如,****ACFF**,删除后,字符串中的字符为ACFF** 程序中共有3条错误语句,请改正错误。 注意:不可以增加或删除程序行,也不可以更改程序的结构。 一*/ #include<stdio.h>#include<string.h> void fun(char a[]); main()
【改错后程序】
```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';
}
```
按下列要求进行改错编辑,使如下程序能正确执行。 ss=input(“请输入字符串:”) while ss = ”: n=0 for x in ss: if 'a'< and <'z'. n=n+1 print('小写字母的数量为:'n) ss=int (input(“请输入字符串:”) 程序功能:用户输入一串字符,统计其中小亏字母的数量,并输出统计结果。不断重复上达过程,直到用户输入“stop”为止。 1、程序中有三处错误(语法错误或者逻辑错误),请改正,使程序能正常运行并输出结果。 2.正确的程序运行结果如下图所示: 请输入宇符串:48djdj 小与字母的数量为:4 请输入字符串:48FYTF 小写字母的数量为:0 请输入字符串:stop
以下是改正后的程序代码:
```python
ss = input("请输入字符串:")
while ss != "stop":
n = 0
for x in ss:
if 'a' < x < 'z':
n = n + 1
print('小写字母的数量为:', n)
ss = input("请输入字符串:")
```
改错说明:
1. 第一行代码中,输入函数的括号中应该是英文输入法的双引号,而不是中文输入法的双引号。
2. 第一行代码应该放在 while 循环的外面,否则在第一次循环时就无法接收到用户输入的字符串。
3. 第二行代码中,while 循环的循环条件应该是 ss != "stop",即只要用户没有输入 "stop",就一直进行循环。
4. 在第四行代码中,if 语句的判断条件应该是 x > 'a' and x < 'z',即当前字符是小写字母时才进行计数。
5. 在第六行代码中,print 函数的括号中应该是英文输入法的逗号,而不是中文输入法的顿号。
6. 在第七行代码中,应该再次接收用户输入的字符串,以进行下一轮循环。同时,输入函数的括号中应该是英文输入法的双引号,而不是中文输入法的双引号。
阅读全文