news 2026/8/20 23:11:42

C++从基础语法到递归、重载与宏定义

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++从基础语法到递归、重载与宏定义

题目及题解

1 判定素数

编写程序,用一个函数判定输入的某个数是否为素数。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#include <iostream>

#include <cmath>

// 判定素数函数

boolisPrime(intn) {

if(n < 2)returnfalse;

for(inti = 2; i <=sqrt(n); ++i) {

if(n % i == 0)returnfalse;

}

returntrue;

}

intmain()

{

intnum;

std::cout <<"输入一个整数: ";

std::cin >> num;

if(isPrime(num)) std::cout << num <<" 是素数"<< std::endl;

elsestd::cout << num <<" 不是素数"<< std::endl;

return0;

}

2 统计奇偶数

从键盘依次输入一列整数(输入0结束),编写函数,统计输入的整数序列中的奇数个数和偶数个数,在主函数中调用该函数并求输入的整数序列中的奇数个数和偶数个数。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include <iostream>

// 统计函数:通过引用返回结果

voidcountNumber(int&odd,int&even) {

intval;

while(std::cin >> val && val != 0) {

if(val % 2 == 0) even++;

elseodd++;

}

}

intmain()

{

intoddCount = 0, evenCount = 0;

std::cout <<"请输入一列整数(0结束): "<< std::endl;

countNumber(oddCount, evenCount);

std::cout <<"奇数: "<< oddCount <<" 个,偶数: "<< evenCount <<" 个"<< std::endl;

return0;

}

3 带默认参数的阶乘

定义一个带默认参数值的函数求 n ! n! n!,在主函数中调用两次该函数,一次给出实参,另一次不给实参,体会默认值的意义。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include <iostream>

longlongfactorial(intn = 5) {

longlongres = 1;

for(inti = 1; i <= n; ++i) res *= i;

returnres;

}

intmain()

{

// 给出实参

std::cout <<"3! = "<< factorial(3) << std::endl;

// 不给实参,使用默认值 5

std::cout <<"默认(5!) = "<< factorial() << std::endl;

return0;

}

4 求a ! + b ! + c ! a! + b! + c!a!+b!+c!

求 a ! + b ! + c ! a!+b!+c! a!+b!+c! 的值,要求用两个函数实现:函数 fac 求 n ! n! n!,函数 add 求三者之和。 a a a、 b b b、 c c c 的值由主函数输入,最终得到的值在主函数中输出。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#include <iostream>

longlongfac(intn) {

longlongres = 1;

for(inti = 1; i <= n; ++i) res *= i;

returnres;

}

longlongadd(longlongx,longlongy,longlongz) {

returnx + y + z;

}

intmain()

{

inta, b, c;

std::cout <<"输入 a, b, c: ";

std::cin >> a >> b >> c;

std::cout <<"结果: "<< add(fac(a), fac(b), fac(c)) << std::endl;

return0;

}

5 判定闰年

编写一个程序,判定用户输入的年份是否为闰年。闰年的判定用名为 isLeapYear 的 bool 型函数实现。

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <iostream>

boolisLeapYear(intyear) {

return(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);

}

intmain()

{

inty;

std::cout <<"输入年份: ";

std::cin >> y;

if(isLeapYear(y)) std::cout <<"是闰年"<< std::endl;

elsestd::cout <<"不是闰年"<< std::endl;

return0;

}

6 递归求斐波那契数列

1

2

3

4

5

6

7

8

9

10

11

12

13

#include <iostream>

intfib(intn) {

if(n == 1 || n == 2)return1;

returnfib(n - 1) + fib(n - 2);

}

intmain()

{

intn;

std::cout <<"输入 n: ";

std::cin >> n;

std::cout <<"第 "<< n <<" 个数是: "<< fib(n) << std::endl;

return0;

}

7 验证哥德巴赫猜想

写一个函数验证哥德巴赫猜想:一个不小于6的偶数可以分解为两个素数之和。要求:在主函数中输入一个偶数 n n n,判定 n n n 与6的大小。如果 n n n 不小于6,则调用函数 gotbaha,在 gotbaha 函数中再调用判定素数的函数 prime,并在主函数中输出“6=3+3”形式的结果。如果 n n n 小于6,则程序结束。

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

#include <iostream>

#include <cmath>

boolprime(intn) {

if(n < 2)returnfalse;

for(inti = 2; i <=sqrt(n); i++) {

if(n % i == 0)returnfalse;

}

returntrue;

}

voidgotbaha(intn) {

for(inti = 2; i <= n / 2; i++) {

if(prime(i) && prime(n - i)) {

std::cout << n <<"="<< i <<"+"<< (n - i) << std::endl;

return;

}

}

}

intmain()

{

intn;

std::cout <<"输入一个偶数: ";

std::cin >> n;

if(n >= 6 && n % 2 == 0) gotbaha(n);

elsestd::cout <<"程序结束"<< std::endl;

return0;

}

8 函数重载 add

