首页 > 其他分享 > 分支与循环语句

分支与循环语句

时间:2023-02-08 23:01:27浏览次数:29  
标签:语句 int break 循环 printf 表达式 分支

分支语句

所谓分支语句,在我看来其实就是选择语句,先做判断,在做选择,就跟我们在生活中一样,面临着各种选择,而不同的选择,则对应着不同的结果,在C语言里也是如此。下面介绍C语言里常用到的if以及switch语句的具体使用以及注意事项。

if 语句

了解if语句的使用,首先,我们必须知道它的语法结构。

if(表达式)
语句;
//
if(表达式1)
语句1;
else
语句2;
//多分支
if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;

具体该怎么使用呢?其实很简单,举个例子就会明白:

//输入一个年龄,假如大于18,则输出成年。
#include<stdio.h>
int main()
{
//输入年龄,假如大于18,输出成年。
int age = 0;
scanf("%d", &age);
if (age > 18)
{
printf("成年");
}

return 0;
}
#include<stdio.h>
int main()
{
//输入年龄,18以下为未成年,18-30为青年,30-60为壮年,60以上为老年
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年");
}
else if (age >= 18 && age <= 30)
{
printf("青年");

}
else if (age > 30 && age < 60)
{
printf("壮年");
}
else
{
printf("老年");
}
return 0;
}

是不是很简单,答案是肯定的。这里要注意一点,就是else是与离它最近的if相匹配。

switch 语句

switch语句也是一种分支语句。与if所表达的意思一样,但常常用于多分支的情况。
具体表达式如下:

switch(表达式)
case1:
语句1;
case2:
语句2;
case3:
语句3;

具体什么场合使用呢?比如:
输入1,输出星期一
输入2,输出星期二
输入3,输出星期三
输入4,输出星期四
输入5,输出星期五
输入6,输出星期六
输入7,输出星期日

像这种,用if语句显然也是可以的,但显得比较繁琐,这种情况用switch语句最合适不过了

#include<stdio.h>
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
printf("周一");
break;
case 2:
printf("周二");
break;
case 3:
printf("周三");
break;
case 4:
printf("周四");
break;
case 5:
printf("周五");
break;
case 6:
printf("周六");
break;
case 7:
printf("周日");
break;
default:
printf("输入错误");
break;
}
return 0;
}

注意,这里的break是中止的意思,在这里就是执行完命令后,不再往下进行,假如不加break,就会出现这种情况:

 分支与循环语句_for循环


它会把后面的命令都执行完,而加上break,就会中止它继续进行下去。而default的意思是,假如以上命令都不执行,就执行default下面的语句。它可以放在任意位置,但每一个switch语句都最多只能存在一个default语句。

就像这种,我输入的是8,它不在1-7范围内,就执行default语句。

 分支与循环语句_#include_02

循环语句

在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。 循环语句是由循环体及循环的终止条件两部分组成的。

while 语句

具体格式为:
while(表达式)
{
循环体

}
while循环中,当条件表达式成立时,才会执行循环体中语句,每次执行期间,都会对循环因子进行修改(否则就成为死循环),修改完成后如果while条件表达式成立,继续循环,如果不成立,循环结束。
也就是说:条件表达式的执行次数总是比循环体的执行次数多一次。
具体使用举个例子很好理解:打印1-10数字

#include<stdio.h>
int main()
{
int a = 1;
while (a <= 10)
{
printf("%d ", a);
a += 1;//a=a+1
}
return 0;
}

了解基本语法后,我们还要知道break与continue的区别。
break是直接中止它所在循环体的整个循环,而continue是中止本次的循环,continue后面的代码不会执行。看如下例子:

#include<stdio.h>
int main()
{
int a = 1;
while (a <= 10)
{
if (a == 5)
break;
printf("%d ", a);
a += 1;//a=a+1
}
return 0;
}

这里运行的结果是1 2 3 4 。因为当a的值变成5后,直接中止整个循环了。所以只打印了1 2 3 4

而如果把break换成continue,就又不一样了。会出现什么情况呢?

 分支与循环语句_#include_03

你会发现它陷入死循环了,因为当a的值变成5后,执行continue命令,而continue又中止了本次循环,continue后面的代码不会执行,也就是说,a的值永远不会发生变化,就永远一直在这边卡着。

而当我写成这种形式:

#include<stdio.h>
int main()
{
int a = 0;
while (a < 10)
{
a += 1;
if (a == 5)
continue;
printf("%d ", a);

}
return 0;
}

a从0开始,进入循环先变成1,然后打印,然后再次加1,再次打印,直到a=5的时候,结束本次循环,再次到了a+=1这里,a=6,不满足continue条件,执行后面的打印命令。。。。。。

 分支与循环语句_循环语句_04

for 语句

for语句也是循环语句中的一种,是三种类型中用的做多的那个,具体语句表达式如下:
for(表达式1; 表达式2; 表达式3)
{

循环体

}
表达式1:一般为赋值表达式,给控制变量赋初值;
表达式2:关系表达式或逻辑表达式,循环控制条件;
表达式3:一般为赋值表达式,给控制变量增量或减量
像上面那个,打印1-10,也可以用for语句来写:

