C语言程序中各种功能基本上都是由函数来实现的,在C语言的发展过程中建立了功能丰富的函数库,C++从C语言继承了些函数功能。如果要用函数库中的函数,就必须在程序文件中包含文件中有关的头文件,在不同的头文件中,包含了不同的函数的声明。
在C语言的传统方法中,头文件名包括后缀.h,如stdio.h,math.h等。由于C语言没有命名空间,头文件并不存放在命名空间中,因此在C++程序文件中如果用到带后缀.h的头文件时,不必用命名空间,只需在文件中包含所用的头文件即可。代码示例如下:
#include
在C++的新方法,系统提供的头文件不包括后缀.h,如iostream,string等。为了表示与C语言的头文件有联系又有区别,C++所用的头文件名在C语言的相应的头文件名之前加一个字母c。例如C语言中有关输入输出的头文件名为stdio.h在C++中相应头文件名为cstdio。C语言的头文件string.h在C++的头文件名为cstring。代码示例如下:
- #include
- #include
- using namesapce std;
在C++中,cstdio是一个标准头文件,它包含了标准库中的I/O(输入/输出)函数。这个头文件实际上是C语言标准库
在C++程序开发中,虽然推荐使用C++自己的I/O流库(如iostream),但在某些情况下使用cstdio还是有必要的,诸如printf()、scanf()等函数。
| 转换说明符 | 数据类型 |
|---|---|
| %c | 字符 |
| %d | 整数 |
| %f | 浮点数 |
| %lf | 双精度浮点数 |
| %s | 字符串,以空格分隔 |
示例如下:
- #include
-
- int main(){
- // 使用printf函数输出控制台
- printf("Hello world!\n");
-
- char input[100];
- // 使用scanf函数从控制台读取一个字符串
- printf("Enter a string:");
- scanf("%s", input);
- // 使用printf函数输出读取的字符串
- printf("You entered: %s\n", input);
- return 0;
- }
运行后结果如下图:

为了防止缓冲区溢出,该函数还可以指定输入字符的最大长度,代码如下:
- #include
-
- int main(){
- char input[100];
- // 使用scanf函数从控制台读取一个字符串
- printf("Enter a string:");
- scanf("%3s", input);
- // 使用printf函数输出读取的字符串
- printf("You entered: %s\n", input);
- return 0;
- }
只要在%号和s字符之间指定缓冲区长度即可,运行后输入Hello只能输出指定长度的字符串,如下图:

在前面的示例中,当遇到空格后就结束了,这是因为scanf函数不会自动处理空格作为字符串一部分,怎么样包含空格连着输出一个完整的字符串信息呢。这时需要作此特殊处理,使用%[^\n]说明符告诉scanf函数读取输入直到遇到换行符为止,这样就能包含空格了。
%[]格式说明符用于读取指定字符集的字符,&\n表示读取直到遇到换行符为止。示例代码如下:
- #include
-
- int main(){
- char input[100];
- // 使用scanf函数从控制台读取一个字符串
- printf("Enter a string:");
- scanf("%[^\n]", input);
- // 使用printf函数输出读取的字符串
- printf("You entered: %s\n", input);
- return 0;
- }
运行后结果如下图:

当然,这里也可以指定缓冲区大小,代码示例如下:
- #include
-
- int main(){
- char input[100];
- // 使用scanf函数从控制台读取一个字符串
- printf("Enter a string:");
- scanf("%8[^\n]", input);
- // 使用printf函数输出读取的字符串
- printf("You entered: %s\n", input);
- return 0;
- }
当指定缓冲区大小为8时,hello有5个字符,空格+wo为3个字符,刚好输出8个字符结束。结果如下图:

在C++中,
以下为常见的函数:
| 函数 | 说明 |
|---|---|
| sin(x) | 正弦函数 |
| cos(x) | 余弦函数 |
| tan(x) | 正切函数 |
| asin(x) | 反正弦函数(返回弧度) |
| acos(x) | 反余弦函数(返回弧度) |
| atan(x) | 反正切函数(返回弧度) |
| atan2(y, x) | 四象限反下切函数(返回弧度) |
| 函数 | 说明 |
|---|---|
| sinh(x) | 双曲正弦函数 |
| cosh(x) | 双曲余弦函数 |
| tanh(x) | 双曲正切函数 |
| 函数 | 说明 |
|---|---|
| exp(x) | e的x次幂 |
| log(x) | 自然对数(以e为底) |
| log10(x) | 以10为底的对数 |
| pow(x,y) | x的y次幂 |
| 函数 | 说明 |
|---|---|
| ceil(x) | 不小于x的最小整数(向上取整) |
| floor(x) | 不大于x的最大整数(向下取整) |
| round(x) | 最接近x的整数(四舍五入) |
| trunc(x) | x的整数部分(截断小数部分) |
| 函数 | 说明 |
|---|---|
| sqrt(x) | x的平方根 |
| fabs(x) | x的绝对值 |
| ldexp(x, exp) | 计算x*(2^exp) |
| frexp(x, &exp) | 将浮点数分解为尾数和指数 |
| fmod(x, y) | 计算x除以y的余数(浮点数) |
注意:
中的函数通常使用弧度作为角度的单位,而不是度。如果你使用度作为角度单位,需要先将它们转换为弧度,公式为:弧度=度*( /180)。
了解头文件cmath中一些常见的函数后,我们用它来解一元二次方程,的实根,如果方程没有实根,则输出有关警告信息。
解析:求根公式为,公式中的
符号表示解的两种可能性,即方程的两个解是相同的(当判别
时)或不同的(当判别
时)。这个公式通过直接应用,可以快速找到一元二次方程的解。
示例代码如下:
- #include
- #include
// sqrt函数定义在cmath头文件中 - using namespace std;
-
- // 函数用于求解二次方程
- void solveQuadraticEquation(double a, double b, double c){
- // 计算判别式
- double dis = b * b - 4 * a * c;
- double r1, r2;
- // 检查判别式的值
- if(dis > 0){
- // 两个不同的实根
- r1 = (-b + sqrt(dis)) / (2*a);
- r2 = (-b - sqrt(dis)) / (2*a);
- cout <<"The equation has two different real roots " <
" and " < - } else if(dis == 0){
- // 两个相同的实根
- r1 = r2 = -b / (2*a);
- cout <<"The equation has two identical real roots of " <
- } else{
- cout <<"The equation has no real roots" <
- }
- cout <
- }
-
- int main(){
- // 定义变量
- double a, b, c;
- do{
- cout <<"Please output the values of a,b,c and press enter:" <
- cin >>a >>b >>c;
- solveQuadraticEquation(a, b, c);
- } while(a != 0);
- cout <<"end" <
- return 0;
- }
运行后结果如下图:

-
相关阅读:
卷积神经网络基础
【斗罗二】再度魔改,弓老被删,冰帝武魂提前曝光,官方经费已不足
算法设计与分析 | 众数问题(c语言)
async/await实现Promise.acll()
KVM报错:Unable to connect to libvirt qemu:///system. 确定 ‘libvirtd’ 守护进程正在运行。
JavaSE基础加强、数据结构
智能物流新纪元:分布式I/O模块重塑仓储自动化
数据结构——实现通讯录(附源码)
消息队列-RabbitMQ:延迟队列、rabbitmq 插件方式实现延迟队列、整合SpringBoot
java计算机毕业设计石家庄市居家养老服务平台源程序+mysql+系统+lw文档+远程调试
-
原文地址:https://blog.csdn.net/jiciqiang/article/details/139700397