c语言问题:输入一个字符串,内有数字和非数字字符,例如:a123x456 17960?

2024年11月22日 07:39
有4个网友回答
网友(1):

其实不是很复杂,但是不能直接很容易的读入一个整数了。
程序就不贴了,大概讲一下思路吧。
你得手工一个一个读入字符,然后准备一个int,比如是now,默认是-1;
每读入一个char,判断是否是'0'-'9'之间的数字,如果是,那么说明这个数字是跟在now这个东西的后面的,比如读入了'3',而now是24,说明至少这个值应该是243.但是第一次得判断一下,如果这个时候now是-1,说明现在碰到的数字是第一位的数字,如果遇到了3,now应该变成3.
如果读入的不是'0'-‘9‘,那么当前的now就是一个已经取得的值了(如果now不是-1的话),把now放到你的答案数组里就好了,然后记得把now重新变成-1。

为什么初始化的时候now要赋成-1,是因为可能一堆数字里有0的问题,你可以考虑一下这个问题。还有以上的做法没有考虑负数的问题,但总的思路是一样的。
一句话概括,手工读字符,手工来组合数字判断断点。

网友(2):

#include
#include
void main()
{
char b[]="a123x456 17960?";
int a[20]={0},len=strlen(b),i,j=1,k=-1;
for(i=0;i<=len;i++)
printf("%d: ",a[i]);
for (i=0;i<=len-1;i++)
{
if(b[i]<58 && b[i]>=48)
{
a[k]=a[k]*10+b[i]-48;}
else {k++;}
}
k=20;
for(i=0;i<20;i++)
if (a[i]==0) {for(j=i;j<20;j++)a[i]=a[i+1];k--;}
for(i=0;i printf("%d\n",a[i]);
}

网友(3):

你是不是想知道数组中每个元素有多少个整数

网友(4):

你要问什么 有点不清楚