C++_内联函数 带默认形参值的函数 重载函数 constexpr 取整 点灯

/*
NO.1 内联函数
(1)内联函数是在“编译时”将函数体嵌入在每一个调用处,相当于宏定义define
(2)inline关键字只是表示一个要求,编译器并不承诺将inline修饰的函数作为内联
(3)在现代编译器中,没有用inline修饰的函数也可能被编译为内联
(4)内联函数应该是比较简单的函数,结构简单,语句少,频繁调用
(5)带有递归调用或者循环的函数不能以内联方式处理
*/

/*
NO.2 带默认形参值的函数
    注:在默认形参值的右面不能有非默认形参值的参数
举个栗子,糖炒的:
int add(int x, int y = 0) 正确
int add(int x = 0, int y) 错误
*/

/*
NO.3 重载函数
(1)函数名相同
(2)形参必须不同:个数不同或者类型不同
(3)编译器不以形参名来区分函数,也不以返回值来区分函数
举个栗子,还是糖炒的
(1)int add(int x, int y); double add(double x, double y);
(2)int add(int x, int y); int add(int x, int y, int z);
(3)int add(int x, int y); void add(int a, int b); ->错误
*/

/*
NO.4 constexpr
变量
(1)constexpr修饰的变量必须用常量或者常量表达式来初始化
(2)到目前为止,算数类型、指针、引用都可以定义为constexpr自定义类,string等不可以
函数
(1)constexpr修饰的函数在其所有参数都是constexpr时,一定返回constexpr
(2)函数体中有且只有一条return语句
*/
浮点型取整:

double强制转换int,向下取整
floor(),向下取整
ceil(),向上取整
round(),四舍五入取整

点灯问题

题目描述:有n盏灯,编号依次为1,2,3,…,n;初始化时,所有灯都是关闭状态;小明第一次将编号为1,2,3,…,共n盏灯都打开了;第二次将编号为2,4,6,…,共n/2盏灯都关闭了;第三次将编号为3,6,9,…,共n/3盏灯进行操作,若是之前关闭状态则打开,若是打开状态,则关闭;第四次将4,8,12,…,共n/4盏灯进行操作。这样操作了n次,问最后亮了几盏灯。 

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    int T; cin >> T;
    while(T -- )
    {
        int n; cin >> n;
        cout << (int)sqrt(n) << endl;
        //只有完全平方数的因子有奇数个(因为平方根*平方根=完全平方数)
        //对灯操作奇数次最终才是亮的
        //所以答案为n取平方向下取整
    }
    return 0;
}
发布了273 篇原创文章 · 获赞 76 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44049850/article/details/104900828
今日推荐