找回密码
 欢迎注册
查看: 3783|回复: 5

[讨论] 这个代码错在什么地方?

[复制链接]
发表于 2022-11-1 13:32:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
  1. #include <iostream>
  2. using namespace std;

  3. int GetDigit(long long n,long long d);
  4. //主函数
  5. int main( )
  6. {
  7.     long long aa=12345678LL;
  8.     //long long bb=aa%(10000);//为什么这样写是对的
  9.     long long bb=aa%(10^4);//为什么这样写就是错误的?
  10.    
  11.     printf("输出数字%d\n",bb);
  12.    
  13.     system("pause");
  14.     return 0;
  15. }
复制代码


偷懒把10000写成
long long bb=aa%(10^4);//为什么这样写就是错误的?
结果答案就错误了!
请问为什么?

long long bb=aa%(10000);//为什么这样写是对的
这个能输出正确结果
5678

long long bb=aa%(10^4);//为什么这样写就是错误的?
这个输出错误结果
2
为什么呢?
如何修改正确呢?
在不修改long long变量类型的情况下,如何把程序搞对?

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2022-11-1 13:45:04 | 显示全部楼层
我知道了^不是幂函数的意思
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2022-11-1 14:04:57 | 显示全部楼层
原本是想用C语言解决这个问题的
https://bbs.emath.ac.cn/forum.ph ... 3&fromuid=14149
但是没想到溢出之类的问题在C语言上真啰嗦!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2022-11-1 15:10:34 | 显示全部楼层
对了,如何修正呢?用pow似乎也修正不了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2023-4-26 15:05:22 | 显示全部楼层
这个代码的错误在于 bb=aa%(10^4) 这一行,这并不是计算 aa 除以 10000 的余数。^ 符号在 C++ 中表示按位异或,而不是指数运算。

正确的计算 aa 除以 10000 的余数的方法是 aa % 10000,因为 % 符号表示取模运算,可以计算出两个数相除得到的余数。


  1. #include <iostream>
  2. using namespace std;

  3. int GetDigit(long long n,long long d);

  4. //主函数
  5. int main( )
  6. {
  7.     long long aa = 12345678LL;
  8.     long long bb = aa % 10000; // 计算 aa 除以 10000 的余数
  9.    
  10.     printf("输出数字%lld\n", bb);
  11.    
  12.     system("pause");
  13.     return 0;
  14. }
复制代码

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2023-4-26 15:17:36 | 显示全部楼层
XIAOWEN 发表于 2023-4-26 15:05
这个代码的错误在于 bb=aa%(10^4) 这一行,这并不是计算 aa 除以 10000 的余数。^ 符号在 C++ 中表示按位异 ...

我上面自己已经找到错误了,其实只有自己找到错误,这样才能印象深刻!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-12-22 00:23 , Processed in 0.026038 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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