输入一个字符串保存到数组str中,将str中的数字字符存储到数组tOrigin中,并将其转换为整数输出,用k记录字符串中数字字符的个数。例如:用户输入字符串1243abc3,则将12433取出以整数形式输出。阅读程序,找出其中的错误,并改正之。 #include <math.h> #include <stdio.h> void fun(char *s, char *t, int k) { int i; k = 0; for (i = 0; s[i]; i++) if (0 <= s[i] && s[I] <= 9) { t[*k] = s[i]; *k += 1; } } void main() { char str[100], tOrigin[9]; long int n; int i, k; printf("Please enter string s:"); scanf("%s", str); fun(str, tOrigin, &k); for (i = 0; i < k; i++) n += (tOrigin [k - 1 - i] - '0') * pow(10, i); printf("The result is: %d", n); }
时间: 2024-01-17 16:06:09 浏览: 39
程序中有以下错误:
1. `fun` 函数的第三个参数应该是传递的地址,而不是传递值,应该改为 `void fun(char *s, char *t, int *k)`。
2. 在 `fun` 函数中,判断数字字符的条件应该是 `s[i] >= '0' && s[i] <= '9'`,而不是 `0 <= s[i] && s[I] <= 9`。
3. 在 `main` 函数中,应该初始化变量 `n` 和 `k`,否则会出现未定义的行为。
修改后的程序如下:
```
#include <math.h>
#include <stdio.h>
void fun(char *s, char *t, int *k) {
int i;
*k = 0;
for (i = 0; s[i]; i++)
if (s[i] >= '0' && s[i] <= '9') {
t[*k] = s[i];
(*k)++;
}
}
int main() {
char str[100], tOrigin[9];
long int n = 0;
int i, k = 0;
printf("Please enter string s:");
scanf("%s", str);
fun(str, tOrigin, &k);
for (i = 0; i < k; i++)
n += (tOrigin[k - 1 - i] - '0') * pow(10, i);
printf("The result is: %ld\n", n);
return 0;
}
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)