C语言菜鸟基础教程之求1到100的和

 更新时间:2017年10月03日 10:57:54   作者:翡翠森林Z  
在C语言中可以通过定义一个累加器(一个变量)并结合for循环来实现计算1到100之和。

题目:求1+2+3+……+98+99+100
(1)用数学方法求解
(2)编写C语言程序求解

解:
(1)数学方法

S = 1+2+3+……+98+99+100
 = (1+100) + (2+99) + (3+98) + …… + (49+52) + (50+51)
 = 101 * 50
 = 5050

(2)C语言编程

#include <stdio.h>

int main()
{
  int sum = 0; // 赋初值
  for(int i = 1; i <= 100; i++)
  {
    sum = sum + i;
  }
  
  printf("total is %d\n", sum);
}

运行结果:

total is 5050

分析:
(1)第一次循环

i = 1, sum = sum + i = 0 + 1 = 1,这里右边的sum的值为初值0,将1赋给左边的sum后,sum的最新值变成了1

(2)第二次循环

i = 2, sum = sum + i = 1 + 2 = 3, 这里右边的sum的值已经通过上一步的计算变成了1。把3赋值给左边的sum后,sum的最新值

就成了3

(3)第三次循环

i = 3, sum = sum + i = 3 + 3 = 6, 这里右边的sum的值已经通过上一步的计算变成了3。把计算结果6赋值给左边的sum后,sum的最新值就成了6

(4)第四次循环

i = 4, sum = sum + i = 6 + 4 = 10, 这里右边的sum的值已经通过上一步的计算变成了6。把计算结果10赋值给左边的sum后,sum的最新值就成了10

(5)……这样执行一百次后,得到的结果为5050

新知识点:

sum = sum + i可以写成sum += i,都是让sum和i相加后,把新的值赋给sum。
以后编程尽量使用+=这种方式。
理由:C语言要通过编译器编译,在编译器没开启优化的情况下,两种写法是完全等价的;编译器开启了优化后,+=的执行速度可能会快一点。(这个先有点印象即可,目前不用深入了解)

作业:
(1)调试上面的程序。每次运行到右大括号时,把鼠标悬在sum上面,观察sum的值。
上面的程序会循环100次,调试的时候,循环10次左右就可以step out了。

(2)
把sum = sum + i改成sum += i,运行结果

#include <stdio.h>

int main()
{
  int sum = 0; // 赋初值
  for(int i = 1; i <= 100; i++)
  {
    sum += i;
  }
  
  printf("total is %d\n", sum);
}

(3)在纸上默写这个程序。

相关文章

  • C++实现双向起泡排序算法

    C++实现双向起泡排序算法

    这篇文章主要为大家详细介绍了如何利用C++实现双向起泡排序算法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以尝试一下
    2022-11-11
  • C++实现智能柜管理系统

    C++实现智能柜管理系统

    这篇文章主要为大家详细介绍了C++实现智能柜管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++机房预约系统实现流程实例

    C++机房预约系统实现流程实例

    这篇文章主要介绍了C++机房预约系统实现流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • c语言调用汇编的方法

    c语言调用汇编的方法

    在此记录一下c调用汇编的方法,汇编使用的是AT&T语法。例子很简单,就是在给一个整数用汇编转换成二进制
    2013-11-11
  • vscode 安装go第三方扩展包填坑记录的详细教程

    vscode 安装go第三方扩展包填坑记录的详细教程

    这篇文章主要介绍了vscode 安装go第三方扩展包填坑记录,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • c++中 isupper()和islower()函数详解

    c++中 isupper()和islower()函数详解

    在C++中,islower()和isupper()是C++标准库中提供的两个字符判断函数,这两个函数用于判断一个字符是否为小写字母或大写字母,这篇文章主要介绍了c++ isupper() islower()的相关资料,需要的朋友可以参考下
    2024-05-05
  • C语言小程序 杨辉三角示例代码

    C语言小程序 杨辉三角示例代码

    输入要显示的杨辉三角的行数,会打印出金字塔型的杨辉三角,不过行数太多的话,效果不太好,可以再调整一下格式控制
    2013-07-07
  • Qt实现QLineEdit输入前提示输入范围并用正则表达式限制输入范围

    Qt实现QLineEdit输入前提示输入范围并用正则表达式限制输入范围

    在日常开发过程中QLineEdit作为输入框,有时要限制输入的内容,这篇文章主要给大家介绍了关于Qt实现QLineEdit输入前提示输入范围并用正则表达式限制输入范围的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • C语言函数基础教程分类自定义参数及调用示例详解

    C语言函数基础教程分类自定义参数及调用示例详解

    这篇文章主要为大家介绍了C语言函数的基础教程,主要包含C语言函数的分类,C语言函数自定义,C语言函数的参数及C语言函数的调用示例详解,有需要的朋友可以借鉴参考下
    2021-11-11
  • C语言使用posix正则表达式库的实现

    C语言使用posix正则表达式库的实现

    在C语言中,你可以使用 POSIX 正则表达式库(regex.h)来进行正则表达式的模式匹配,本文主要介绍了C语言使用posix正则表达式库的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12

最新评论