首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

!程序结果不对 找不到原因额…

2012-03-12 
求救!程序结果不对 找不到原因额……哎……因为另外一个问题 代码以前贴过 但是正常执行之后发现结果不对……本

求救!程序结果不对 找不到原因额……
哎……因为另外一个问题 代码以前贴过 但是正常执行之后发现结果不对……本来不想问 但是实在不会……

目的:将一个字符串中的数字提取 赋给一个整形数组 再输出


例:输入字符串13d123a22a1ad1

那么应该把13赋给a[0],123赋给a[1],22赋给a[2]……(a[]是整形数组)

小弟代码如下

C/C++ code
#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;    }}




运行之后 

输入

123a132a123a132

输出

123 16777348 123 148

也就是说……奇数个的答案是对的 偶数个答案是错的

求解 这是怎么回事

[解决办法]
用这个是不是简单点
#include<iostream>
#include <string>
#include<vector>
using namespace std;


int main()
{


string in;
vector<int> des;
cout<<"Enter a string:";
cin>>in;
for(string::size_type sz=0;sz!=in.size();++sz)
if(isdigit(in[sz]))
des.push_back(atoi(&in[sz]));
for(vector<int>::size_type i=0;i!=des.size();++i)
cout<<des[i];
return 0;
}
[解决办法]
C/C++ code
    char a[n]={0},b[n]={0};    int d[n]={0},i,j,k,l,count=-1;    //你定义的时候,无论是字符串数组还是整型数组,都要记得清零,这样防止出现乱码之类的 

热点排行