前言
为了更好地解决实际生活中出现的问题,C语言提供了循环语句和分支语句。几乎所有的问题都可以用循环和分支语句的逻辑来表达和解决。快来看看如何用C语言输出乘法口诀表把!
一、分支语句
分支语句的出现主要是为了应对条件判断,在我们日常生活中有很多这样的判断,例如:“如果今天下雨,我就不去公园了。”这样一句话中就存在一个条件判断,若满足“下雨”这个条件,那么就实现后面的“不去公园”。分支语句就可以解决C语言中类似的问题。
1.if语句
if语句是C语言中使用较多的分支语句,当我们需要在某一条件下执行某行代码时,即可用到if语句。例如,当'a'等于1时,输出"helloworld"即可用到以下代码
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d",&a);
if(a == 1)
{
printf("helloworld\n");
}
return 0;
}
当我们输入1时,if语句判断a等于1,则执行if语句内的代码。图中的if后的括号中为判断条件,若满足该条件则执行if语句内的代码,若不满足则直接跳过。当然,单独的一句if只能面对一种情况,在面对复杂的问题时显得较为无力,在if语句中还存在另外两种语句,分别是else if和else。我们继续看下面的代码
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d",&a);
if(a > 0)
{
printf("helloworld\n");
}
else if(a<0)
{
printf("helloCSDN\n");
}
else
{
printf("hellocode\n");
}
return 0;
}
根据前面所介绍的if语句的用法可知,当我们输入大于0的数时,该代码输出"helloworld",那么如果不大于0,将会进入else if和else语句的判断。else表示与前面的条件不同,例如"else if(a<0)",首先,a满足前提"a<=0",其次,a满足"a<0"即进入else if语句,输出"helloCSDN",那么如果前面的条件都不满足,则进入else,在该代码中当a等于0时输出"hellocode"。在if语句中,只有if是必须出现的,else if的使用没有次数限制。
if语句还可以嵌套使用,当我们需要进行多层判断时,可使用if语句的嵌套,例如
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d",&a);
if(a>0)
{
if(a>2)
printf("helloworld\n");
else
printf("helloCSDN\n");
}
return 0;
}
这里首先判断的是a>0,当a>0时,再判断a是否大于2,若大于2输出"hellowworld",若不大于2输出"helloCSDN"。关于这段代码中嵌套的if语句后面未加大括号,这种写法也是可行的,当if语句后未加大括号时,满足条件时执行if语句后的一条代码。但我不提倡这种写法,这会让代码显得很凌乱,不容易让人读懂,也不便于寻找bug。
2.switch语句
switch语句用于针对单个变量的不同取值执行不同代码,例如
#include<stdio.h>
int main()
{
int d = 0;
printf("what day is it today?\n");
scanf("%d",&d);
switch(d)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf("weekday\n");break;
case 6:
case 7:printf("weekend\n");break;
default:printf("error\n");break;
}
return 0;
}
图中代码可用于判断给出的日子是否为工作日,case后的数字对应d的取值,当d为1时,从case 1开始一直向下执行,直到switch语句的最后一行或者遇到break语句。图中case 5后有break语句,故输入1后,从case 1向下执行至case 5后的break结束。那么输入2~7之间的其它数字也是同理。当输入的数字不在2~7之间,即当我们输入n时,switch语句中没有case n,则执行default语句后的代码。需要注意的是,switch语句中的case和default语句位置不固定,case5可以在case1之前,default也可以在case2之前,这些语句的位置根据需求确定。
二、循环语句
1.while语句
while语句是最简单的循环语句,他的写法与if语句相似,执行方式也与if语句相似,不同点在于while语句会重复执行。当然,如果我们不对循环加以限制,那么极有可能写出死循环,最简单的死循环如下
#include<stdio.h>
int main()
{
while(1)
{
printf("6\n");
}
return 0;
}
这里补充一点,在C语言判断逻辑真假时,0为假,非0为真。while后面的判断中为1,1为真,所以循环为死循环。而后面的判断条件其实是用来限制循环次数,避免死循环的。我们来看以下代码
#include<stdio.h>
int main()
{
int i = 0;
while(i<10)
{
printf("%d\n",i);
i++;
}
return 0;
}
在这段代码中,循环每进行一次,i的值加一,那么当i等于10时,条件i<10不成立,则跳出循环,故程序打印数字0~9。
2.for循环
for循环是最常用的的循环语句可以说是while循环的美化版。我们来看以下代码
#include<stdio.h>
int main()
{
int i = 0;
for(i=0;i<10;i++)
{
printf("%d\n",i);
}
return 0;
}
这段代码的执行效果和上面的while循环是一样的,打印0~9。我们来分析一下for循环后面的结构。括号内分为三部分,用分号隔开,第一部分为起始条件,即i=0,第二部分为循环条件,当i<10时满足条件,那么接下来执行循环体内的代码,即printf函数,循环体内容执行后执行括号内第三部分的语句,即i++。我们发现,我们用变量"i"来控制循环发生的次数,我们把"i"称为循环变量。
3.do while语句
do while语句的使用较少,与while语句的不同在于,do while语句的判断部分在循环体之后,即在循环发生后再判断循环是否继续发生。接下来我们来看这段输出0~9的代码用do while语句如何实现
#include<stdio.h>
int main()
{
int i = 0;
do
{
printf("%d\n",i);
i++;
}wwhile(i<10);
return 0;
}
在执行完一次循环体后,while语句判断为真则继续循环,若为假则跳出循环。那么当"i"等于9时再循环一次,然后''i''等于10,跳出循环。
4.嵌套循环
嵌套循环,即循环中还有循环,遇到这种情况代码还是按照正常顺序执行,我们来分析这段代码
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
printf("%d %d\n",i,j);
}
return 0;
}
首先,满足外层循环条件,进入外层循环,然后满足内层循环条件,进入内层循环。当内层循环执行完毕之后,外层循环执行"i++",还是满足外层循环条件,继续执行,以此类推,该段代码将会打印"0 0"~"9 9"。接下来我们来看看嵌套循环的简单运用——乘法口诀表
首先我们来分析,乘法口诀表共有九行九列,那么我们需要两个循环变量分别用来控制行数和列数,那么我们可以分别用变量"i"和"j"来控制行和列。观察发现,第n列的算式的第一个因数为n,第n行的算式第二个因数为n,那么每次打印一个算式时,我们都可以用它的行数和列数来表示它。我们先写出控制行的循环如下
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for(i=1;i<10;i++)
{
printf("\n");
}
return 0;
}
如此,控制行数为9,而每一行的行数和列数相等,所以可以用行数来限制列数,再将各个算式打印,如下
#include<stdio.h>
int main()
{
int i = 0;
int j = 0;
for(i=1;i<10;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d ",j,i,i*j);
}
printf("\n");
}
return 0;
}
这样一来,一个简单的乘法口诀表就完成了。
结尾
分支和循环语句是C语言非常重要的组成部分,希望大家都能够熟练掌握。