赵yyyyy 发表于 2022-7-18 21:31:50

【C++】打卡帖1:流程控制

本帖最后由 赵yyyyy 于 2022-7-26 20:11 编辑

俗话说的好,“学学半”,我发帖的目的是通过教其他新手入门检验我的学习成果,同时督促我学习C++,所以有任何想法请回复!
我先从C++的流程控制开讲。
为什么从这里开讲呢?因为流程之于编程就相当于汉字之于汉语,编程可以没有代码(比如screach),但不能没有流程,所以我从流程控制开始讲起。
废话不多说,开讲!
流程分为顺序、选择和循环结构。顺序,顾名思义,就是按顺序执行代码,如下:
#include<iostream>/*包含头文件,头文件包含了我们需要用到的指令和算法*/
using namespace std;/*分配命名空间,暂时不讲*/

int main()
{cout<<"你好!"<<endl;//endl是换行
cout<<"你好!+1"<<endl;
cout<<"你好!+2"<<endl;
return 0;
}//以下其余代码省略#include<iostream>,int main(),return 0,using namespace std,如需编译,请自行添加,否则会报错
这段代码的执行结果如下:
你好!
你好!+1
你好!+2
这就是最简单的代码,它反映了顺序执行的特点,就是逐条执行。
但只有顺序显然是不够的。比如说,如果我想输出从“你好!”一直到“你好!+100”,难道我要把这个代码写100遍吗?这显然是不恰当的。这个时候,循环结构就有用武之地了。
在C++中,常见的循环语句有以下三种:
for(表达式1,表达式2,表达式3)
while(表达式(可以不止一个)
do
{语句组}
while(表达式)
这三个循环语句有什么区别呢?让我们通过以下的实例来观察。

#include<iostream>
using namespace std;
int main()
{
        int b;
        b=1;
        while(b<=10)
        {
        cout<<"你好+"<<b<<endl;
        b++;
}
        return 0;
}该程序的执行结果如下:

#include<iostream>
using namespace std;
int main()
{
        int b;
        b=1;
        while(b<=0)
        {
       cout<<"你好+"<<b<<endl;
       b++;
}
        return 0;
}
结果是什么都不会输出。


{
        int b=1,c=10;
        b=1;
        do
        {
        cout<<"你好+"<<b<<endl;
        b++;
}while(b<=10);
}
结果和第一次一样。

{
        int b;
        b=1;
        do
        {
        cout<<"你好+"<<b<<endl;
        b++;
}while(b<=0);
}
而这次输出的结果却是:

可见,do{……}while()与while的最主要的区别是后者是先判断条件是否成立再决定是否执行下面的程序,而前者是先执行一次程序再判断条件是否成立。
而for的用法如下:


{
        int a=1,b;
        b=1;
        for(a;a<=10;a++)//for的三个语句可以不全写甚至全不写,但;必须保留。我初学是没有意识到这一点,结果老报错。
//for第二个语句块是判断语句,如果这里留空,则为死循环。
        {
        cout<<"你好+"<<b<<endl;
        b++;
}
       
}执行结果如下
可有时候,并不是每一行代码都需要执行,就比如判断一个数是奇数还是偶数,遇到这种情况,我们就需要使用选择语句。实例如下:

{
        int a=1,b;
        cin>>b;
if(b<0)
        cout<<"b为负数";
else if(0==b)
/*此处不可写为b=0,因为=是赋值号,如写为b=0,语句将会变为把b的值变成0,这是高手也很容易犯的错误,且很难查出。一个比较好的写法是0==b,一旦少打=,会立刻报错,因为不能给常量赋值。*/
        {cout<<"b为0";
        }
        else
        cout<<"b为正数;
}

这是一个判断一个数是正数、负数还是0的程序,其中else if可以写多次。但多个else if的出现编写起来会很麻烦,且后面括号中的表达式会计算多次,不利于效率提高。这时,我们可以考虑用switch语句实现选择结构,如下:
int n;
cin>>n;
n=n%3;
    switch(n)
case 0:
case 1:
cout<<"0或1";
break;
case 2:
cout<<2;
case 3:
cout<<3;
break;
defaultL
cout<<"………………";

大家可以补全代码,自行探索该语句及break的作用。
下面给大家出两道题,练习一下三种数据结构的使用。
1:输出斐波那契数列的第n项。
2:穷举法输出所有的水仙花数。(水仙花数是三位正整数,其值为各位数的立方和,如153=1^3+5^3+3^3)
答案可以放在评论区哦
还有,都给我回复!!!
打卡帖看来得周更了。这是我相对熟悉的部分,还写了两三天,到了后面更慢,因为我自己也得先探索代码的使用方法。
不知道有几个人看。
好吧,没人回复。
emmmm还是没人回复。
https://www.chncert.cn/forum.php?mod=viewthread&tid=674&fromuid=1072162 (出处: 红客联盟)]【C++】打卡帖假如语句会说话2:函数(剧本版)

赵yyyyy 发表于 2022-7-18 21:42:36

本帖最后由 赵yyyyy 于 2022-7-19 11:19 编辑

小技巧:可以使用while实现多次输入观察输出结果,就像这样!
#include<iostream>
using namespace std;
int main()
{
        int a,b;
       while(cout<<"是否继续执行?如是,选1,反之选0",cin>>a)
        {cin>>b;
        if(b<0)
        cout<<"b为负数";
        else if(0==b)
        {cout<<"b为0";
        }
        else
        cout<<"b为正数";}
        return 0;
}
还有,我声明一下,我的程序是在DEVC++上编译通过的。在别的编译器上应该也可以,我没试过。

御天行 发表于 2022-7-20 14:48:45

加油,加油!

932547734 发表于 2022-7-24 00:04:28

加油,跟着学习!!

932547734 发表于 2022-7-24 00:09:11

楼主,你的主页,帖子隐藏了吗?我看不见

hacker_liao 发表于 2022-7-24 19:48:55

wow,还有,老子回来了哈哈哈,大概半年没来了吧

alex! 发表于 2022-7-26 22:17:11

不错奥,学到了
页: [1]
查看完整版本: 【C++】打卡帖1:流程控制