求救!程序结果不对 找不到原因额……
哎……因为另外一个问题 代码以前贴过 但是正常执行之后发现结果不对……本来不想问 但是实在不会……
目的:将一个字符串中的数字提取 赋给一个整形数组 再输出
例:输入字符串13d123a22a1ad1
那么应该把13赋给a[0],123赋给a[1],22赋给a[2]……(a[]是整形数组)
小弟代码如下
#include<iostream>using namespace std;int main(){ int fac(int ,int); const int n=30; char a[n],b[n]; int d[n],i,j,k,l,count=-1; cout<<"请输入一个字符串,程序将把其中的数字提出"<<endl<<endl; cin>>a; for(i=0;i<=n-1;i++) //按顺序查找字符串 { if(a[i]=='\0') break; if(a[i]>=48 && a[i]<=57) // 找到数字的话,继续向下找,直到找到非数字字符 { count++; for(j=i;;j++) { if(a[j]<48 || a[j]>57) //找到非数字字符,i和J之间的字符为一个数字 { for(k=0;k<=j-i-1;k++) { b[k]=a[i+k]; //将这段数字给b[]数组 } b[k+1]='\0'; break; //一个完整的数字找到后跳出循环 } } for(k=j-i,l=0;k>=1;k--,l++) { d[count]=fac(int(b[l])-48,k-1)+d[count]; //将b[]数组中的数字转化为整数给d[] } i=j; } } for(i=0;i<=count;i++) cout<<d[i]<<" "; system("pause"); return 0;}//fac()是计算a的b次幂的函数 int fac(int a,int b){ int i; if(b==0) return a; else { for(i=0;i<=b-1;i++) a=a*10; return a; }} char a[n]={0},b[n]={0}; int d[n]={0},i,j,k,l,count=-1; //你定义的时候,无论是字符串数组还是整型数组,都要记得清零,这样防止出现乱码之类的