用Clion注意

使用Clion编译器,如果未关联的文件,要在CMAKEList中改成这句话,并且之后重新加载CMAKE项目,




cmake_minimum_required(VERSION 3.28)
project(C__base)

set(CMAKE_CXX_STANDARD 17)

add_executable(C__base main.cpp)
cmake_minimum_required(VERSION 3.10)
project(MyProject)

# 设置C和C++标准
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 设置输出目录
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/archive)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/library)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/runtime)

# 递归查找所有C和C++源文件
file(GLOB_RECURSE sources "*.c" "*.cpp")

foreach(source IN LISTS sources)
    # 提取无扩展名的文件名
    get_filename_component(exe_name ${source} NAME_WE)
    # 生成唯一目标名(避免路径冲突)
    string(REPLACE "/" "_" target_name ${exe_name})
    # 添加可执行目标
    add_executable(${target_name} ${source})
    # 输出提示信息
    message("-- Building ${source} -> runtime/${target_name}")
endforeach()

常量定义一般有两种方式


#define DAY 7;   //宏常量定义一般卸载头文件顶部
const int month =12;   // const 定义之后一般 后面的常规赋值=不能修改,只能回到const 这句话更改

sizeof的使用

int main()
{
    cout<<"int所占空间为"<<sizeof(int)<<"个字节"<<endl;
    cout<<"short所占空间为"<<sizeof(short)<<"个字节"<<endl;
    cout<<"long所占空间为"<<sizeof(long)<<"个字节"<<endl;
    cout<<"long long所占空间为"<<sizeof(long long)<<"个字节"<<endl;
    system("pause");
    return 0;
}

输出结果

浮点型

要注意float4个字节,7位有效小数。 double8个字节,15-16位有效小数。用float定义数字时要在后面加个f,不然计算机会当作double处,理,定义时候后面带个e是科学计数法,e后面是正数是10的几次放,是负数是10的负几次方。

int main()
{
    float a=3.14f;
    double b=3.14;
    cout<<"float所占空间为"<<sizeof(a)<<"个字节"<<endl;
    cout<<"double所占空间为"<<sizeof(b)<<"个字节"<<endl;
    float c=3e2;
    cout<<c<<endl;
    double d=3e-2;
    cout<<d<<endl;
    system("pause");
    return 0;
}

转义字符

输入反斜杠要用双反斜杠\\ Clion中制表符\t 一般代表四个字符位

int main()
{
    cout<<"\\"<<endl;
    cout<<"aaa\thellowworld"<<endl;
    cout<<"aa\thellowworld"<<endl;
    cout<<"aaaahelloworld"<<endl;
    system("pause");
    return 0;
}

BOOL类型

bool只有0和1两个值,比说bool a=100,输出a也是为1,a=-100,输出也为1。

赋值运算符

最常见的a++和++a的区别,a++是先进行运算后a进行++. ++a是a先++再运算;看加号位置,加号在后面则先用后加。

通讯录管理系统

简单的增删改查 出现的情况 for循环内是i<,而不是定量。

#include <iostream>
#include "string"
using namespace std;

#define MAX 1001
struct Ren
{
    string name;
    int age;
    string address;
    long number;
    int sex;
};

struct tongxunlun
{
    Ren a[MAX];
    int sum;
};

void tianjia(tongxunlun *T)
{
    if(T->sum==MAX)
    {
        cout<<"通讯录已满,无法添加!"<<endl;
        return;
    }
    else
    {
        cout<<"请输入姓名:"<<endl;
        cin>>T->a[T->sum].name;
        cout<<"请输入年龄:"<<endl;
        cin>>T->a[T->sum].age;
        cout<<"请输入性别:"<<endl; cout<<"1--男 2--女"<<endl;
        cin>>T->a[T->sum].sex;
        while(true)
        {
            if(T->a[T->sum].sex!=1&&T->a[T->sum].sex!=2)
            {
                cout<<"性别有误请重新输入"<<endl;
                cin>>T->a[T->sum].sex;
            }
            else
                break;
        }
        cout<<"请输入电话号码:"<<endl;
        cin>>T->a[T->sum].number;
        cout<<"请输入家庭住址:"<<endl;
        cin>>T->a[T->sum].address;
        T->sum++;
        cout<<"添加成功"<<endl;
        system("pause");
        system("CLS");
    }
}

