【C语言基础(三)】控制语句

本文详细介绍了C语言中的选择结构(if、if-else、if-else-if和Switch),以及各种循环结构(for、while、do...while和嵌套循环),同时还涵盖了条件运算符、逗号运算符和其他控制语句如return、break、goto、continue和exit。适合初学者学习C语言基本控制结构。
摘要由CSDN通过智能技术生成

1、选择结构

选择语句又称为分支语句,它通过对给定的条件进行判断,从而决定执行两个或多个分支中的哪一支。

  • 示例:为了判断一个数是偶数还是奇数,执行如下操作:

在这里插入图片描述

1.1、if语句

1.1.1、if语句(一)

  • 通过条件为真还是为假来决定
  • 常规格式:
    if (表达式)
    {
    语句;
    }
  • 表达式是要判断的条件,跟在后面的是一个或一组语句
  • 在if后的语句不止一个,应用大括号{}将他们组织起来。这样的组会称为“复合语句”或“代码块”。如果只有一个语句,大括号{}可以省略,但不建议。

1.1.2、if语句(二)

  • 可以选择两个语句中的一个来执行
  • 语法形式:
    if(表达式)
    {
    语句-1;
    }
    else
    {
    语句-2;
    }
  • 如果 if 表达式的值为true(非0),将执行 if 语句(一个或一组)后的语句块
  • 如果 if 表达式的值为false(0),那么控制权将交给else 表达式后面的语句
  • else语句是可选的.仅当 if 表达式的值为false时,才会执行else后的语句或语句序列
    实例
#include <stdio.h>
int main()
{	//这个程序用来显示一个数是偶数还是奇数
	int num , res ;
	printf("Enter a number :");
	scanf("%d",&num);
	res = num % 2;
	//if(0 == res)//赋值运算符= 和 关系运算符==注意使用
	if (res == 0)		
	{
		printf("Then number is Even");
	}
	else
	{
		printf(“The number is Odd ”);
	}
	return 0;
}

1.1.3、if语句(三)

  • if-else-if 语句也称为 if-else-if 台阶或if-else-if 阶梯
  • 条件的计算是自顶向下的
  • 建议书写格式:
    if (表达式)
    { 语句;
    }
    else if (表达式)
    语句;
    else if (表达式)
    语句;
    else
    语句;

    实例
#include <stdio.h>
#include <stdlib.h>
void main(){
	int x = 0;
	system (“cls”);
	printf("Enter Choice (1 - 3) :");
	scanf("%d", &x);
	if (x == 1)
		printf ("\nChoice is 1");
	else if ( x == 2)
		printf ("\nChoice is 2");
	else if ( x == 3)
		printf ("\nChoice is 3");
	else 
		printf ("\nInvalid Choice ");
}

1.1.4、嵌套的if语句(一)

  • 嵌套的 if 语句就是在 if 或 else 语句中包含另一个 if 语句
  • 在 C 语言中,else 语句通常与同一块中距离它最近且未与 else 关联的 if 语句相匹配,与书写格式无关
  • 语法示例:
    if (表达式-1)
    {
    if (表达式-2)
    {
    语句-1;
    }
    if (表达式-3)
    {
    语句-2;
    }
    else
    {
    语句-3;
    }
    /与if(表达式-3)相匹配/
    }
    else
    {
    语句-4;
    }
    /与if (表达式-1)相匹配/
#include <stdio.h>
void main (){
	int x, y;
	x = y = 0;
	printf ("Enter Choice (1 - 3) :");
	scanf ("%d", &x);
	if (x == 1)
	{
		printf("\nEnter value for y (1 - 5) :");
		scanf ("%d", &y);
		if (y <= 5)
			printf("\nThe value for y is : %d", y);
		else
			printf("\nThe value of y exceeds 5");
	}
	else
		printf ("\nChoice entered was not 1");
}

1.1.5、嵌套的if语句(二)

在这里插入图片描述

