C++ Primer - 开始

本文介绍了C++的基础知识,包括程序的编写、编译与运行,变量的定义,基本的输入输出操作,流程控制语句如if、while和for的使用,以及如何使用类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写一个简单的C++程序

int main()
{
    return 0;
}

int:返回类型(return type)
main:主函数名(function name)
():里面是形参列表(parameter list),这里为空
{}:里面是函数体(function body),函数体以左花括号开始,右花括号结束,里面是语句块(block of statement)

编译、运行程序

命令行运行编译器

$ cc prog1.cc

Windows系统生成可执行文件prog1.exe,UNIX生成a.out
Windows系统执行可执行文件命令如下:

$ prog1

或者显式指出文件的位置:

$ .\prog1

UNIX系统执行可执行文件的命令如下:

$ a.out

或者指出文件位置:

$ ./a.out

UNIXWindows系统中,执行完一个程序后,都可以通过echo命令获得其返回值。
UNIX系统:

$ echo $?

Windows系统:

$ echo %ERRORLEVEL%

初识输入输出

标准库 (standard library) iostream 来提供 IO 机制,iostream 包含 istreamostream 分别表示 输入流输出流
标准库定义了4个 IO 对象,分别是cin (see-in)、cout (see-out)、cerr (see-err)和clog (see-log)。
cin:标准输入(standard input)
cout:标准输出(standard output)
cerr:输出警告和错误信息
clog:输出程序运行时的一般性消息

一个使用 IO 库的程序

#include <iostream>
int main()
{
    std::cout << "Enter two numbers:" << std::endl;
    int v1 = 0, v2 = 0;
    std::cin >> v1 >> v2;
    std::cout << "The sum of " << v1 << " and " << v2
              << " is " << v1+v2 << std::endl;
    return 0;
}

执行结果如下图:
这里写图片描述
#include < iostream >:包含头文件(header),#include和头文件应该在同一行,一般放在源文件开始的位置
<<:输出运算符
>>:输入运算符
std:命名空间
endl:操纵符(manipulator)
:::作用域运算符

注释简介

有两种注释:单行注释(//)界定符对注释(/* */)
//:通常用于单行或半行*注释
/* */:多行注释,不能嵌套。就近原则匹配

控制流

while 语句

语法规则

while (condition)
    statement

例如:

while (val <= 10) {
    sum += val;
    ++val;
}

<=:小于等于运算符,比较 val10 的大小
+=:复合赋值运算符,上面的语句相当于 sum = sum + val;
++:前缀递增运算符,等价于 val = val + 1;

for语句

语法

for (init-statement; condition; expression)
    statement

例如:

for (int val=1; val <= 10; ++val)
    sum += val;

读取数量不定的输入数据

#include <iostream>
int main()
{
    int sum = 0, value = 0;
    while (std::cin >> value) {
        sum += value;
    }
    std::cout << "Sum is " << sum << std::endl;
    return 0;
}

这里写图片描述
这里使用了 istream 对象作为条件,其效果是检测流的状态。如果流是有效的,即未遇到错误,那么检测成功。当遇到 文件结束符(end-of-file),或者是无效的输入(如读入的不是整数),istream 对象的状态会变为无效,会使条件变假。

从键盘输入文件结束符
Windows:Ctrl+Z
UNIX:Ctrl+D

if 语句

语法

if (condition)
    statement

例如:

if (val == currVal)
    ++cnt;
else {
    std::cout << currVal << " occurs " << cnt << " times" << std::endl;
    currVal = val;
    cnt = 1;
}

类简介

为了使用类,我们需要了解三件事情:

  • 类名是什么?
  • 它是在哪里定义的?
  • 它支持什么操作?

Sales_item

具体见这里
简单应用:

#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item book;
    // 读入ISBN号、售出的册数以及销售价格
    std::cin >> book;
    // 写入ISBN号、售出的册数、总销售额和平均价格
    std::cout << book << std::endl;
    return 0;
}
#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item item1, item2;
    // 读取一对操作记录
    std::cin >> item1 >> item2;
    // 打印它们的和
    std::cout << item1 + item2 << std::endl;
    return 0;
}

使用文件重定向
Windows 系统下,假设写了一个 addItems 的程序,如下:

#include <iostream>
using namespace std;

int main()
{
    int a=0, b=0;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;   
}

执行此程序时不想一直手动输入 ab 的值,此时可以借助文件重定向。新建一个txt格式的文件,命名为 in.txt ,如果输出到文件,也可以再新建一个txt文件,命名为 out.txtin.txt 文件写入 ab 的值, 如1 2,然后在cmd窗口执行命令:

$ addItems <in.txt >out.txt

out.txt 文件会显示 3 。

初识成员函数

#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item item1, item2;
    std::cin >> item1 >> item2;
    // 首先检查item1和item2是否表示相同的书
    if (item1.isbn() == item2.isbn()) {
        std::cout << item1 + item2 << std::endl;
        return 0;    // 表示成功
    } else {
        std::cerr << "Data must refer to same ISBN" << std::endl;
        return -1;    // 表示失败
    }
}

item1.isbn():调用名为 isbn成员函数 (member function) ,有时也叫方法 (method) 。. 叫做点运算符() 叫做调用运算符,里面放置实参(argument) 列表,这里为空。

书店程序

#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item total;
    if (std::cin >> total) {
        Sales_item trans;
        // 读入并处理剩余交易记录
        while (std::cin >> trans) {
            // 如果是相同的书
            if (total.isbn() == trans.isbn() ) 
                total += trans;
            else {
                // 打印前一本书的结果
                std::cout << total << std::endl;
                total = trans;
            }
        }
        // 打印最后一本书的结果
        std::cout << total << std::endl;
    } else {
        // 没有输入,警告读者
        std::cerr << "No data?" << std::endl;
        return -1;    // 表示失败
    }
    return 0;
}

具体执行过程不再演示,注意相同 ISBN 号的书要放在一起输入。

小结

本章学习的知识有:

  • 编译、运行简单的C++程序
  • 定义变量
  • 输入和输出
  • if、while、for 语句
  • 类的使用。
内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值