|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目链接:https://ac.nowcoder.com/acm/contest/19305/1040
#include <stdio.h>
int main()
{
char buf[1000000]="";
fgets(buf,sizeof(buf),stdin);
for(int i=0;i<sizeof(buf);i++)
{
if(buf[i]=='5')
{
buf[i]='*';
}
}
printf("%s\n",buf);
return 0;
}
只能通过73%,不知道该怎么改了
这道题目是牛客网上的编程题目"YoungManDon'tSayFive"。
根据题目,我们需要将输入的字符串中的所有5替换成*,然后输出替换后的字符串。
你的代码有两个问题:
1. 在判断字符是否为5时,应该使用 buf[ i] 而不是 buf 。
2. 在替换字符时,应该使用单引号 ' ' 而不是双引号 " " 。
修改后的代码如下:
- #include <stdio.h>
- int main()
- {
- char buf[1000000] = "";
- fgets(buf, sizeof(buf), stdin);
- for (int i = 0; i < sizeof(buf); i++)
- {
- if (buf[ i] == '5')
- {
- buf[ i] = '*';
- }
- }
- printf("%s\n", buf);
- return 0;
- }
复制代码
注意,这个代码仍然存在一个问题,就是在输入字符串长度超过1000000时会出现错误。可以使用动态内存分配来解决这个问题。
|
|