看了帖子: https://tieba.baidu.com/p/9591429381
讨论洛谷中的【B2135 单词替换】问题,发现第一个程序只有3个AC,第二个程序全部AC,找了半天,没有发现第一个程序的什么地方有问题,请大神帮忙!

第1个程序


第2个程序


第1个程序:
#include <stdio.h>
#include <string.h>
char a[200][101], b[101], c[101];
int main() {
int n = 0, q = 0;
char ch;
while (scanf("%c", &ch)==1 && ch != '\n') {
if (ch == ' ') {
a[n++][q] = '\0'; // 结束当前单词
q = 0;
} else {
a[n][q++] = ch;
}
}
a[n++][q] = '\0'; // 处理最后一个单词
scanf("%s%s", b, c);
// 替换输出
for (int i = 0; i < n; i++) {
if(i) printf(" ");
if (strcmp(a[i], b) == 0) {
printf("%s",c);
} else {
printf("%s",a[i]);
}
}
printf("\n");
return 0;
}
第2个程序
#include <stdio.h>
#include <string.h>
char a[200][101],b[101],c[101];
int main() {
int n=0;
char ch;
do {
scanf("%s",a[n]);
++n;
} while((ch=getchar())==' ');
scanf("%s%s",b,c);
// 替换输出
for (int i = 0; i < n; i++) {
if(i) printf(" ");
if (strcmp(a[i], b) == 0) {
printf("%s",c);
} else {
printf("%s",a[i]);
}
}
printf("\n");
return 0;
}
讨论洛谷中的【B2135 单词替换】问题,发现第一个程序只有3个AC,第二个程序全部AC,找了半天,没有发现第一个程序的什么地方有问题,请大神帮忙!

第1个程序


第2个程序


第1个程序:
#include <stdio.h>
#include <string.h>
char a[200][101], b[101], c[101];
int main() {
int n = 0, q = 0;
char ch;
while (scanf("%c", &ch)==1 && ch != '\n') {
if (ch == ' ') {
a[n++][q] = '\0'; // 结束当前单词
q = 0;
} else {
a[n][q++] = ch;
}
}
a[n++][q] = '\0'; // 处理最后一个单词
scanf("%s%s", b, c);
// 替换输出
for (int i = 0; i < n; i++) {
if(i) printf(" ");
if (strcmp(a[i], b) == 0) {
printf("%s",c);
} else {
printf("%s",a[i]);
}
}
printf("\n");
return 0;
}
第2个程序
#include <stdio.h>
#include <string.h>
char a[200][101],b[101],c[101];
int main() {
int n=0;
char ch;
do {
scanf("%s",a[n]);
++n;
} while((ch=getchar())==' ');
scanf("%s%s",b,c);
// 替换输出
for (int i = 0; i < n; i++) {
if(i) printf(" ");
if (strcmp(a[i], b) == 0) {
printf("%s",c);
} else {
printf("%s",a[i]);
}
}
printf("\n");
return 0;
}