共有四个.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)
其中:
$(OBJS):%.o:%.cpp
$(CXX) -c $< $(CXXFLAGS) -o $@
是makefile中的静态模式,语法为:
<targets ...>: <target-pattern>: <prereq-patterns ...>
<commands>
等效于:
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.【计算字符个数】char_num.cpp
写出一个程序,接受一个由字母和数字组成的字符串,和一个字符。
然后输出输入字符串中含有该字符的个数。
不区分大小写。
输入
ABCDEFABC
A
输出
2
#include<iostream>
#include<string.h>
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;
}
2.【字符串旋转】code.cpp
对于一个字符串,和字符串中的某一个位置,请设计一个算法,将包括位置在内的左侧部分异动到右侧,将右侧部分异动到左侧。
给的字符串A以及特定位置P(下标从0开始),请返回旋转后的结果。
输入
ABCDEFGH
4
输出
FGHABCDE
#include<iostream>
#include<string.h>
#include<stdlib.h>
#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;
}
3.【101-200素数】sushu.cpp
判断并输出101到200之间的素数,用空格隔开。
#include<iostream>
#include<string.h>
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;
}
4.【输出斐波那契数列】getFibonacci.cpp
#include<iostream>
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;
}