C 中运算注意的地方

对于c中的移位运算会有移位的限制,即移位位数要小于移位数据类型的字节数。对于int类型0x01左移31位为0x80000000,当左移32位时,为0x01。即当进行移位时,当移位的位数大于31位时,会先与0x31与运算,计算出移位的位数,在进行移位操作。

 

判断溢出的方法: 双符号位法

 

符号位设置为两位,00(或11)当运算结束后,符号位相同则没有溢出,符号位不同说明有溢出。

 

无符号码的减法可以直接是相减,判断是否借位,不用转换为补码的运算。计算机怎么来,就不知道了,估计是转换为补码运算。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较典型的小学生四则运算游戏,可以通过以下步骤实现: 1. 随机生成两个操作数和一个运算符,可以使用rand()函数进行随机数生成。 2. 根据生成的运算符,计算出正确答案。 3. 提示用户输入答案,并对比用户输入的答案和正确答案。 4. 如果用户输入的答案正确,则输出“恭喜你,回答正确!”;如果用户输入的答案错误,则输出“很遗憾,回答错误,正确答案为x”。 5. 重复以上步骤,直到用户回答了足够的题目,或者用户选择退出游戏。 下面是一份简单的 C 语言代码,实现了一个简单的小学生四则运算游戏: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int num1, num2, result, answer; char operator; int count = 0, correct = 0; srand((unsigned int)time(NULL)); printf("欢迎来到小学生四则运算游戏!\n"); printf("请回答下面的题目,输入 0 结束游戏。\n"); while (1) { num1 = rand() % 101; // 生成 0~100 之间的随机数 num2 = rand() % 101; operator = rand() % 4; // 生成 0~3 之间的随机数,分别代表 +、-、*、/。 switch (operator) { case 0: result = num1 + num2; printf("%d + %d = ", num1, num2); break; case 1: result = num1 - num2; printf("%d - %d = ", num1, num2); break; case 2: result = num1 * num2; printf("%d * %d = ", num1, num2); break; case 3: result = num1 / num2; printf("%d / %d = ", num1, num2); break; } scanf("%d", &answer); if (answer == 0) { break; } else if (answer == result) { printf("恭喜你,回答正确!\n"); correct++; } else { printf("很遗憾,回答错误,正确答案为%d。\n", result); } count++; } printf("你一共回答了%d道题,其有%d道题回答正确。\n", count, correct); printf("感谢参与,再见!\n"); return 0; } ``` 注意:以上代码只是一个简单的实现,还有很多可以改进的地方,比如可以添加难度级别、计时器、成绩排行榜等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值