鱼C论坛

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

关于std::cout的异常

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

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

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

x
本帖最后由 bin554385863 于 2019-10-29 23:35 编辑
  1. #include <iostream>
  2. //获取偶数因子
  3. void func(int num, int *arr, int *n)
  4. {
  5.         int count = 0;
  6.         if (num <= 0)//排除负数
  7.         {
  8.                 std::cout << "DATE ERROR";
  9.                 exit(1);
  10.         }
  11.         else
  12.         {
  13.                 //查找偶数因子
  14.                 for (size_t i = num; i >= 1; i--)
  15.                 {
  16.                         if (num % (i * 2) == 0)
  17.                         {
  18.                                 count++;
  19.                         }
  20.                 }
  21.                 *n = count;
  22.                 count = 0;
  23.                 for (size_t i = num; i >= 1; i--)
  24.                 {
  25.                         if (num % (i * 2) == 0)
  26.                         {
  27.                                 int tmp = num / i;
  28.                                 arr[count] = tmp;
  29.                                 count++;
  30.                         }
  31.                 }
  32.         }
  33. }
  34. //计算偶数因子的个数
  35. int arrsize(int num)
  36. {
  37.         int size = 0;
  38.         for (size_t i = 1; i <= num; i++)
  39.         {
  40.                 if (num % (2 * i) == 0)
  41.                 {
  42.                         size++;
  43.                 }
  44.         }
  45.         return size;
  46. }
  47. int main(int argc, char const *argv[])
  48. {
  49.         int a = 1;
  50.         std::cin>>a;
  51.         for (int b = 0; a != 0; std::cin >> a)
  52.         {
  53.                 int s = arrsize(a);
  54.                 int ptr[s] = {0};
  55.                 func(a, ptr, &b);
  56.                 std::cout<<b<<std::endl;//---------------------------用着一句正常
  57.                 //std::cout<<a<<"有"<<b<<"偶数因子,分别是: ";//-----------------------------------换这一句就运行出错
  58.                 for (size_t i = 0; i < s; i++)
  59.                 {
  60.                         std::cout << ptr[i] << "  ";
  61.                 }
  62.                 std::cout<<'\n'<<std::endl;
  63.         }
  64.         return 0;
  65. }
复制代码

-------------------------------------------------------------------------
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

============================================================
  1. #include <iostream>
  2. //获取偶数因子
  3. void func(int num, int *arr, int *n)
  4. {
  5.         int count = 0;
  6.         if (num <= 0)//排除负数
  7.         {
  8.                 std::cout << "DATE ERROR";
  9.                 exit(1);
  10.         }
  11.         else
  12.         {
  13.                 //查找偶数因子
  14.                 for (size_t i = num; i >= 1; i--)
  15.                 {
  16.                         if (num % (i * 2) == 0)
  17.                         {
  18.                                 count++;
  19.                         }
  20.                 }
  21.                 *n = count;
  22.                 count = 0;
  23.                 for (size_t i = num; i >= 1; i--)
  24.                 {
  25.                         if (num % (i * 2) == 0)
  26.                         {
  27.                                 int tmp = num / i;
  28.                                 arr[count] = tmp;
  29.                                 count++;
  30.                         }
  31.                 }
  32.         }
  33. }
  34. //计算偶数因子的个数
  35. int arrsize(int num)
  36. {
  37.         int size = 0;
  38.         for (size_t i = 1; i <= num; i++)
  39.         {
  40.                 if (num % (2 * i) == 0)
  41.                 {
  42.                         size++;
  43.                 }
  44.         }
  45.         return size;
  46. }
  47. int main(int argc, char const *argv[])
  48. {
  49.         int a = 1;
  50.         std::cin>>a;
  51.         for (int b = 0; a != 0; std::cin >> a)
  52.         {
  53.                 int s = arrsize(a);
  54.                 int ptr[s] = {0};
  55.                 func(a, ptr, &b);
  56.                 //std::cout<<b<<std::endl;
  57.                 std::cout<<a<<"有"<<b<<"偶数因子,分别是: ";//----------------------------------换这一句就出错
  58.                 for (size_t i = 0; i < s; i++)
  59.                 {
  60.                         std::cout << ptr[i] << "  ";
  61.                 }
  62.                 std::cout<<'\n'<<std::endl;
  63.         }
  64.         return 0;
  65. }
复制代码

-------------------------------------------------------------------------------------------------------------------------
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>
------------------------------------------------------------
实在搞不明白
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

自顶,逻辑应该没问题啊,
就那条cout语句调试结果是错误的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 15:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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