注册 登录
编程论坛 C++教室

求高手帮查一下为什么不能运行!!!!!!!!!!!!!!!!!!

环及 发布于 2012-03-24 11:08, 568 次点击
#include<iostream>
using namespace std;
void fun(char *a,long *b,int n){
   
    int j=0,d1=-3,d2=0;
    for(int i=0;i<n;i++)
    {    if(a[i]<='9'&&a[i]>='0')
        {if(d1=-3)
            d1=d2=i;
        else d2++;
        }
        if(d1!=-3)
        {do{b[j]+=(a[d2]-'0')*10;
            d2--;
            }while(d1>d2);
        b[j]/=10;
        j++;
        d1=-3;
        }
    }
    int t=0;
    while(t<j-1)
        cout<<b[t]<<' ';
}
void main()
{char ch[120];
int n=0;
long str[120];
cout<<"please input a string!"<<endl;
cin>>ch;
while(ch[n]!=0)
n++;
fun(ch,str,n);//调用fun函数把ch数组的数字保存在str数组例如ch=“yuewr55kiijkjh4551po124”
                //则str【120】={55,4551,124}

}
6 回复
#2
键佳蕾2012-03-24 12:43
输入字符串是不是得用偱环,ch是数组首是址
#3
Wikyo_hoho2012-03-24 15:37
do{
    b[j]+=(a[d2]-'0')*10;
    d2--;
    }while(d1>d2);
死循环!
但不知道你这函数的想法是什么?
#4
环及2012-03-24 17:11
回复 3楼 Wikyo_hoho
这不是死循环吧!if(d1<d2)才是吧!
我的想法是想把连续的数字放在一个数组元素中!如hhjj45jii则b【0】=45;第一次b【j】+=4*10;第二次b[j]=(4*10+5)*10;
退出循环时b[j]=(4*10+5)*10/10;
#5
Wikyo_hoho2012-03-24 20:28
程序代码:
void fun(char *a,long *b,int n)
{  
    int j=0,key=0;
    for(int i=0;i<n;i++)
    {   
        for(;a[i]<='9'&&a[i]>='0';i++,b[j]*=10)    //    若是数字则开始循环读取,这里i可以继续加,等读完后记得再减1
        {
            b[j]+=a[i]-'0';
            key=1;      
        }
        if(key)    //判断是否是刚读完数字
        {
            b[j]/=10;
            j++;
            i--;
            key=0;
        }
    }
    i=0;
    for(;i<j;i++)
        cout<<b[i]<<' ';
}
void main()
{char ch[120];
int n=0;
long str[120]={0};        //注意long的初始化
cout<<"please input a string!"<<endl;
    cin>>ch;
while(ch[n]!='\0')        //其实也可以用strlen函数更简洁
    n++;
fun(ch,str,n);//调用fun函数把ch数组的数字保存在str数组例如ch=“yuewr55kiijkjh4551po124”
               
//则str【120】={55,4551,124}

}

我按照你的想法写的
你写的fun函数里
if(d1=-3)是什么意思,是你写错了吧,应该是d1==-3,不然else就没用了。
还有那个就是死循环,碰到数字后,d1=d2,而循环里是d2--,那么d1>d2会一直成立。
还有你的输出,   
       while(t<j-1)
        cout<<b[t]<<' ';
这就很明显是死循环了吧    - -!
你可以自己去调试下看看,大概就能明白哪错了
#6
环及2012-03-25 08:29
回复 5楼 Wikyo_hoho
谢谢啦
我现在明白啦
#7
yubiaohyb2012-03-29 00:04
楼主 啊   请注意你的编程风格啊
1