鱼C论坛

 找回密码
 立即注册
查看: 1858|回复: 1

关于std::cout的异常

[复制链接]
发表于 2019-10-29 23:19:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 bin554385863 于 2019-10-29 23:35 编辑
#include <iostream>
//获取偶数因子
void func(int num, int *arr, int *n)
{
        int count = 0;
        if (num <= 0)//排除负数
        {
                std::cout << "DATE ERROR";
                exit(1);
        }
        else
        {
                //查找偶数因子
                for (size_t i = num; i >= 1; i--)
                {
                        if (num % (i * 2) == 0)
                        {
                                count++;
                        }
                }
                *n = count;
                count = 0;
                for (size_t i = num; i >= 1; i--)
                {
                        if (num % (i * 2) == 0)
                        {
                                int tmp = num / i;
                                arr[count] = tmp;
                                count++;
                        }
                }
        }
}
//计算偶数因子的个数
int arrsize(int num)
{
        int size = 0;
        for (size_t i = 1; i <= num; i++)
        {
                if (num % (2 * i) == 0)
                {
                        size++;
                }
        }
        return size;
}
int main(int argc, char const *argv[])
{
        int a = 1;
        std::cin>>a;
        for (int b = 0; a != 0; std::cin >> a)
        {
                int s = arrsize(a);
                int ptr[s] = {0};
                func(a, ptr, &b);
                std::cout<<b<<std::endl;//---------------------------用着一句正常
                //std::cout<<a<<"有"<<b<<"偶数因子,分别是: ";//-----------------------------------换这一句就运行出错
                for (size_t i = 0; i < s; i++)
                {
                        std::cout << ptr[i] << "  ";
                }
                std::cout<<'\n'<<std::endl;
        }
        return 0;
}
-------------------------------------------------------------------------
E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-xjv21zb3.gvr --stdout=Microsoft-MIEngine-Out-1tluhllq.vmq --stderr=Microsoft-MIEngine-Error-anjenvq5.mdt --pid=Microsoft-MIEngine-Pid-an5hlhwz.f4m "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
96
10
2  4  6  8  12  16  24  32  48  96

34
2
2  34

24
6
2  4  6  8  12  24

0

============================================================
#include <iostream>
//获取偶数因子
void func(int num, int *arr, int *n)
{
        int count = 0;
        if (num <= 0)//排除负数
        {
                std::cout << "DATE ERROR";
                exit(1);
        }
        else
        {
                //查找偶数因子
                for (size_t i = num; i >= 1; i--)
                {
                        if (num % (i * 2) == 0)
                        {
                                count++;
                        }
                }
                *n = count;
                count = 0;
                for (size_t i = num; i >= 1; i--)
                {
                        if (num % (i * 2) == 0)
                        {
                                int tmp = num / i;
                                arr[count] = tmp;
                                count++;
                        }
                }
        }
}
//计算偶数因子的个数
int arrsize(int num)
{
        int size = 0;
        for (size_t i = 1; i <= num; i++)
        {
                if (num % (2 * i) == 0)
                {
                        size++;
                }
        }
        return size;
}
int main(int argc, char const *argv[])
{
        int a = 1;
        std::cin>>a;
        for (int b = 0; a != 0; std::cin >> a)
        {
                int s = arrsize(a);
                int ptr[s] = {0};
                func(a, ptr, &b);
                //std::cout<<b<<std::endl;
                std::cout<<a<<"有"<<b<<"偶数因子,分别是: ";//----------------------------------换这一句就出错
                for (size_t i = 0; i < s; i++)
                {
                        std::cout << ptr[i] << "  ";
                }
                std::cout<<'\n'<<std::endl;
        }
        return 0;
}
-------------------------------------------------------------------------------------------------------------------------
E:\Users\86184\Documents\Code>c:\Users\86184\.vscode\extensions\ms-vscode.cpptools-0.26.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-2gbu1oh3.3nj --stdout=Microsoft-MIEngine-Out-wftrvwyt.h3h --stderr=Microsoft-MIEngine-Error-cbpl2yrx.dof --pid=Microsoft-MIEngine-Pid-ke3zm1dx.xaf "--dbgExe=E:\My Program\MinGW\bin\gdb.exe" --interpreter=mi
2
296
6
32
0


E:\Users\86184\Documents\Code>
------------------------------------------------------------
实在搞不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-10-30 02:02:01 | 显示全部楼层

自顶,逻辑应该没问题啊,
就那条cout语句调试结果是错误的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-4 17:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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