重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

【C语言初阶】选择语句和循环语句-创新互联

  • 目录:
    一.选择语句:

    站在用户的角度思考问题,与客户深入沟通,找到中牟网站设计与中牟网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名虚拟主机、企业邮箱。业务覆盖中牟地区。
    1.if else语句
            2.switch语句(附break的使用)

二.循环语句:

   1.for循环
           2.while循环
           3.do while循环
           4.break和continue在循环语句中的使用

(一)选择语句
1.if 语句的基本表达为:

  if(表达式1)
          语句1;

理解起来就是当表达式1为真时,程序执行语句1,否则执行语句2
我们用代码来理解一下:

#includeint main() {int i = 2;
	if (i=1)
		printf("hello");
	return 0;
}

按照我们的理解 , i 赋值为 2 , 但是 i f 的表达式为 i = 1 \color{Red}{按照我们的理解,i赋值为2,但是if的表达式为i=1} 按照我们的理解,i赋值为2,但是if的表达式为i=1
所以说这个程序应该什么都不打印,结果真的是这样吗?我们看看结果:
在这里插入图片描述
这里居然把hello打印出来了,为什么呢?是这样的,i=1本身为真了,所以就打印hello了.
在if语句里面表达式应该用赋值运算符来看,而不应该用关系运算符(点击就可以看)

我们尽量写成 i f ( 1 = = i ) , 因为当我们写成 i f ( 1 = i ) 时 \color{Purple}{我们尽量写成if(1==i),因为当我们写成if(1=i)时} 我们尽量写成if(1==i),因为当我们写成if(1=i)时
这个语句编译器会报错 , 因为 i 怎么能赋值给 1 呢 ? \color{Purple}{这个语句编译器会报错,因为i怎么能赋值给1呢?} 这个语句编译器会报错,因为i怎么能赋值给1呢?
所以我们应该写成下面这样:

#includeint main() {int i = 2;
	if (1==i)
		printf("hello");
	return 0;
}

这样就什么都不会打印,如何写成if(2==i),就会打印hello
1.1 if语句还有多语句的:

if(表达式1)                  if(表达式1)
     语句1;                         语句1;
     else                      else if(表达式2)
     语句2;                       语句2;
                               else
                                 语句3;

当一个分支语句有多个if else语句时,if 总是和最近else匹配
来个栗子:

#includeint main() {int m = 1;
	int n = 2;
	if (2==m)//为假了,不会执行后面的if else语句了,所以什么都不会打印
	if (1==n)
		printf("hello");
	else
		printf("world");
	return 0;
}

2. s w i t c h 语句 \color{red}{switch语句} switch语句的基本表达式为:

switch(整型表达式)
  {
  case 整型常量表达式:
       语句;
  case 整型常量表达式:
       语句;
       ~~~
  }        

接下来我们用代码来感受一下switch的使用:

#includeint main() {int month = 0;
	scanf("%d", &month);
	switch (month)
	{case 1://记住case后面的为整型常量的表达式,如果写成1.0这种就不行
		printf("一月\n");
	case 2:
		printf("二月\n");
	case 3:
		printf("三月\n");
	case 4:
		printf("四月\n");
	case 5:
		printf("五月\n");
	case 6:
		printf("六月\n");
	case 7:
		printf("七月\n");
	case 8:
		printf("八月\n");
	case 9:
		printf("九月\n");
	case 10:
		printf("十月\n");
	case 11:
		printf("十一月\n");
	case 12:
		printf("十二月\n");
	}
	return 0;
}

我们的目的呢?希望输入数字几,就打印几月出来.但结果时这样吗?
当我们输入1会得到什么呢?
在这里插入图片描述
这里month为1,就会从case 1进去,依次打印后面的月份,如果我们要想达到目的,应该在printf后面加上break, b r e a k 的作用就是结束 s w i t c h 的循环 , 就是说不在执行下面的 c a s e 语句 \color{Red}{break的作用就是结束switch的循环,就是说不在执行下面的case语句} break的作用就是结束switch的循环,就是说不在执行下面的case语句,代码结果如下:

#includeint main() {int month = 0;
	scanf("%d", &month);
	switch (month)
	{case 1:
		printf("一月\n");
		break;
	case 2:
		printf("二月\n");
		break;
	case 3:
		printf("三月\n");
		break;
	case 4:
		printf("四月\n");
		break;
	case 5:
		printf("五月\n");
		break;
	case 6:
		printf("六月\n");
		break;
	case 7:
		printf("七月\n");
		break;
	case 8:
		printf("八月\n");
		break;
	case 9:
		printf("九月\n");
		break;
	case 10:
		printf("十月\n");
		break;
	case 11:
		printf("十一月\n");
		break;
	case 12:
		printf("十二月\n");
		break;
	}
	return 0;
}

