课外练习4-2
第一题:任意输入一个int整数,显示为32位二进制值
我的代码
#include<iostream>
using namespace std;
int main() {
int num;
cin >> num;
for (int i = 0; i < 32; i++) {
if (num > 0) cout << 0;
else cout << 1;
num <<= 1;
}
return 0;
}
第二题:编程找出n的下一个素数。从键盘上输入n的值(n < 0),计算并输出n的下一个素数。即:比n大的最小的那个素数。
输入样例:
3
输出样例:
5
我的代码
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
if (n > 0) {
while (true) {
n++;
bool flag = true;
for (int i = 2; i * i < n; i++) {
if (n % i == 0) {
flag = false;
break;
}
}
if (flag) {
cout << n;
break;
}
}
}
return 0;
}
第三题:编程计算32位和64位无符号整数最大能表示多大的阶乘。以x = n! 的格式输出x达到最大时的x和n。乘法溢出可以用一下规则判断:
c = a * b;
if(c / a != b) cout << “溢出”;
我的代码
#include<iostream>
using namespace std;
unsigned int n;
unsigned long long m;
void print32() {
unsigned int num = 1;
for (n = 1; ; n++) {
int temp = num;
num = temp * n;
if (num / temp != n) {
cout << "32位无符号整数溢出啦。";
break;
}
}
cout << "此时n = " << n << "。" << endl;;
}
void print64() {
unsigned long long num = 1;
for (m = 1; ; m++) {
int temp = num;
num = temp * m;
if (num / temp != m) {
cout << "64位无符号整数溢出啦。";
break;
}
}
cout << "此时m = " << m << "。" << endl;;
}
int main() {
print32();
print64();
system("pause");
return 0;
}