使用 add 作为重载函数名,分别定义求3个整数之和的函数和求两个浮点数之和的函数,并编程实现。

1

2

3

4

5

6

7

8

9

#include <iostream>

intadd(inta,intb,intc) {returna + b + c; }

floatadd(floata,floatb) {returna + b; }

intmain()

{

std::cout <<"3个整数和: "<< add(1, 2, 3) << std::endl;

std::cout <<"2个浮点数和: "<< add(1.5f, 2.5f) << std::endl;

return0;

}

9 内联函数求和

在主函数中输入两个数 m , n m, n m,n,用内联函数求和,并输出结果。

1

2

3

4

5

6

7

8

9

#include <iostream>

inlineintgetSum(intm,intn) {returnm + n; }

intmain()

{

intm, n;

std::cin >> m >> n;

std::cout <<"和为: "<< getSum(m, n) << std::endl;

return0;

}

10 头文件实现最大值

编写一个程序,将求两个实数中较大值的函数放在一个头文件中,在源程序文件中包含该头文件,并实现输入3个实数,求出最大值。

my_max.h

1

2

3

4

#ifndef MY_MAX_H

#define MY_MAX_H

inlinedoublegetMax(doublea,doubleb) {return(a > b) ? a : b; }

#endif

main.cpp

1

2

3

4

5

6

7

8

9

10

#include <iostream>

#include "my_max.h"

intmain()

{

doublea, b, c;

std::cin >> a >> b >> c;

doubleres = getMax(getMax(a, b), c);

std::cout <<"最大值: "<< res << std::endl;

return0;

}

11 带参数的宏求乘积

编写一个程序,输入两个整数,求它们的乘积。用带参数的宏实现。

1

2

3

4

5

6

7

8

9

#include <iostream>

#define MUL(a, b) ((a) * (b))

intmain()

{

intx, y;

std::cin >> x >> y;

std::cout <<"乘积: "<< MUL(x, y) << std::endl;

return0;

}

12 递归逆序输出

编写一个递归函数,将整数的每个位上的数字按相反的顺序输出。例如,输入5678,输出8765。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#include <iostream>

voidreverse(intn) {

if(n == 0)return;

std::cout << n % 10;

reverse(n / 10);

}

intmain()

{

intn;

std::cout <<"输入整数: ";

std::cin >> n;

if(n == 0) std::cout <<"0";

elsereverse(n);

std::cout << std::endl;

return0;

}

结尾

到此这篇关于C++从基础语法到递归、重载与宏定义的文章就介绍到这了

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 23:11:18

Java大厂面试核心:Spring Boot与微服务架构深度解析

1. 互联网大厂Java技术栈面试全景解析最近三年Java技术岗的竞争态势愈发激烈&#xff0c;尤其是头部互联网公司的岗位&#xff0c;经常出现数百人竞争一个职位的场景。根据我作为面试官参与过的近百场技术面试经验&#xff0c;候选人普遍存在技术栈理解碎片化、项目经验与理论脱…

作者头像 李华
网站建设 2026/8/20 23:10:14

新能源汽车补贴政策下的行业生态与后补贴时代竞争力分析

1. 从“补贴”到“生态”&#xff1a;一个行业的明暗面干了这么多年汽车行业&#xff0c;从传统燃油车到新能源&#xff0c;我亲眼见证了一个时代的更迭。最近几年&#xff0c;关于新能源汽车的各种“潜规则”和“骗补”传闻&#xff0c;在圈内圈外都传得沸沸扬扬。很多人一听“…

作者头像 李华
网站建设 2026/8/20 23:09:17

【iOS】 Alamofire + Moya + SwiftData 完整教程

这三个框架是构建现代 iOS 应用的数据层的经典组合&#xff0c;它们各司其职&#xff0c;形成了一个清晰的网络请求 → 数据抽象 → 本地持久化的架构闭环。 架构概览&#xff1a;三者的角色定位 Alamofire (网络地基): 基于URLSession的 Swift 网络库&#xff0c;负责执行实际…

作者头像 李华
网站建设 2026/8/20 23:08:08

新能源汽车技术全解析:从三电系统到智能驾驶的演进与应用

1. 从“四个轮子加沙发”到“四个轮子加电脑”&#xff1a;我们到底在谈论什么&#xff1f;如果你在十年前问一个路人“什么是汽车”&#xff0c;他大概率会告诉你&#xff0c;那是一台烧汽油或柴油、能带着人跑的机器。但今天&#xff0c;当“新能源汽车”这个词铺天盖地而来时…

作者头像 李华
网站建设 2026/8/20 23:07:20

GPTZero降AI英文按字怎么改,助研君最灵活

GPTZero降AI英文按字怎么改&#xff0c;助研君最灵活很多海外课程的平台&#xff0c;会直接用 GPTZero 来查作业的 AI 率。GPTZero 的判定跟 Turnitin 不太一样&#xff0c;它会把一段文字分成人写的&#xff08;Human&#xff09;、混合的&#xff08;Mixed&#xff09;、AI 写…

作者头像 李华