栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

(C语言之路-----p1:分支和循环)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(C语言之路-----p1:分支和循环)

在现实中,事情发展的顺序可以概括成三种

在c语言中程序的运行顺序也是如此划分为几种,一种是从上至下运行,一种是分支结构,另一种是循环结构,c语言比现实生活中多出的一种是跳转(goto语句)

接下来,我们将介绍怎么用分支语句,循环语句和goto语句来控制程序运行的顺序

分支语句:1.if语句

                  2.switch语句

循环语句:1.while循环

                  2.for循环

                  3.do while循环

goto语句:

一、分支语句

首先是分支语句的if语句:

#include 

//if语句可以分为单分支语句,双分支语句,多分支语句


int main()
{
int age = 0;
scanf("%d",&age);//输入年龄

//单分支
if(age<18)
{
   printf("未成年n");
}

//双分支
if(age<18)
{
   printf("未成年n");
}
else
{
   printf("已成年n");
}

//多分支
if ((age > 0) && (age < 18))
{
    printf("未成年n");
}
else if ((age >= 18) && (age < 40))
{
	printf("青壮年n");
}
else if ((age >= 40) && (age < 60))
{
	printf("中年n");
}
else if ((age >= 60) && (age < 80))
{
	printf("老年n");
}
else
{
	printf("老寿星n");
}

return 0;
}

接下来是switch语句
 

#include 

int main()
{
int day = 0;
scanf("%d", &day);

//输入1到5会输出weekday,而输入6和7会输出weekend,输入其他数字会提示你重新输入
//switch语句中,如果没有break中断,程序会继续走下去,所以视情况而定添加break语句
//default子句表示输入的day为1——7以外的值,程序就会执行default子句下面的指令
//default子句和case子句的顺序可以打乱,但是一般按顺序,default子句一般放在switch语句的最后一行
switch (day)
{
   case 1:
   case 2:
   case 3:
   case 4:
   case 5:
      printf("weekdayn");
      break;
   case 6:
   case 7:
      printf("weekendn");
      break;
   default:
      printf("输入错误,请输入1_7之间的数字n");
      break;
}









return 0;
}

二、循环语句

while语句

int i = 0;
while(i<10)
{
    printf("%d ",i);

    if(5==i)//如果i等于5,跳出循环,打印1 2 3 4 6 7 8 9 
    {
        break; 
    }
  
    if(5==i)//如果i等于5,结束当前循环,直接来到判断部分,打印1 2 3 4 _死循环
    {
        continue; 
    }

    i++;

}

for语句

①语法

for(表达式1; 表达式2; 表达式3)
{

代码段;
...

}

表达式1:初始化部分,用于初始化循环变量

表达式2:条件判断部分,用于判断循环什么时候终止

表达式3:调整部分,用于循环条件的调整

实际的问题:在屏幕上打印1~10

int i = 0;
for(i=1; i<=10; i++)
{
    printf(“%d",i);
}

相比while循环,for循环有什么优点吗?

while循环的初始化部分,条件判断部分,调整部分是分开书写的,不够集中和方便,而一个循环最重要的三点就是这三部分,while循环要对这三部分进行修改,如果循环体代码量较多,那么难度会很大,for循环则把这三部分放在了一起,修改很方便。

for循环略胜一筹,for循环的使用效率也更高

②在for循环中的break和continue

for循环的break与continue和while的一样,其作用都分别是终止循环和跳过当前循环直接来到判断。但是,for循环和while循环的continue还是存在一些细微的差异

int i = 0;
while(i<10)
{
    printf("%d ",i);

    if(5==i)//如果i等于5,结束当前循环,直接来到判断部分,打印1 2 3 4 _死循环
    {
        continue; 
    }

    i++;

}

int i = 0;
for(i=1; i<=10; i++)
{    
    if(5 == i)
    {
        continue;
    }
    
    printf("%d ",i);    //打印1 2 3 4 6 7 8 9 10
}

在这个例子中,两个循环都用了相同的判断条件和continue,但是产生不同的两种结果,其原因是while循环的continue跳过了循环条件的改变,而for循环的continue则没有跳过这部分

③for循环的循环控制变量

1.尽量不要在循环体中改变循环控制变量,防止循环失去控制

2.循环控制变量尽量采取左闭右开的写法,如下:

for(i=0; i<10; i++)

这样,我们一眼就可以看出来,这个for循环的循环次数就是10次,但如果我们改成:

for(i=0; i<=9; i++)

这样循环的次数就不能一目了然,不明白这个9的含义

 do while语句

 语法

do
{
...
    代码段;
...
}while(表达式);

代码至少执行一次,使用场景受限,不是很常用

三.goto语句

C语言提供了可以随意滥用的goto语句和标记跳转的语句goto语句。

goto语句从理论上来说是没有必要存在的,因为goto语句可以改变程序的运行顺序,这个功能完全可以由循环语句来实现。滥用goto语句会打乱程序的运行顺序,导致程序难以维护,有很多编程者使用goto语句来逃避思考,在思维上偷懒,这样是不对的。

但是,goto语句也不是一无是处,当循环多次内嵌的时候,想要马上跳出循环就可以采用goto语句,用break跳出多层内嵌循环就像是下楼梯,而goto语句是直接跳下去,省去很多功夫的同时,对程序运行顺序的影响也较小。

while()
{
    ...
    while
    {
        ...
        while
        {
            ...
            if(disaster)
            {
                goto quit;
            }
        }    
    }
}
quit:
...

四.分支循环goto的组合运用

①获取一个二进制数的每一位数字

int main()
{
	int a = 0;
	scanf("%d", &a);

	int i = 32;
	for (i = 31; i >= 0; i--)
	{
		printf("%d", (a >> i) & 1);
	}

	return 0;
}

②反转一个n位十进制数

int main()
{
	int a = 0;
	scanf("%d", &a);

	do
	{
		printf("%d", a % 10);	
	} while (a /= 10);

	return 0;
}

③利用循环和getchar清空缓冲区

//请输入密码
char arr[20] = "";
scanf("%s",arr);

//请确认
char a ='';
scanf("%c",&a);

char ch = '';

//利用循环清空缓冲区
while((ch = getchar()) != 'n')
{
    ;
}

//判断确认成功还是失败
if(a == 'Y')
{
    printf("确认成功n");
}
else if(a == 'N')
{
    printf("确认失败n");
}
else
{
    printf("请再次输入n");
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/396176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号