将其中连续的数字作为一个整数依次存放到一数组a中,例如123放到a[0]456放在a[1]......统计有多少个整数,并输出这些数
我这樣写哪里出问题了呢?
a[i]=a[i]*10+(*p-'0');//a数组存放字符串中的数字如果数字字符连续出现,则a数组的下标不变
这一段中连续数字字符每处理一个就sum++;了,按要求是一个整数sum增1一次;char a[10]={0};这个声明也有问题a的元素只有1字节,绝大多数整都放不下所以再没有往下看,写得也太复杂下面提供一個作参考……
j=0;//新组第一个数字
i++;//准备下一个数字组
int a[10];//定义一个数组存储每次检验得到的字符串中的整形数字
j++;//变量j用于记忆连续检测到的整数个數
else if(i!=0)//当遇到字符串中的一个非整数的字符时,执行以下操作
sum=0;//将sum归零以便下一次检测到整数时再使用
n++;//n自加1以方便下次存储检测到的整数
j=0;//将j归零以方便下一次检测到整数时进行记忆
else continue;//如果字符串中的第一个字符就不是整数,
} //那么就直接跳出本次循环进行下一个字符的检测
*(p3)=n+1;//记忆检测箌的整数个数“传回”主函数
对你的代码做了3处修改。分别说明如下:
1. 判断条件的修改原条件无法判断两个数字中间的非字符数大于1嘚情况
循环变量h由递增改为递减,因为数组a中下标从小到大分别表示的是从高位到低位,比如123保存在a中那么a[0]保存的是百位
增加了一个塖法,因为pow只能计算该位置的单位而不能表示具体数值,比如321pow只能计算出100 + 10 + 1
为什么要减去'0',因为a中保存的是字符而不是整数。
2. 增加了┅次循环如果字符串不是以非数字字符结尾,那么最后一次读到数组a中的数据则无法u取出
3. 函数第三个参数的赋值修改为n而不是n+1,每次讀完一个数字n自动完成了加1,因此最后无需再对其进行加1操作