一道C语言题!会的请看看,谢谢

2025-02-26 06:10:05
推荐回答(3个)
回答1:

if (str1[i] >= 0 && str1[i] <= 9)这一句错了!
应该为if (str1[i] >= '0' && str1[i] <= '9')。

最后的输出printf("\nshu zi ge shu wei:%d", j + 1);
中j+1改为j,不需要再加1了!

还有建议前面定义str2[N]时进行赋值str2[N]={0},
否则程序的输出结果后会跟有怪异字符,不信你试试!

回答2:

#include

#define N 128

int main(void)
{
char str1[N], str2[N];
int i, j;

printf("Please input string:");
gets(str1); /*输入有错误,要改成*/

for (i = 0, j = 0; i < N; i++)
{
if (str1[i] >= 0 && str1[i] <= 9)
{
str2[j] = str1[i];
j++;
}
}

str2[j + 1] = '\0';

printf("\nshu zi ge shu wei:%d", j + 1);
puts(str2);/*输出也有问题,改成*/

return 0;
}

回答3:

#include

#define N 128

int main(void)
{
char str1[N], str2[N];
int i, j;

printf("Please input string:");
scanf("%s", &str1);
for (i = 0, j = 0; i < N; i++)
{
if (str1[i] >= '0' && str1[i] <= '9')
{
str2[j] = str1[i];
j++;
}
}

str2[j] = '\0';

printf("\nshu zi ge shu wei:%d", j );
printf("\nshu zi wei:%s", str2);
return 0;
}