第三讲:c/c++循环语句for(),if(),swich(),do while(),

本文的编写是为了在学习c++的时候加深自己的记忆,同时也为与我一般的初学者提供一些参考,此处特别感谢微信公众号“c/c++的编程
教室”,我的学习过程按照公众号的推送进行学习的!
1.for()循环
(1)for()格式:
for(表达式1;表达式2;表达式3)
        {
                      do something;
        }
(2)乘法表程序
#include <stdio.h>
#include <stdlib.h>
int main()
{
	int i, j;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
			printf("%d*%d=%d\t", j, i, j*i);
		printf("\n");
	}
	system("PAUSE");
}
2.if()循环
(1)if()格式,条件是bool型数据

if(条件)

     do;

else if(条件)

     do;

……

else

    do;

(2)实际程序,成绩判断

#include <stdio.h> #include <stdlib.h> int main() { int i; while (scanf_s("%d", &i)) { if (i >= 0 && i<60) printf("不及格,重考,下一个\n"); else if (i >= 60 && i<70) printf("一般般吧,勉强过关,下一个\n"); else if (i >= 70 && i<90) printf("好像还不错的样子,再接再厉,下一个\n"); else if (i >= 90 && i <= 100) printf("漂亮,就是要这样,下一个\n"); else printf("无效成绩,什么玩意,下一个\n"); } system("PAUSE"); return 0; }

3.swich()循环

(1)swich()循环结构

switch(what)//判断what是什么,what 是整形数据

{

 case  what =what1://当what是what1的时候

         do something;

         break;

 case   what = other what://是其他情况的时候

         do something;

         break;

case  ……:

       ……

default://表示自己不希望what = 的值

      break;

在这里补充一下break和continue的用法区别:

break 命令可以与三种循环形式中的任何一种以及 switch 语句一起使用。它导致程序控制跳过包含它的循环或 switch 语句的剩余

部分,继续执行紧跟在循环或 switch 后的下一条命令。

continue 命令可以与三种循环形式中的任何一种一起使用,但不能和 switch 语句一起使用。它导致程序控制跳过循环中的剩余语

句。对于 while 或 for 循环,开始下一个循环周期。对于 do while 循环对退出条件进行判断,如果必要,开始一个循环周期。

(2)实际程序

①成绩判断

#include<stdio.h> #include<stdlib.h> void main() { int n; printf("请输入成绩:\n"); scanf_s("%d:", &n); n = n / 10 + 1; switch (n) { case 1: case 2: case 3: case 4: case 5: case 6: printf("不及格,重考,下一个\t\n"); break; case 7: printf("一般般吧,勉强过关,下一个\n"); break; case 8: case 9: printf("好像还不错的样子,再接再厉,下一个\n"); break; case 10: case 11: printf("漂亮,就是要这样,下一个\n"); break; default: printf("无效成绩,什么玩意,下一个\n"); break; } system("PAUSE"); }

②目录预览

#include <stdio.h> #include <stdlib.h> int main() { char ch; int n; printf("回复D或者d查看目录:\n"); while (scanf_s("%c", &ch)) { switch (ch) { case 'D': case 'd': printf("第一讲 Hello World.\t\n"); printf("第二讲 printf()(1).\t\n"); printf("第三讲 printf()(2).\t\n"); printf("…………\t\n"); printf("回复相应的数字查看相应章节.\t\n"); goto d; default: printf("无效字符,请重新输入:\n"); } } d:    while (scanf_s("%d", &n)) { switch (n) { case 1: printf("第一讲 Hello World.\t\n"); break; case 2: printf("第二讲 printf().\t\n"); break; case 3: printf("第三讲 printf()(2).\t\n"); break; default: printf("敬请期待……\n"); break; } }  system("PAUSE");  return 0; }

在此提一下goto语句:goto是一个让人讨厌又让人喜欢的语句,讨厌之处是本身容易出错,但是好处就是可以直接从一个深度循环

里面直接跳转出来,由于while循环有个共性,只要你给的条件满足他就会一直循环下去,俗称死循环,像我们上面的这种写法就更

容难退出了,这是我们所不希望看到的,因为如果这样的话我们就会被这个while给套牢了,我们想要的是当我们进入目录之后就可

以进入查看章节的章程,当然如果我们没有进入目录自然会有重新尝试的机会,所以,我们应该在正确进入目录后直接跳出目录然后

进行查看章节的环节,所以我们在打印完章节后我们使用goto语句直接退出循环,进入下一个环节,goto在这里就起到了关键作用

,goto后面的d是一个标识符,标明要跳转d标记的地方,想要标记某个位置就直接在该行代码前加上该标识符和冒号即可,当程序

运行到goto语句时直接跳转到标记处。

4.do while()循环

(1)循环结构

do

{

    do something;

}while(条件);

(2)实际程序练习:一个同学很喜欢数学,有人问他年龄时他却说:“ 我的年龄平方是三位数,立方是四位数,四次方是六位数,

三次方和四次方正好占遍了0,1,2,3,4,5,6,7,8,9这10个数字。”现在大家能够猜到这位同学年龄吗?

#include <stdio.h> #include <stdlib.h> long power(int n, int m); int age();//return count int agemax();//return max int main() { int n, m, c; long a[10] = { 0 }, s[10] = { 0 }, i, sum3, sum4; n = age(); printf("n=%d\n", n); m = agemax(); printf("m=%d\n",m); c = m - n + 1; printf("c=%d\n", c); do { sum3 = power(c, 3); for (i = 3; i >= 0; i--) { a[i] = sum3 % 10; sum3 = sum3 / 10; } sum4 = power(c, 4); for (i = 9; i>3; i--) { a[i] = sum4 % 10; sum4 = sum4 / 10; } for (i = 0; i <= 9; i++) { s[a[i]]++; } for (i = 0; i <= 9; i++) { if (s[i] == 1) { if (i == 9) printf("这位同学的年龄是:%d\n", c); } else break; } c++;//从满足条件的最小值开始遍历 } while (c <= m); system("PAUSE"); return 0; } //实现幂次方 long power(int n, int m) { long s = 1; while (m--) { s *= n; } return s; } //求满足sum1和sum2的个数 int age() { int age[25]; int count = 0; long sum1, sum2; for (int i = 0; i<25; i++) { sum1 = power(i, 3); sum2 = power(i, 4); if (sum1 > 1000 && sum1 <10000 && sum2 > 100000 && sum2 < 1000000) { age[i] = i; count++; } } return count; } //求出满足sum1和sum2的最大值 int agemax() { int age[25] = { 0 }, max = 0; long sum1, sum2; for (int i = 0; i<25; i++) { sum1 = power(i, 3); sum2 = power(i, 4); if (sum1 > 1000 && sum1 <10000 && sum2 > 100000 && sum2 < 1000000) { age[i] = i; } if (max<age[i]) { max = age[i]; } } return max; }

此处给出c++的实现程序,包含了vector和push_back()

#include <iostream>//c++标准库 #include <vector> using namespace std;//标准字声明 int main() { vector<int>age; int n, m, a[10] = { 0 }, s[10] = { 0 }; long sum1, sum2; for (int i = 0; i<25; i++) { sum1 = i*i*i; sum2 = i*i*i*i; if (sum1 > 1000 && sum1 <10000 && sum2 > 100000 && sum2 < 1000000) { age.push_back(i); } } int size = age.size(); n = age[0]; m = age[size - 1]; do { sum1 = n*n*n; for (int i = 3; i >= 0; i--) { a[i] = sum1 % 10; sum1 = sum1 / 10; } sum2 = n*n*n*n; for (int i = 9; i>3; i--) { a[i] = sum2 % 10; sum2 = sum2 / 10; } for (int i = 0; i <= 9; i++) { s[a[i]]++; } for (int i = 0; i <= 9; i++) { if (s[i] == 1) { if (i == 9) cout << "这位同学的年龄是:" << n << endl; } else break; } n++; } while (n != m); cin.get(); return 0; }

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值