前言:西工大noj刷题记录
代码在CodeBlocks16.01环境下编译通过
38题-逆序整数
/*
*题目:用递归法将一个长整型数n逆序输出,例如输入483,输出384,n的位数不确定,可以是有效范围内的任意位数
*/
#include <iostream>
using namespace std;
int rever(long int n)
{
cout << n % 10;
n /= 10;
if (n != 0)
{
rever(n);
}
return 0;
}
int noj_038()
{
int num;
cout << "请输入整数n:";
cin >> num;
rever(num);
return 0;
}
39-最大整数
/*
*题目:编写函数getfloor(x),返回小于等于x的最大整数,例如个体floor(2.8)为2,getfloor(-2.8)为-3
*/
#include <iostream>
using namespace std;
int getfloor(double x)
{
if (x == 0.0)
{
return x;
}
else if (x < 0.0)
{
return (int)x - 1;
}
else
{
return (int)x;
}
}
int noj_039()
{
double num;
cout << "请输入x:";
cin >> num;
cout << getfloor(num);
return 0;
}
40-高低交换
/*
*题目:编写内联函数inline int xchg(unsigned char n),打算将unsigned char型n的低四位和高四位交换后的结果,在主函数中输入数据调用函数输出结果
*/
#include <bits/stdc++.h>
using namespace std;
inline int xchg(unsigned char n)
{
unsigned char temp = n << 4;
n = (n >> 4) | temp;
return n;
}
int noj_040()
{
unsigned int num; //注意:这里如果num是unsigned char型的话,输入数字num会转换成字符,则调用函数会按照ascii码进行运算
cout << "请输入整数n:";
cin >> num;
cout << xchg(num);
return 0;
}