程序满足让用户输入一个数字(如果用户输入其它字符则将其转为其ASCII编码),
随后分别输出这个数的在多大的数据范围(如short int,int,long……取最短能取的范围)内、
在这个数的平方根是整数的情况下输出这个数的平方根、
在这个数的立方根是整数的情况下输出这个数的立方根,
输出这个数是否为质数、
输出这个数的所有因数、
输出二进制形式的这个数、
输出十六进制形式的这个数
#include
#include
#include
#include
#include
#include
using namespace std;
// 判断是否为质数
bool isPrime(long long n) {
if (n <= 1) return false;
for (long long i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}
// 输出因数
void printDivisors(long long n) {
cout << n <<"的所以因数"<< "有: ";
for (long long i = 1; i <= n; i++) {
if (n % i == 0) {
cout << i << " ";
}
}
cout << endl;
}
int main() {
long long num;
cout << "输入一个数: ";
cin >> num;
cout << "你输入的数字是:" << num << endl;
// 判断并输出数据类型范围
cout << "这个数的范围是: ";
if (num >= SHRT_MIN && num <= SHRT_MAX) {
cout << "short int" << endl;
} else if (num >= INT_MIN && num <= INT_MAX) {
cout << "int" << endl;
} else if (num >= LONG_MIN && num <= LONG_MAX) {
cout << "long int" << endl;
} else {
cout << "long long int "<< endl;
}
// 判断并输出平方根和立方根(如果是整数)
long long sqrtN = sqrt(num);
long long cbrtN = cbrt(num);
if (sqrtN == (long long)sqrtN) {
cout << "这个数的平方根(约等于): " << sqrtN << endl;
} else {
cout << "这个数的平方根不是一个整数" << endl;
}
if (cbrtN == (long long)cbrtN) {
cout << "这个数的立方根(约等于): " << cbrtN << endl;
} else {
cout << "这个数的立方根不是一个整数" << endl;
}
// 判断是否为质数并输出结果
if (isPrime(num)) {
cout << "这个数是质数" << endl;
} else {
cout << "这个数不是质数" << endl;
}
printDivisors(num); // 输出所有因数。
// 输出因数和二进制、十六进制形式(如果是整数)
cout << "这个数的二进制形式): " << bitset<32>(num) << endl; // 32位二进制表示,根据实际情况可能需要调整位数。
cout << "这个数的十六进制形式:" << hex << num << endl; // 使用hex流操纵符输出十六进制形式。
return 0;
}
给个赞再走,求求了!!!