#include <stdio.h>int main() { char s[] = "1a2b3c"; int i; for (i = 0; s[i] != '\0'; i++) { if (s[i] >= '48' && s[i] <= '59') { printf("%c", s[i]); } } printf("\n"); return 0;}
时间: 2024-03-27 07:36:25 浏览: 21
这段代码存在逻辑错误,输出结果不符合预期。具体来说,代码中的判断条件 `s[i] >= '48' && s[i] <= '59'` 使用了字符常量 `'48'` 和 `'59'`,但是这两个字符常量实际上对应的 ASCII 码值并不是数字字符的编码。ASCII 码中的数字字符编码是从 `'0'` 到 `'9'`,对应的十进制 ASCII 码值是从 48 到 57。因此,判断条件应该修改为 `s[i] >= '0' && s[i] <= '9'`。
修改后的代码如下:
```
#include <stdio.h>
int main() {
char s[] = "1a2b3c";
int i;
for (i = 0; s[i] != '\0'; i++) {
if (s[i] >= '0' && s[i] <= '9') {
printf("%c", s[i]);
}
}
printf("\n");
return 0;
}
```
这段代码的作用是从字符串 `s` 中筛选出所有数字字符,并输出到终端。运行结果为 `123`。
阅读全文