在这里插入图片描述
(二).循环语句
循环语句:在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。
1.1 f o r 循环 \color{red}{for循环} for循环的基本表达式

for(表达式1;表达式2;表达式3)
{
         语句;
}

注意:
表达式1:一般为赋值表达式,给控制变量赋初值;
表达式2:关系表达式或逻辑表达式,循环控制条件;
表达式3:一般为赋值表达式,给控制变量增量或减量。
语句:循环体,当有多条语句时,必须使用复合语句。
表达式的中间用分号隔开,表达式3后面不加分号
这是它的执行顺序:
在这里插入图片描述
1-2-3-4-2-3依次类推,直到i=11时,退出循环,于是打印1到10.
我们来一个题来练练手:

输入一个数:
   输出这个数的阶乘:   
#includeint main() {int i = 1;
	int n = 1;
	int fact = 1;//不能初始化为0,不然结果也是0
	scanf("%d", &n);
	for (i = 1;i<=n;i++) {fact = fact * i;
	}
	printf("%d", fact);
	return 0;
}
运行的步骤为:
如果我们输入5
1.当i=1时,小于5,fact=1*1=1;
2.i++,此时i为2,也小于5,fact=1*2=2;
3.i++,此时i为3,也小于5,fact=2*3=6;
4.i++,此时i为4,也小于5,fact=6*4=24;
5.i++,此时i为5,满足条件,fact=24*5=120;
6.i++,此时i为6,不满足条件,退出循环.

1.2 for循环嵌套if语句中的break和continue
上面已经说到了,break就是跳出循环体,那continue有什么作用呢?
C语言中continue语句的作用是结束本次循环,即跳过循环体中下面尚未执行的语句,然后进行下一次是否执行循环的判定。需要注意的是continue语句只结束本次循环,而不是终止整个循环。
我们用代码来理解一下它们的用法:

#includeint main() {int i = 0;
	for (i = 1; i< 10; i++) {if (5 == i)
			break;//当i为5时,跳出循环,不会再打印5了
		printf("%d ", i);
	}
	return 0;
}

在这里插入图片描述
如果把break换成continue会发生什么呢?

#includeint main() {int i = 0;
	for (i = 1; i< 10; i++) {if (5 == i)
			continue;//当i为5时,continue跳过后面代码,来到for语句
		printf("%d ", i);
	}
	return 0;
}

应该打印1 2 3 4 6 7 8 9,结果是不是呢?我们来看看:
在这里插入图片描述
果然我们理解的,还是对的,我们真棒!
2. w h i l e 循环 \color{red}{ while循环} while循环

whlie(表达式){
        语句;
      }  

while和for本质上都是循环,只是表达式放的位置不同,故相同代码,运行结果可能也会不同
先来一个简单的代码,计算1加到100的总和:

#includeint main() {int i = 0;
	int sum = 0;
	while (i<= 100) {sum = sum + i;
		i++;//和for循环不同,调整语句不在括号里面
	}
	printf("sum=%d", sum);
	return 0;
}

在这里插入图片描述
如果我们用上述for循环嵌套里面的break,continue来编写while会怎么样呢?结果会不会一样呢?
break代码:

#includeint main() {int i =1;
	while (i< 10) {if (5 == i)
			break;
		printf("%d ", i);
		i++;
	}
	return 0;
}

在这里插入图片描述
这里可以看出,当使用break时,for和while代码一样时,运算结果也一样.
continue代码:

#includeint main() {int i =1;
	while (i< 10) {if (5 == i)
			continue;
		printf("%d ", i);
		i++;
	}
	return 0;
}

在这里插入图片描述
这里可以看出,程序陷入了死循环,因为当i为5时,continue跳过后面的代码,返回到while的判断句,5小于10,恒成立,依次类推,程序陷入了死循环.
所以说for和while因为调整语句的位置不同,两个循环还是存在差异的,做题时,根据自己的喜好来看吧,随便哪一个都行,或者两个都可以相互嵌套使用的.
3. d o \color{red}{do} do w h i l e \color{red}{while} while循环
do while 循环是 while 循环的变体。在检查while ()条件是否为真之前,该循环首先会执行一次do 之内的语句 ,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do while这个循环,直至while ()为假。 和 while循环有相似之处,但使用方法完全不同。
do while用的很少,这里就不多说了。
最后,感谢大家的莅临。😘
请添加图片描述

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:【C语言初阶】选择语句和循环语句-创新互联
分享路径:http://cqcxhl.com/article/gpood.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP