#include <stdio.h> #include <math.h> int main() { char a[100],b[100]; int i=0,k,l,flag=0; while ((a[i]=getchar())!='\n'){ i++; } a[i]='\0'; for(k=0;k<i;k++){ int x=0; for(l=0;l<=flag;l++){ if(a[k]==b[l]){ x=1; } } if(x==0&&(a[k]>='A'&&a[k]<='Z')){ b[flag]=a[k]; flag++; } } if(flag==0){ printf("Not Found"); } else{ for(k=0;k<=flag;k++){ printf("%c",b[k]); } } }为什么输入FONTNAME and FILENAME\n的时候部分正确
时间: 2024-03-17 18:43:54 浏览: 54
这是因为你的程序在输出结果时出现了错误。在最后一个 `for` 循环中,你打印了 `flag + 1` 个字符,而实际上数组 `b` 只有 `flag` 个元素,因此会输出一些无法确定的字符。你可以将最后一个 `for` 循环的条件修改为 `k < flag`,这样就只会输出 `flag` 个字符了。修改后的代码如下:
```c
#include <stdio.h>
#include <math.h>
int main() {
char a[100], b[100];
int i = 0, k, l, flag = 0;
while ((a[i] = getchar()) != '\n') {
i++;
}
a[i] = '\0';
for (k = 0; k < i; k++) {
int x = 0;
for (l = 0; l <= flag; l++) {
if (a[k] == b[l]) {
x = 1;
}
}
if (x == 0 && (a[k] >= 'A' && a[k] <= 'Z')) {
b[flag] = a[k];
flag++;
}
}
if (flag == 0) {
printf("Not Found");
} else {
for (k = 0; k < flag; k++) {
printf("%c", b[k]);
}
}
return 0;
}
```
现在你可以再次输入 `FONTNAME and FILENAME` 测试代码的正确性。
阅读全文