VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 381|回复: 4

C++零基础入门教程23课作业问题

[复制链接]
36_avatar_middle
最佳答案
0 
在线会员 发表于 2019-6-14 19:37:04 | 显示全部楼层 |阅读模式
本帖最后由 slk231 于 2019-6-14 19:43 编辑

C++零基础入门教程23课作业问题:
输入一个字符串,例如:
a123x456__17960?302ab5876
将其中连续的数字作为一个整数,依次存放到一个数组中a中,例如:123放在a[0]中,456放在a[1]中。统计共有多少个整数,并输出这些整数
遇到的问题是,程序偶尔会出错,没搞明白,请指教! 谢谢.

void pd(char* str1, int* aa)
{
        cout << str1 << endl;
        int n = 0;       
        while (*str1!='\0')
        {
                if (*str1 >= '0'&&*str1 <= '9'&&*str1 != '\0')
                {               
                        for (int ip = 0; *str1 >= '0' && *str1 <= '9'&&*str1!='\0'; str1++)
                        {
                                ip = ip*10+(*str1-'0');
                                //cout << *str1;
                                *aa = ip;                               
                        }                       
                        ++aa;
                        ++n;
                        //cout << endl;
                }               
                str1++;               
        }
        *(aa+1) = n;
}

int main()
{
        char str[] = "a123x456__17960?302ab5876";
        int a[100] = { 0 };
        cout << str << endl;
        pd(str, a);

        int r = 0;
        while (a[r]!=0)
        {
                cout << "a[" << r << "] = " << a[r] << endl;
                ++r;
        }
        cout << "共有 " << a[r+1] << " 组数字." << endl;
return 0;
}

运行结果如下:
a123x456__17960?302ab5876
a123x456__17960?302ab5876
a[0] = 123
a[1] = 456
a[2] = 17960
a[3] = 302
a[4] = 5876
共有 5 组数字.

但是偶尔会出现以下错误的结果:
a123x456__17960?302ab5876
a123x456__17960?302ab5876
a[0] = 123
a[1] = 456
a[2] = 17960
a[3] = 302
a[4] = 5876
a[5] = 4
共有 0 组数字.

没搞明白为什么!






上一篇:玩转控件第四课 多选框 一个疑问
下一篇:GetDeviceCaps(hdc,SIZEPALETTE);返回值为零的问题
65_avatar_middle
最佳答案
0 
在线会员 发表于 2019-6-15 09:55:54 | 显示全部楼层
试试单步调试功能,实时监视变量值
77_avatar_middle
最佳答案
31 
online_vip 发表于 2019-6-15 13:44:16 | 显示全部楼层
我反反复复执行了好多遍,都是显示:共有 5 组数字
没出现楼主说的情况。。。
36_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-6-18 10:22:08 | 显示全部楼层
我这也是一头雾水,刚才连续运行了 十几次,出错一次,结果如下:

a123x456__17960?302ab5876
a123x456__17960?302ab5876
a[0] = 123
a[1] = 456
a[2] = 17960
a[3] = 302
a[4] = 5876
a[5] = 7
共有 6 组数字.
请按任意键继续. . .
33_avatar_middle
最佳答案
0 
在线会员 发表于 2020-7-14 21:11:26 | 显示全部楼层
cout << "共有 " << a[r+1] << " 组数字." << endl;

改为 cout << "共有 " << r<< " 组数字." << endl;

这样吧?
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-11-25 18:26

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表