C++程序设计实践学材系列(21)——1.5.1 引入循环——输出星号图

简介: 回到系列文章的目录——[系列文章目录]  回到本章目录——[第1章目录] 1.5.1 引入循环——输出星号图  例 1.5 编程序,输出8个星号(即'*'),如下图    这个容易,也就输出一行信息。  可以写出程序://例程ch1-9.cpp#include <iostream>using namespace std;int main(){ cout&lt

回到系列文章的目录——[系列文章目录]  回到本章目录——[第1章目录]

 

1.5.1 引入循环——输出星号图

  例 1.5 编程序,输出8个星号(即'*'),如下图
  
  这个容易,也就输出一行信息。
  可以写出程序:

//例程ch1-9.cpp
#include <iostream>
using namespace std;
int main()
{
    cout<<"********"<<endl;
    return 0;
}

  现在问题变为,输出50个呢?你可以一边输入一边数:1、2、3、4、5……

  那要输出500个星号甚至更多呢?聪明的人不做这种重复的事。
  让计算机会数数。计算机本不会数数。编好了让计算机能数数的程序,计算机也便会数数了。
  例1.6 编程序,输出50个星号。
  写出的程序是:
//例程ch1-10.cpp
#include <iostream>
using namespace std;
int main()
{
    int i=0;
    while(i<50)     //当i<50成立,重复执行花括号({ })内的语句
    {
        cout<<"*";
        i++;
    }
    cout<<endl;
    return 0;
}
  这一个程序的执行结果如下:
  
  如果愿意,可以亲自数一数,计算机是否出错。
  我们试着读一读这个包含着循环的程序。
  我们数数,1、2、3、4、5……一直下去,在念出下一个数之前,心里(实际上是脑袋里)是记着上一个数的,是在上一个数的基础上,再报出下一个数来的。这件事情做得已经很熟练了,以至于我们常常不再注意。
  在编写程序的时候,面对让计算机数数的需要,我们要一个变量来表示出这个数。这是人脑中熟练无比事情要让计算机完成的时候,专业人员必须有意而为一件事。正如用初等方程解决数学问题时,面对“一列火车从甲地开往乙地,每小时行90千米,行到一半时耽误了12分钟,当着列火车每小时加快10千米后,恰好按时到了乙地,求甲、乙两站距离?”之类的问题,我们先“设甲、乙两站距离为S千米”一样,在程序中,我们写出了“int i=0”,就是在宣布“用i作计数”。顺便地,前面加一个“int”,是C++的要求,声明i的类型是整数类型,而后面加一个“=0”意味着i的值,就从0开始。
  由于初值为0的i的存在,下面7-11行的循环有了筋骨。我们用下面的“人话”转述7-11行C++语句想说的意思:
  “当没有数到50(i<50)时,输出一个星号(cout<<"*"),数下一个数(i++)”。
  和i++初次见面,介绍一下。可以简单认为,i++相当于i=i+1,即“将i的值赋值为i+1”,或“i值增加1”。i++是C/C++中非常有特色的记号,i++,i加加,i的值增加1,从现在开始,你要喜欢这样的描述。
  于是从0开始,输出一个星号,数下一个数1,再输出一个星号,数下一个数2,再输出一个星号,数下一个数3,……数到50时,不再输出了。
  也就是说,从数0开始,一直到数至49,都要输出星号。心眼里转一转,恰好输出了50个星号。
  i从0开始,当i<50时重复做同样的工作,当i等于50时,就不重复了。从0重复到49,一共是50次。
  一直想着是否这个例子中,i的值从1开始,从1重复到50,未尝不可,一样的效果。但学计算机,尤其是学C/C++,习惯于从0开始计数。
  这个学程不想过多用语言传递信息,但此处多说了几句,还是违反这个原则了。可以琢磨一下。要看得不爽,影响感受了,继续往下。
  下面,给出解决“输出50个星号”这个问题的多种表述方法法,请读者进行对照认识。
  


回到系列文章的目录——[系列文章目录]  回到本章目录——[第1章目录]

目录
相关文章
|
1月前
|
存储 C++ 容器
学会在 C++ 中使用变量:从定义到实践
C++中的变量是数据容器,包括`int`、`double`、`char`、`string`和`bool`等类型。声明变量时指定类型和名称,如`int myNum = 15;`。`cout`与`&lt;&lt;`用于显示变量值。常量用`const`声明,值不可变。变量名应唯一,遵循特定命名规则,常量声明时需立即赋值。
113 1
|
1月前
|
存储 算法 编译器
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
47 1
|
1月前
|
算法 程序员 C语言
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践
56 0
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
|
1月前
|
算法 Java 编译器
【C++ 14新特性 】C++14 数字分隔符:深入理解与实践
【C++ 14新特性 】C++14 数字分隔符:深入理解与实践
54 2
|
1月前
|
存储 Linux 测试技术
无效数据处理之道:Linux系统编程C/C++实践探索(三)
无效数据处理之道:Linux系统编程C/C++实践探索
17 0
|
1月前
|
存储 测试技术 Linux
无效数据处理之道:Linux系统编程C/C++实践探索(二)
无效数据处理之道:Linux系统编程C/C++实践探索
31 0
|
1月前
|
安全 Linux 测试技术
无效数据处理之道:Linux系统编程C/C++实践探索(一)
无效数据处理之道:Linux系统编程C/C++实践探索
70 0
|
1月前
|
存储 安全 编译器
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
70 0
|
1月前
|
算法 网络协议 编译器
【C++ 14 新特性】C++14二进制字面量:深度探索与实践
【C++ 14 新特性】C++14二进制字面量:深度探索与实践
38 1
|
8天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。