我正在尝试创建一个程序,将一个字符串作为输入,并用*符号替换所有元音.因此,对于"hello world",star_vowels应返回"h*ll*w*rld".
到目前为止我的代码是:
int star_vowels(char s[]){
int j;
j = 0;
while (s[j] != '0'){
j++;
if (s[j] = 'a' || s[j] == 'e' || s[j] == 'i' || s[j] == 'o' || s[j] == 'u'){
putchar('*');
} else {
putchar(j);
}
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码有很多问题.
1)while (s[j] != '0')
我很确定你想要检查NUL字符,而不是字符常数为零.更改'0'到'\0'
2)j++
在查看数组的第0个索引之前,您正在递增j.如果你在s [0]有一个元音,那就错过了.移动j++到while循环的最底部,就在结束括号之前.
3)当您应该使用相等运算符时,s[j] = 'a'
您正在使用赋值运算=符==.使用赋值运算符是合法的C代码,因此将进行编译.不幸的是它会返回true,你最终会用星号替换你的所有角色
4)putchar(j);
当你真的想要输出s [j](你的角色)时,你试图输出'j'(你的迭代器).
5)return 0
就像在#2中一样,你的return语句位于错误的位置.你应该在while循环中,它应该在它之外.你编写它的方式,while循环只会在你的函数超出范围之前执行第一次迭代.
int star_vowels(char s[]) {
int j = 0;
while (s[j] != '\0'){
if (s[j] == 'a' || s[j] == 'e' || s[j] == 'i' || s[j] == 'o' || s[j] == 'u') {
putchar('*');
} else {
putchar(s[j]);
}
j++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32728 次 |
| 最近记录: |