【(1+1+2+1+2+3+到1+2+3+到+n)】2023-3-5
创始人
2024-05-29 22:52:03
0

缘由https://ask.csdn.net/questions/7895988

鉴于初学知识储备不足认识模糊,这篇文章就从最基础的C++知识入手,用详细资料来描述这个程序关联的知识,由于本程序使用一行语句完成运算,因此,将按运算符(自左向右)结合律逐步展开。

1、C++ 函数

函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。

您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。

函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。

C++ 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。

函数还有很多叫法,比如方法、子例程或程序,等等。

定义函数

C++ 中的函数定义的一般形式如下:

return_type function_name( parameter list ){ body of the function}

在 C++ 中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:

  • 返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。

  • 函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。

  • 参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。

  • 函数主体:函数主体包含一组定义函数执行任务的语句。

2、C++ 循环

有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。

编程语言提供了允许更为复杂的执行路径的多种控制结构。

循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:

循环类型

C++ 编程语言提供了以下几种循环类型。点击链接查看每个类型的细节。

循环类型

描述

while 循环

当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。

for 循环

多次执行一个语句序列,简化管理循环变量的代码。

do...while 循环

除了它是在循环主体结尾测试条件外,其他与 while 语句类似。

嵌套循环

您可以在 while、for 或 do..while 循环内使用一个或多个循环。

循环控制语句

循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。

C++ 提供了下列的控制语句。点击链接查看每个语句的细节。

控制语句

描述

break 语句

终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。

continue 语句

引起循环跳过主体的剩余部分,立即重新开始测试条件。

goto 语句

将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

3、C++ 自增自减运算符:

自增运算符 ++ 会把操作数加 1,自减运算符 -- 会把操作数减 1。因此:

x = x+1;

等同于

x++;

同样的:

x = x-1;

等同于

x--;

无论是自增运算符还是自减运算符,都可以放在操作数的前面(前缀)或后面(后缀)。例如:

x = x+1;

可以写成:

++x; // 前缀形式

或者:

x++; // 后缀形式

前缀形式与后缀形式之间有一点不同。如果使用前缀形式,则会在表达式计算之前完成自增或自减,如果使用后缀形式,则会在表达式计算之后完成自增或自减。

因此,此程序中的++q就属于前缀式,当程序GOTO循环运行到++q时就会对q的值+1操作。

4、赋值运算符

下表列出了 C++ 支持的赋值运算符:

运算符

描述

实例

=

简单的赋值运算符,把右边操作数的值赋给左边操作数

C = A + B 将把 A + B 的值赋给 C

+=

加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数

C += A 相当于 C = C + A

-=

减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数

C -= A 相当于 C = C - A

*=

乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数

C *= A 相当于 C = C * A

/=

除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数

C /= A 相当于 C = C / A

%=

求模且赋值运算符,求两个操作数的模赋值给左边操作数

C %= A 相当于 C = C % A

<<=

左移且赋值运算符

C <<= 2 等同于 C = C << 2

>>=

右移且赋值运算符

C >>= 2 等同于 C = C >> 2

&=

按位与且赋值运算符

C &= 2 等同于 C = C & 2

^=

按位异或且赋值运算符

C ^= 2 等同于 C = C ^ 2

|=

按位或且赋值运算符

C |= 2 等同于 C = C | 2

具备了以上C++知识,就可以来解读这个函数是如何执行完成既定任务了;执行函数时,自行顺序自上而下逐条执行,首先是变量的声明,定义了4个INT类型的变量,其中n用于输入一个数表示范围,q用于从1到n每次执行自增,h用于每次加上q,l用于每次加上h,从而完成题目中的1+(1+2)+(1+2+3...n)这样功能;

当输入n的值后就进入由GOTO构成的有条件循环,进入循环前判断q是否小于n,若小于则条件符合进入循环内,执行 l += h += ++q语句,按运算符自左向右结合,首先自行++q,因为q初始值为0,因此自增为1,再向左执行h+=赋值也为1,再向左执行l+=赋值也为1,这样这条语句就算执行完毕了,就完成了题目要求运算的第一项1,按程序执行顺序接下来就执行goto语句跳转到标记qh,之后执行下一条判断语句,这样就又回到了goto构成的有条件循环的判断,加入n的值为输入的2,则q这是为1,符合判断条件再次进入循环体内,接下来又执行l += h += ++q语句,这时++q为2,h原先有1再+2这样就完成了题目中的第二项(1+2)l原先有1再加h就完成了题目中的1+(1+2)功能,上面假设我们输入了2,那么这样就完成了题目要求的1到n的运算了即1+(1+2),这时执行goto跳转到qh语句后判断q不小于n了,因此就不会再次进入goto构成的有条件循环体内,也即结束了循环,按程序执行顺序这时执行std::cout << l << "\n"语句输出运算完成的值,这样就完成了题目既定任务了,同样道理若输入为3则执行分析如上述步骤运算后输出运算值,这样就把函数是如何工作的道理讲明了。

void (1+1+2+1+2+3+到1+2+3+到+n)()
{//缘由https://ask.csdn.net/questions/7895988int h = 0, q = 0, l = 0, n = 0;std::cin >> n;qh:if (q < n){l += h += ++q;goto qh;}std::cout << l << "\n";
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...