1.2、Switch语句

  • switch 语句是一种多路判定语句,它判断表达式的值是否与整数或字符常量列表中的某个值相匹配
  • 若找到了相应的匹配,就会执行与常量关联的语句
  • 通用语法:
    switch(a)
    {
    case 常量1:
    语句集;
    break;
    case 常量2:
    语句集
    break;
    ……
    default:
    语句集;
    break;
    }
  • switch、case、和default都是关键字,语句可以是简单或复合语句。
  • switch后的表达式需要用圆括号括起来,而且switch语句的主题用{ }括起来
  • 计算表达式的数据类型要与指定的case常量的数据类型匹配。
  • switch后的表达式可以包含任何变量名,也可以是常量。
  • case后面只能是常量(整型和字符型)。
  • switch语句执行过程:
    在这里插入图片描述
#include<stdio.h>
void main()
{
	int iBasic;
   	printf("\n please enter your basic:");
   	scanf("%d",&iBasic);
   	switch(iBasic)
	{
		case 100:printf("\n Bonus is dollar %d\n",30);break;
      	case 200:printf("\n Bonus is dollar %d\n",50);break;
      	case 300:printf("\n Bonus is dollar %d\n",125);break;
      	case 400:printf("\n Bonus is dollar %d\n",140);break;
      	case 500:printf("\n Bonus is dollar %d\n",175);break;
      	default:printf("\n Invalid entry");break;
	}
}

2、循环结构

  • 循环是程序中重复执行,直到满足指定条件才停止的一段代码。
  • C语言中,控制循环执行的条件在编码时用到了关系和逻辑运算符。

2.1、for循环

  • for循环的通用语法:
    for(初始化计数 ; 条件测试 ; 再求值参数)
    {
    语句;
    }
  • 初始化计数是一个赋值语句,它在进入循环前设置循环控制变量。
  • 条件测试是一个关系表达式,它决定何时退出循环。
  • 再求值参数定义每次执行循环时,循环控制变量如何变化。
  • for 循环的三个部分必须用分号 ; 隔开。
  • 组成循环体的语句可以是单个语句,也可以是复合语句。
  • 要正确表达循环结构应注意三方面的问题:控制变量的初始化,循环的条件和控制变量的更新。
  • 工作原理:
    - 1、初始化计数,给循环变量赋初始值。
    - 2、条件测试,求值结果为 true,就执行循环体内的代码执行。当条件变为 false时退出循环,程序将继续执行 for 循环后面的语句。
    - 3、循环变量变化计算。
    - 4、重复第二步条件测试。
    实例(一)
#include <stdio.h>
int main(){ 
	int count; 
	printf("\tThis is a \n"); 
 	for(count = 1; count <=6 ; count++) 
 	{
		printf("\n\t\t nice"); 
	}
 	printf("\n\t\t world.\n"); 
	return 0;
}

实例(二)

#include <stdio.h>
int main(){
    int i,n;    
	long  fact=1;
	printf("Input  n: "); 
	scanf("%d", &n);
    for(i=2; i<=n;  i++)   
	{	
		fact*=n;
	}
    printf("%d!=%ld\n",n,fact);
}

2.2、while循环

  • 通用语法:
    while(表达式)
    {
    语句;
    }

  • 表达式一般为关系表达式或者逻辑表达式

  • 语句可以是空语句、一个简单的语句或语句块

  • 如果while循环中包含一组语句,必须用{}括起来

  • 只要条件为真循环就会迭代
    实例

#include <stdio.h> 
int main() 
{ 	
	int count = 1; 
	while( count <= 10) 
	{ 
		printf("\n This is iteration %d\n ",count); 
		count++; 
	}  	  
	printf("\n The loop is completed. \n "); 
	return 0;
}
/*和for循环一样,while循环在执行循环前检查条件*/

2.3、do…while循环

  • 通用语法
    do
    {
    语句;
    }while(条件);

  • while后面的分号不能省略

  • do…while 循环中,循环体中的代码在条件测试执行前执行一次

  • 条件为 False 时,do while 循环终止;控制权传递给紧跟在 while 语句之后的语句

#include <stdio.h> 
int main () {
/*接受并显示一些整数,直到输入0(零),然后退出整个循环,
并打印输入的整数的个数*/
	int num1, num2; 
	num2 = 0; 
	do {
		 printf("\nEnter a number : "); 
	     scanf("%d",&num1); 
	     printf(" No. is %d ",num1); 
	     num2++; 
	} while (num1 != 0); 
	printf ("\nThe total numbers entered were %d ",--num2); 
	return 0;
}