void showman(tongxunlun T)
{
    if(T.sum==0)
    {
        cout<<"当前通讯录为空"<<endl;
    }
    else
    {
        for(int i=0;i<T.sum;i++)
        {
            cout<<"性别: "<<T.a[i].name<<"\t";
            cout<<"年龄: "<<T.a[i].age<<"\t";
            if(T.a[i].sex==1) cout<<"性别:男"<<"\t";
            else cout<<"性别:女"<<"\t";
            cout<<"电话号码: "<<T.a[i].number<<"\t";
            cout<<"家庭住址: "<<T.a[i].address<<endl;
        }
    }
    system("pause");
    system("CLS");
}


int where(tongxunlun *T,string b)
{
    for(int i=0;i<T->sum;i++)
    {
        if(T->a[i].name==b) return i;
    }
    return -1;
}

void Delete(tongxunlun *T)
{
    cout << "请输入删除联系人的姓名" << endl;
    string b;
    cin >> b;
    int ret =where(T,b);
    if(ret!=-1)
    {
        for(int i=ret;i<T->sum;i++)
        {
//            T->a[i].name=T->a[i+1].name;
//            T->a[i].sex=T->a[i+1].sex;
//            T->a[i].age=T->a[i+1].age;
//            T->a[i].number=T->a[i+1].number;
//            T->a[i].address=T->a[i+1].address;
            T->a[i]=T->a[i+1];
        }
        T->sum--;
        cout<<"删除成功"<<endl;
    }else
    {
        cout<<"查无此人"<<endl;
    }
    system("pause");
    system("CLS");
}


void Find(tongxunlun *T)
{
    cout<<"请输入要查找的联系人姓名"<<endl;
    string name;
    cin>>name;
    int ret= where(T,name);
    if(ret==-1)
    {
        cout<<"该联系人不存在"<<endl;
    }
    else
    {
        cout<<"性别: "<<T->a[ret].name<<"\t";
        cout<<"年龄: "<<T->a[ret].age<<"\t";
        if(T->a[ret].sex==1) cout<<"性别:男"<<"\t";
        else cout<<"性别:女"<<"\t";
        cout<<"电话号码: "<<T->a[ret].number<<"\t";
        cout<<"家庭住址: "<<T->a[ret].address<<endl;
    }
    system("pause");
    system("CLS");
}

void modif(tongxunlun *T)
{
    cout<<"请输入要修改的联系人姓名"<<endl;
    string name;
    cin>>name;
    int ret= where(T,name);
    if(ret!=-1)
    {
        cout<<"请输入姓名:"<<endl;
        cin>>T->a[ret].name;
        cout<<"请输入年龄:"<<endl;
        cin>>T->a[ret].age;
        cout<<"请输入性别:"<<endl; cout<<"1--男 2--女"<<endl;
        cin>>T->a[ret].sex;
        while(true)
        {
            if(T->a[ret].sex!=1&&T->a[ret].sex!=2)
            {
                cout<<"性别有误请重新输入"<<endl;
                cin>>T->a[ret].sex;
            }
            else
                break;
        }
        cout<<"请输入电话号码:"<<endl;
        cin>>T->a[ret].number;
        cout<<"请输入家庭住址:"<<endl;
        cin>>T->a[ret].address;
        cout<<"修改成功"<<endl;
    }else
    {
        cout<<"该联系人不存在"<<endl;

    }
    system("pause");
    system("CLS");
}

void clear(tongxunlun *T)
{
    T->sum=0;
    cout<<"通讯录已清空"<<endl;
    system("pause");
    system("CLS");
}

void showmenu()
{
    cout<<"********************"<<endl;
    cout<<"*****1,添加联系人*****"<<endl;
    cout<<"*****2,显示联系人*****"<<endl;
    cout<<"*****3,删除联系人*****"<<endl;
    cout<<"*****4,查找联系人*****"<<endl;
    cout<<"*****5,修改联系人*****"<<endl;
    cout<<"*****6,清空联系人*****"<<endl;
    cout<<"*****0,退出通讯录*****"<<endl;
    cout<<"********************"<<endl;
}





int main()
{
    tongxunlun T;
    T.sum=0;
    int select;
    while(true)
    {
        showmenu();
        cin>>select;
        switch(select)
        {
            case 1://1,添加联系人
                tianjia(&T);
                break;
            case 2://2,显示联系人
                showman(T);
                break;
            case 3://3,删除联系人
            {
                Delete (&T);
            }
                break;
            case 4://4,查找联系人
                Find(&T);
                break;
            case 5://5,修改联系人
                modif(&T);
                break;
            case 6:
                clear(&T);
                break;
            case 0:
                cout<<"欢迎下次使用"<<endl;
                system("pause");
                return 0;
        }
    }




}