• makefile编译出多个可执行文件


           共有四个.cpp文件,需要编译出四个可执行文件
    在这里插入图片描述

           makefile

    all:code char_num sushu getFibonacci
    #.PHONY:all 试了一下,这一行加不加都可以
    CXXFLAGS = -g -Wall
    CXX = g++
    OBJS = code.o char_num.o sushu.o getFibonacci.o
    code:code.o
    	$(CXX)  code.o -o code
    #上面不能将code.o替换为$(OBJS),不然会出错:multiple definition of `main'; 下面两个也是
    char_num:char_num.o
    	$(CXX)  char_num.o -o char_num
    sushu:sushu.o
    	$(CXX)  sushu.o -o sushu
    
    getFibonacci:getFibonacci.o
    	$(CXX) getFibonacci.o -o getFibonacci
    
    $(OBJS):%.o:%.cpp
    	$(CXX) -c $< $(CXXFLAGS) -o $@
    #-c命令不能指定多个文件,所以第上一行不能用$^(所有依赖文件列表),只能用$<(第一个依赖文件名称)
    .PHONY:clean
    clean:
    	rm code char_num sushu  getFibonacci $(OBJS)
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

           其中:

    $(OBJS):%.o:%.cpp
    	$(CXX) -c $< $(CXXFLAGS) -o $@
    
    • 1
    • 2

           是makefile中的静态模式,语法为:

    <targets ...>: <target-pattern>: <prereq-patterns ...>
                <commands> 
    
    • 1
    • 2

           等效于:

    code.o:code.cpp
    	$(CXX) -c $< $(CXXFLAGS) -o $@
    char_num.o:char_num.cpp
    	$(CXX) -c $< $(CXXFLAGS) -o $@
    sushu.o:sushu.cpp
    	$(CXX) -c $< $(CXXFLAGS) -o $@
    getFibonacci.o:getFibonacci.cpp
    	$(CXX) -c $< $(CXXFLAGS) -o $@
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1.【计算字符个数】char_num.cpp

           写出一个程序,接受一个由字母和数字组成的字符串,和一个字符。
           然后输出输入字符串中含有该字符的个数。
           不区分大小写。
           输入
           ABCDEFABC
           A
           输出
           2

    #include
    #include
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
        string str;
        char ch;
        int count = 0;
    
        cin >> str;
        cin >> ch;
    
        for(unsigned long i=0; i<str.size(); i++) {
            if(str[i] == ch || str[i] == (ch+32) || str[i] == (ch-32)) {
                count++;  
            }
        }
        cout << count << endl;
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2.【字符串旋转】code.cpp

           对于一个字符串,和字符串中的某一个位置,请设计一个算法,将包括位置在内的左侧部分异动到右侧,将右侧部分异动到左侧。
           给的字符串A以及特定位置P(下标从0开始),请返回旋转后的结果。
           输入
           ABCDEFGH
           4
           输出
           FGHABCDE

    #include
    #include
    #include
    #include"code.h"
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
        string origin,head,hail,resault;
        int num;
        cin >> origin;
        cin >> num;
    
        head = origin.substr(num+1,origin.size());
        hail = origin.substr(0,num+1);
        resault += head += hail;
        cout << resault << endl;
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    3.【101-200素数】sushu.cpp

           判断并输出101到200之间的素数,用空格隔开。

    #include
    #include
    
    using namespace std;
    
    int isSushu(int n)
    {
        for(int i = 2; i < n; i++) {
            if(n % i == 0) {
                return 0;
            }
        }
        return 1;
    }
    
    int main(int argc, char* argv[])
    {
        //打印100~200之间的素数
        for(int i = 101; i < 200; i++) {
            if(isSushu(i) == 1) {
                cout << i << " ";
            }
        }
        cout << endl;
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    4.【输出斐波那契数列】getFibonacci.cpp

    #include
    
    
    using namespace std;
    
    int getFibonacci(int n)
    {
        if(n == 0) {
            return 0;
        }
        if(n == 1) {
            return 1;
        }
        return (getFibonacci(n-1) + getFibonacci(n-2));
    }
    
    int main(int argc, char* argv[])
    {
        int n;
        cin >> n;
        int resault = getFibonacci(n);
        cout << resault << endl;
        return 0;
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    结果:

    在这里插入图片描述

  • 相关阅读:
    电机与拖动 - 8 直流电机的电力拖动
    c++生成随机数(猜数字游戏)
    Clog——基于C语言的日志系统设计
    论如何提升学习的能力
    Neo4j最新安装教程(图文版)
    Jackson ImmunoResearch 用于蛋白质印迹的偶联物方案
    图像处理中底层、高层特征、上下文信息理解
    CDH大数据平台 25Cloudera Manager Console之sqoop实战测试(markdown新版)
    字节应届生薪资都能2万+,年薪30万,这样工作真的开心吗?
    Python数据分析实战-使用装饰器为函数增加异常处理功能(附源码和实现效果)
  • 原文地址:https://blog.csdn.net/wlswls1711/article/details/126749429