2.4、三种循环的区别和总结

  • while和for语句先判断循环控制条件,do-while语句后判断循环控制条件,所以,while和for语句的循环体可能一次也不执行,而do-while语句的循环体至少也要执行一次。
  • 三种循环可以处理同一问题,一般情况可以互相代替。但在实际应用中,我们要根据具体情况来选用不同的循环语句。选用的一般原则如下:
    - 如果循环次数在执行循环体之前就已确定,一般用for语句;如果循环次数是根据循环体的执行情况确定的,一般用while语句或者do-while语句。
    - 当循环体至少执行一次时,用do-while语句;反之,如果循环体可能一次也不执行时,用while语句。

2.5、嵌套循环

  • 如果一个循环出现在另一个循环中,则称它为嵌套循环。
  • 三种循环都可以相互嵌套,自由组合
    在这里插入图片描述
    实例
#include <stdio.h> 
void main() 
{ 
	int i, j, k; 
	i = 0; 
	printf("Enter no. of rows:"); 
	scanf("%d", &i); 
	printf("\n"); 
	for (j = 0; j < i ; j++) 
	{ 	
		printf("\n"); 
		for (k = 0; k <= j; k++)
			printf("*"); 
	} 
}

3、运算符

3.1、条件运算符

  • 条件运算符是C语言中唯一的三目运算符
    表达式1 ? 表达式2 :表达式3
  • 条件运算符的优先级高于赋值运算,低于关系和算术运算符
  • 结合方式:从右向左
  • 计算:a=3,b=30;
    a<5 ? (c=6) : b>20 ? (b=8) : (c=9)

3.2、逗号运算符

  • 格式是 :exprn1, exprn2 ;
  • 逗号运算符优先级最低
  • 表达式被逗号运算符隔开,从左向右求值。但只有其最右端的表达式的结果,作为整个逗号表达式的结果
  • 通过在for循环中包含多个初始化表达式或增量表达式,可以丰富for循环中表达式

4、其他控制语句

4.1、return

  • 通用语法: return expression;
  • 表达式是可选的
  • return 语句用于从函数中返回
  • return 语句可以带有值,该值将返回给调用程序它使执行返回到调用函数的位置
  • 一个函数中可以使用多个return语句,但是遇到第一个return语句时返回

4.2、break

  • 通用语法: 通用语法:
  • 用于在 switch 语句中终止case
  • 也可以用于在循环中突然终止循环
  • 当循环中遇到 break 语句时,循环立即终止,控制权传递给循环之后的语句
  • 多层循环中,break只向外跳一层
    实例
#include <stdio.h> 
int main () 
{ 
	int count1, count2; 
	for(count1 = 1, count2 = 0;count1 <=100;count1++) 
	{ 
		printf(" Enter %d count2 : ",count1); 
		scanf("%d", &count2); 
		fflush(stdin);
		if(count2 == 100) break; 
	} 
	return 0;
}

4.3、goto

  • 通用语法: goto label;
  • 需要在函数中某行代码处,定义一个标签
  • goto 语句将控制权传递给C程序中同一函数内的其他语句
  • 它实际上违背了严格的结构化程序设计语言的原则
  • 它们降低了程序的可靠性,并使得程序难以维护

4.4、continue

  • 通用语法: continue;
  • continue 语句,只能在循环中使用让封闭循环进行下一次迭代
  • 遇到该语句时,跳过循环体中剩余的语句,控制权传递给重新初始化步骤
  • 在while循环和do…while循环中,程序控制权传递个条件测试语句
  • 在for循环中,continue影响循环的增量部分,然后执行条件测试
    实例
#include <stdio.h> 
int main () 
{ 
	int num; 
	for(num = 1; num <=100; num++) 
	{ 
		if(num % 9 == 0)  
			continue; 
		printf("%d\t",num); 
	} 
	return 0;
}
/*打印1-100之间不能被9整除的数*/

4.5、exit()

  • 通用语法: exit(int return_code);
  • exit() 用于跳出一个程序
  • 是一个标准库函数
  • 该函数的用途是立即终止程序,控制权交给操作系统
  • 24
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值