hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 995|回复: 5

这个代码错在什么地方?

[复制链接]

275

主题

454

帖子

1014

积分

大司空

Rank: 5Rank: 5

积分
1014
发表于 2023-10-3 18:08:28 | 显示全部楼层 |阅读模式
  1. #include <iostream>using namespace std;int GetDigit(long long n,long long d);//主函数int main( ){    long long aa=12345678LL;    //long long bb=aa%(10000);//为什么这样写是对的     long long bb=aa%(10^4);//为什么这样写就是错误的?         printf("输出数字%d\n",bb);        system("pause");    return 0;}
复制代码

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

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

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

使用道具 举报

0

主题

202

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 18:08:54 | 显示全部楼层
我知道了^不是幂函数的意思
回复

使用道具 举报

0

主题

200

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 18:09:12 | 显示全部楼层
原本是想用C语言解决这个问题的
https://bbs.emath.ac.cn/forum.ph ... 3&fromuid=14149
但是没想到溢出之类的问题在C语言上真啰嗦!
回复

使用道具 举报

0

主题

171

帖子

36

积分

新手上路

Rank: 1

积分
36
发表于 2023-10-3 18:09:44 | 显示全部楼层
对了,如何修正呢?用pow似乎也修正不了
回复

使用道具 举报

0

主题

184

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 18:09:59 | 显示全部楼层
这个代码的错误在于 bb=aa%(10^4) 这一行,这并不是计算 aa 除以 10000 的余数。^ 符号在 C++ 中表示按位异或,而不是指数运算。

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


#include <iostream>
using namespace std;

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

//主函数
int main( )
{
    long long aa = 12345678LL;
    long long bb = aa % 10000; // 计算 aa 除以 10000 的余数
   
    printf("输出数字%lld\n", bb);
   
    system("pause");
    return 0;
}
回复

使用道具 举报

0

主题

173

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 18:10:53 | 显示全部楼层
我上面自己已经找到错误了,其实只有自己找到错误,这样才能印象深刻!
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-24 21:13 , Processed in 0.061310 second(s), 21 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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