【(1+1+2+1+2+3+到1+2+3+到+n)】2023-3-5

缘由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 语句

终止 loopswitch 语句,程序流将继续执行紧接着 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/7895988
    int h = 0, q = 0, l = 0, n = 0;
    std::cin >> n;
    qh:if (q < n)
    {
        l += h += ++q;
        goto qh;
    }
   std::cout << l << "\n";
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值