问题描述
- 能帮我看看代码吗?我这代码怎么输出那么多个0?
-
输入一个字符串,内有数字和非数字字符,例如:a123x456 7689?89njnk32lnk123,
将其中连续的数字作为一个整数,依次存放到一维数组a中,例如123放在b[0],456放
在b[1]......统计共有多少个整数,并输出这些数。弟1行输出个数,第2行输出多个整数
,用空格分隔。#include<stdio.h> #include<math.h> void main() { int i,j=0,k=0,x=0,n,m,b[100]; char s[100],a[100]; gets(s); for(i=0;s[i]!='';i++) { if(s[i]>='0'&&s[i]<='9') a[j++]=s[i]; else { j--; for(n=0;j>=0;j--,n++) x+=(a[j]-'0')*(int)pow(10,n); b[k++]=x; x=0; j=0; } } printf("%dn",k); for(m=0;m<k;m++) printf("%d ",b[m]); printf("n"); }
解决方案
现在i=0,
那么s[i]是字母,执行else,在else中,j=0,j--,则j=-1,执行b[k++] = x,则 b[0]=0
其他情况类似
解决方案二:
你可以是在扫描s数组时就开始组合整数
当'0'<=s[i]<='9'时进入一个循环,开始组装数据,直到字母或者字符串结尾
解决方案三:
从代码看应该是最后一个123的后面没空格或任何字符引起的没执行合成语句,在最后加一个空格或任何字符试看,把合成写为一个方法供调用,在退出循环后再调用一次合成即可。
时间: 2024-12-21 06:50:12