【c++】c++基本操作(day1程序)

232 阅读3分钟
#include <iostream>
#include <iomanip>
using namespace std;

#define PI 3.14159

#if 0

int main()
{

    int i = 10;
    double k = 20.8;
    auto j = i + k;
    j = i + k;

    cout << static_cast<int>(k) << endl;//static_cast<int>指的是强制类型转换(指针类型不能这么转换)

//    const int ci = 100;

//    int i = 0x1E240; //i = 123456;
//    unsigned long long int j = 123ull;//ull指的是数据类型,不是指字符ull

//    cout << '\x30' << endl;			
    return 0;
}


int main(void)
{
    int i;
				//cin相当于scanf,可以从终端输入数和字符等
    if(cin >> i)//注意:cin是>> ,cout是<< ,方向不要弄错了
    {
        cout << i << endl;
    }
    else
    {
        cout << "error!" << endl;
    }


//    cout << hex << setw(5) << setfill('0') << i << endl;
//	以十六进制输出   宽度为5     剩余宽度用0补齐  
//   十六进制 hex   八进制 oct    十进制 dec   
    return 0;
}


enum WEEK {MON, THU, WEN, SAT, SUN};//枚举类型
//枚举给int赋值可以,int给枚举类型赋值不可以,即宽给窄的可以,窄的给宽的不行
void foo()
{
    foo();
}

size_t Strlen(const char *pstr)
{
    if(*pstr == '\0')
    {
        return 0;
    }
    else
    {
        return Strlen(pstr + 1) + 1;
    }
}

int main()
{
    WEEK week;

    week = static_cast<WEEK>(100);
//    int i = week;
//    while(1){}
//    cout << week << endl;

//    foo();

    cout << Strlen("Hello World!") << endl;



    return 0;
}

inline void bar(int &ref)//此处&指的是引用
{
    ++ref;
}
/*
inline指的是内联,即主函数调用bar()时,相当于把此处bar()函数直接放在了主函数里面,而不是从主函数出来调用bar()函数。
函数定义时,在返回类型前加上关键字inline即把函数指定为内联,函数申明时可加也可不加。但是建议函数申明的时候,也加上inline.
inline如果只修饰函数的申明的部分,如下风格的函数foo不能成为内联函数:

inline void foo(int x, int y); //inline仅与函数声明放在一起
void foo(int x, int y){}

而如下风格的函数foo 则成为内联函数:

void foo(int x, int y);
inline void foo(int x, int y){} //inline与函数定义体放在一起
*/

void Swap(int &a, int &b)
{
    int t;
    t = a;
    a = b;
    b = t;
}

void Print(const int &ref)
{
    cout << ref <<  endl;
}

int main(void)
{
    int i = 10;
    int j = 20;

    bar(i);
    Print(100);
//    const int &ref = i;//constrant
//    cout << ref << endl;

//    Swap(i, j);
//    cout << i << "," << j << endl;
//    int *p = NULL;//X
//    int j = 20;
//    int &ref = i;
//    ref = j;
//    ++ref;
//    bar(i);
//    cout << i << endl;
    return 0;
}
#endif

#include "func.h"

int foo(int n)
{
    return n + 1;
}

//重载:函数同名相同,但是函数返回值类型、参数个数、参数类型不同
int add(int a, int b, int c)
{
    cout << "add(int, int , int)" << endl;
    return a + b + c;
}

int add(int a, int b,int c)
{
    cout << "add(int, int, int)" << endl;
    return a + b;
}

double add(double a, double b, double c)
{
    cout << "add(double, double , double)" << endl;
    return a + b + c;
}



double add(double a, int b)
{
    return a + b;
}

double add(int a, double b)
{
    return a + b;
}

void choiceSort(int *p, size_t len)
{
    for(size_t i = 0;i < len - 1;++i)//此处定义i和j用size_t型,而不要用int型,因为size_t是unsigned int型
    {
        for(size_t j = i + 1;j < len;++j)
        {
            if(p[i] > p[j])
            {
                int t;
                t = p[i];
                p[i] = p[j];
                p[j] = t;
            }
        }
    }
}

void choiceSort(double *p, size_t len)
{
    for(size_t i = 0;i < len - 1;++i)
    {
        for(size_t j = i + 1;j < len;++j)
        {
            if(p[i] > p[j])
            {
                double t;
                t = p[i];
                p[i] = p[j];
                p[j] = t;
            }
        }
    }
}

int main(void)
{
    int a[] = {1,-2,3,-4,5,-6};
    double b[] = {1,-2,3,-4,5,-6};

//    choiceSort(a, sizeof(a) / sizeof(a[0]));

    for(auto &x : a)//a如果为罐子类型(栈、数组等),就可以这么使用,即逐一将里面的数打印出来。
    {
        ++x;
    }

    for(int x : a)
    {
        cout << x << ",";
    }
    cout << "\b \n";

//    for(size_t i = 0;i < sizeof(a) / sizeof(a[0]);++i)
//    {
//        cout << a[i] << ",";
//    }
//    cout << "\b \n";

//    cout << add(1 , 2) << endl;
    return 0;
}