针对于不同的循环函数,他们的使用方式是不一样的,例如:if else循环,while循环,swich循环,do while循环语句,for循环语句 ,都充满了不同。
对于if else循环:if(判断条件){循环内容} else if(判断条件){循环内容}else(与for或者for和else if相反的判断条件){循环内容}
例如:判断闰年
要先判断闰年,首先得知道判断闰年的条件是什么,判断闰年的条件有两条,第一条:能被4整除且不能被一百整除的是闰年,第二,能被四百整除的是闰年。由这两个条件我们就能知道判断闰年的基本条件是什么,所以就可以写出以下代码:
if(year%4==0 && year%100!=0)
{
printf("%d",year);
}
else if (year%400==0)
{
printf("%d",year);
}
else
{
printf("不是闰年");
}
对于while循环语句,相对来说没有for循环的麻烦,while(循环条件),循环条件为真,就能运行下去,循环条件为假就跳出循环。当然循环条件要是为0,也认为是假直接跳出循环。
例如求出最大公约数:
最大公约数可以理解为两个数的共同的最大因数,为此,我将运用最基本也是最简单的辗转相除法。辗转相除法的原理为:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。 代码如下:
while(m%n)
{
r=m%n;
m=n;
n=r;
}
printf("%d\n",n);
设两个数为m 和 n,人为的让m为最大数,要想保证m为最大值运行代码可以直接在上面写一个比较代码,令m存入最大值,这样无论输入什么顺序都能保证程序正确运行。r 为余数,通过辗转相除法得到最终结果。
对于swich语句,可以理解为swich是一种选择题一样的语句,swich(整型),整个swich语句包含 case+整型表达式,default函数,其作用为在swich语句中,没有输入项,自动走默认路径。每一个case语句在独立结束的时候,都要加上break函数来进行结束,当多个case语句输出同一个语句的同时可以简化书写,在最后一个case语句加上break函数即可。;例如以下代码
swich(day)
{
case1:
case2:
case3:
case4:
case5:
printf("工作日");
break;
case6:
printf("休息日");
break;
case7:
printf("休息日");
break;
default:
printf("输入错误,请重新输入");
break;
}
当然default的顺序可以任意,可前可后,存在也是可有可无。
对于do while循环语句,和while循环语句相似,只有一点不同就是,do while先执行循环体语句,然后在进入判断循环条件是否满足表达式的值;而while是先判断表达式的值是否满足要求,在执行语句。例如:
do
{
运行的东西
}while(判断条件)
当然,对于目前我自己的学习情况,认为do while循环语句一般都和swich循环语句一起相搭配使用,用于菜单的制作,如以下操作:
do
{
menu();
printf("请选择:\n");
scanf_s("%d", &a);
switch(a)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入有问题,请重新输入:\n");
break;
}
} while (a);
对于for循环语句,这个语句对于目前学习状态来看,是最常用,也是最实用的循环语句,for(元素初始值;判断条件;元素变化值){循环条件}。举一个最简单的例子,乘法口诀表:
int i = 0;
for(i=1;i<=9;i++)
{
int j = 1;
for(j=1;j<=i;j++)
{
printf("%d*%d=%2d",i,j,i*j); //%2d为右对齐,%-2d为左对齐,2为2个符号位,没有数字系统会自动拿空格填入,以保证美观
}
printf("\n");
}
这是最简单for循环的利用,通过嵌套一个for循环来实现乘法口诀表,乘法口诀表一共9列,从上到下呈现逐个递增的模式,外层循环控制向下进行也就是列的书写,内层循环控制横行的书写,也就是行的书写,最终实现口诀表,更改外层循环的数字,可实现多个乘法口诀表。
以上代码如果不能运行,请看一下是不是中英文书写的关系,以上不足请各位大佬多多指正