#include<stdio.h>
int main()
{
int a = 0;
for (a = 1; a <= 10; a++)
{
printf("%d ", a);
}
return 0;
}

打印结果为1 2 3 4 5 6 7 8 9 10
由此可以看出,for循环相比于while循环更加简便易懂,因此使用频率最高。
for循环中也可以实现嵌套:

#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
for (a = 1; a <= 10; a++)
{
for (b = 1; b <= 10; b++)
{
printf("666 ");
}
}
return 0;
}

像这种,最后会打印100个666,因为当a=1的时候,就会进行里面的for循环,而里面又会进行十次循环,打印出10个666,以此类推。当a=10的时候,里外一共进行了10*10次循环,即打印100个666.

 分支与循环语句_for循环_05

do...while 语句

表达式为:
do
循环语句;
while(表达式);
在这里,循环至少进行一次,因为先执行do后面的循环语句,再进行while里表达式的判断,使用场景有限,因此不经常使用。
同样,依然是上面的例子,输出1-10,我们也可以用do...while;语句来实现

#include<stdio.h>
int main()
{
int a = 1;
do
{
printf("%d ", a);
a += 1;
} while (a <= 10);

return 0;
}

输出结果为:1 2 3 4 5 6 7 8 9 10

关于分支与循环经典例题

1、计算n!

#include<stdio.h>
int main()
{
int i = 0;
int tmp = 1;
int n = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
//n的阶乘就是1*2*3*4*...*n,用for循环,一共进行n次
tmp = tmp * i;
}
printf("%d", tmp);

return 0;
}

2、计算1!+2!+3!+...+9!+10!

#include<stdio.h>
int main()
{
int i = 0;
int tmp = 1;
int n = 0;
int sum = 0;
scanf("%d", &n);
for (i = 1; i <= n; i++)
{
tmp = tmp * i;//n的阶乘
sum = tmp + sum;//每一次的阶乘之和
}
printf("%d", sum);

return 0;
}

 分支与循环语句_for循环_06

3、输入10个整数,打印出最大值

#include<stdio.h>
int main()
{
//定义十个元素在数组里
int arr[10];
int i;
//从数组下标为0开始,取到下标为9的整数
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
//假设输入的第一个数为最大值
int max = arr[0];
//假如后面一个数比前面大,max就替换为后面的数,以此类推,共进行九次比较
for (i = 1; i < 10; i++)
{
if (arr[i] > arr[0])
{
max = arr[i];
}
}
//最后将最大值输出
printf("最大值为%d", max);
return 0;
}

标签:语句,int,break,循环,printf,表达式,分支
From: https://blog.51cto.com/u_15954929/6044950

相关文章

  • 更紧密的反馈循环让你成为更好的程序员
    快速反馈导致快速改进。当您构建新功能或修复错误时,快速成功的首要预测因素是您的反馈循环。你怎么知道它什么时候工作?我们可以自动化这个过程吗?你越早知道有什么东西坏......
  • python-continue语句
    Pythoncontinue语句跳出本次循环,而break跳出整个循环。for循环中使用continueif__name__=='__main__':foriinrange(10):ifi==5:continu......
  • Period POJ - 1961(kmp,最小循环节)
    题意:给定一个字符串,ascii码在97到126之间(字母)如果前i个字符组成的字符串是由子字符串循环一定次数组成的,则该字符串为周期串,子字符串为循环节。比如aabaabaabaab,在前两个字......
  • Power Strings POJ - 2406(kmp最小循环节)
    AC代码:#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<algorithm>usingnamespacestd;constintmaxn=1e6+5;strings;intnxt[maxn]......
  • Cyclic Nacklace HDU - 3746 (kmp最小循环节)
    题意:现在给你一个字符串,请问在该字符串末尾最少添加多少个字符,可以让这个字符串获得重复循环序列。AC代码:#include<iostream>#include<cstring>usingnamespacestd;const......
  • if语句
    if单选结构packagetest.scanner;importjava.util.Scanner;publicclassdemo06{publicstaticvoidmain(String[]args){Scannerscanner=newSca......
  • sql常用语句
    1.创建部门表createtabledept( deptnointprimarykey, dnamevarchar(9), locvarchar(10))2.创建员工表createtableemployees( empnointprimarykey, namechar(......
  • Python-循环与判断
    defaccount_login():password=input('Password:')ifpassword=='12345':print('Loginsuccess!')else:print('Wrongpasswordorinvali......
  • js分支结构 猫超满减
    需求天猫超市做活动询问用户的购买金额如果用户输入的购买金额大于88元那么减免5元逻辑......
  • 合并分支案例
    需求:目前我在dev分支,现在要将远程的master分支合并到我本地这个分支。操作步骤:1.gitcheckoutmaster切换分支到master2.gitpull拉取远程分支,目的是确保当前分支......