前言
注意:只针对Windows版,如果有误,请友善指正
千百年来(其实也没有千年)
这款语言一直言传至今
它举世闻名
谈到它的人
有的恐惧,有的欢喜
这,就是C语言。
第三章·终于开始写代码啦!
四、循环语句(for、while、do-while)
AAA小剧场——
A:叮铃铃,上课啦!我们今天将学习循环语句,先来讲讲for循环吧,伪代码如下:
for(循环变量类型 循环变量名=循环初始值;循环条件;变量变化){循环执行内容}举个荔枝吧,如果我们想要输出1~100的数,如果我们直接用c out语句一个个输出的话,那么我们的代码会变得特别长,这个时候就需要用到循环语句了
#include<bits/stdc++.h>usingnamespacestd;intmain(){for(inti=1;i<=100;i++){//表示i从1循环到100,每次循环i都要+1,循环100次,每次输出i的值cout<<i<<endl;}return0;}当然,如果我要倒着输出1~100的数,谁会写呢?
T:这个问题很简单,只需要把老师给的代码中第四行for语句改一下即可
#include<bits/stdc++.h>usingnamespacestd;intmain(){for(inti=100;i>=1;i--){//表示i从100循环到1,每次循环i都要-1,循环100次,每次输出i的值//注意!不是i++是i--,不是<=1是>=1,千万不要写错,并且末尾不能有分号!cout<<i<<endl;}return0;}A:小T的方法很正确,接下来我给你们一个任务:输入一个整数n,输出1~n所有的质数
质数(也称素数)的定义:当一个自然数(一般不包括0)的因数(可以被这个数整除)只有1和它本身,则称之为质数,1不是质数,也不是合数
片刻之后——
C:这个题目普及到了一个新知识点——循环嵌套,跟if嵌套同理,循环也是可以嵌套的
#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;for(inti=2;i<=n;i++){//1肯定不是质数,直接从2开始枚举到nboolisPrime=1;//一个是否是的布尔值,只有1和0两个值,1代表true,2代表falsefor(intj=2;j*j<=i;j++){//j依次枚举i可能的因数,如果有因数,那么直接将isPrime的值改为false,退出循环if(i%j==0){//如果可以整除isPrime=0;break;//新知识点:用break直接打断循环,注意!只能打破自己所在的这一层循环!}}if(isPrime){//如果isPrime的值=true,那么就是质数了cout<<i<<endl;}}return0;}我的代码运用循环嵌套判断是否是质数,而用Break节省时间复杂度。
A:小C的方法非常好,完美地展现了判断质数的方法。
Q:老师,我有一个问题,为什么在判断is Prime的值是否为1时,不用写if(isPrime==1)而是直接写if(isPrime)呢?
A:这个东西就要扯到上节课的知识了,直接这样写就可以代表判断is Prime是否为1了,除了用bool可以这样写,int也可以!代表这个数是否小于0,如果是,则不执行,不是则执行。(喝口水,突然呛了几下)
C:我预习了接下来的内容,接下来还是我给大家讲讲while语句和do-while语句的使用吧!打个比方,我们还是用之前输出1~100的例子,那么用while语句怎么写呢?如下
#include<bits/stdc++.h>usingnamespacestd;intmain(){inti=1;while(i<=100){//表示i从1循环到100,每次循环i都要+1,循环100次,每次输出i的值cout<<i<<endl;i++;//注意!因为先将i赋值为了1所以要显示出i再++!}return0;}S:那我明白了,在while语句中,只需要while(循环条件){循环语句}就行了,而i变化的操作则放在了循环语句里,定义则放在了循环之外。而且我还发现,我们如果直接在循环条件里写0及以上的数字,是不会编译错误的,它会将这个值当做布尔类型计算。
#include<bits/stdc++.h>usingnamespacestd;intmain(){string s="阿巴阿巴";while(1){cout<<s<<endl;}return0;}这样的话它会无限输出“阿巴阿巴”,这样的话很不好,所以千万不要以为里面填1代表着循环一遍,千万别偷懒!本人亲身经历
T:嗯嗯,我也懂了,我们也可以写这么一个程序:
#include<bits/stdc++.h>usingnamespacestd;intmain(){inta,b;while(cin>>a>>b){//如果不输入A和B了,那么直接退出循环,实战中停止输入可以输入/zcout<<a<<'+'<<b<<'='<<a+b<<endl;}return0;}Q:(内心ops:不是就我没听懂)
C:(眼神犀利,瞄准了小Q)来小Q你来写个程序,每次输入一个正整数,判断这个数是奇数还是偶数。
Q:好——吧?
#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;while(cin>>n){if(n%2==1)cout<<"是奇数"<<endl;elsecout<<"是偶数"<<endl;};return0;}S:(清了清嗓子)嗯哼,小Q你犯了一个错误,请允许我善意地指正。在第八行末尾那个右花括号后面不能有分号。
Q:嗯嗯,我马上改!
A:(缓了过来)看来你们基本都已经掌握了,那么我们接下来学一学do-while语句。举个荔枝,do-while语句至少会执行一遍,他是先执行一遍后再去判断是否能继续执行。
#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;do{cin>>n;boolis=1;for(inti=2;i*i<=n;i++){//不同的循环也是可以嵌套滴if(n%i==0)is=0,break;//用逗号隔开可以一起在一个判断里执行}if(is)cout<<"Yes"<<endl;//如果是素数则输出Yeselsecout<<"No"<<endl;//否则输出No}while(n!=0);//注意!这里就要有分号了!return0;}今天的课业就到这里,今天作业:
作业:
1.写一个程序,输出100遍“别人笑我穿的厚,我笑他人冻的透。”
2.写一个程序,每次输入一个数,输出1~这个数的所有偶数,直到这个数为0
3.写一个程序,每次输入一个小写字母,输出所有’a’到这个字符的字符,直到这个字符不为小写字母
下节课我们会讲数组类型,请大家阅读相关书籍提前预习,这是一个很重要的知识点!前提是你要学会循环与循环嵌套!
番外(结语,嗯对今天写得更少)
别人笑我太年轻,我笑他人死脑筋
别人笑我单身狂,我笑他人是海王
别人笑我爱宅家,我笑他人被风刮
别人笑我吃得慢,我笑他人胃病犯
别人笑我学不好,我笑他人脑袋烧
别人笑我书呆子,我笑他人文盲小子
别人笑我起太早,我笑他人把夜熬
别人笑我太单纯,我笑他人心太狠
别人笑我缺点赞,我笑他人太虚荣
别人笑我少收藏,我笑他人灰尘房
别人笑我没粉丝,我笑他人粘蛛丝
但再这样下去,我尽管笑他粘蛛丝也没用啊!快点关注我啊!!!
完结撒花(*-∀-)ノ花
你就说是不是撒花吧