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

分支和循环语句

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

分支和循环语句

c语言是结构化的程序设计语言:顺序结构,选择结构,循环结构。

1.什么是语句?

c语句可分为以下五类

1.表达式语句

2.函数调用语句

3.控制语句

4.复合语句

5.空语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类:

  1. 条件判断语句也叫分支语句:if语句、switch语句;

  2. 循环执行语句:do while语句、while语句、for语句;

  3. 转向语句:break语句、goto语句、continue语句、return语句。                              

 

2.分支语句(选择结构) 2.1if语句
//单分支
if(表达式)

​           语句;
//双分支
if(表达式)

​           语句1;

else

​           语句2;

//多分支

if(表达式1)

​           语句1;

else if(表达式2)

​           语句2;

…

else

​           语句n;
2.1.1悬空else
#include 
int main()
{
    int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehen");
    else
        printf("hahan");
    return 0;
}

 

2.1.2练习

1.判断一个数是否为奇数

#include
int main()
{
    int n=0;
    scanf("%d",&n);
    if(n%2=1)
    {
     printf("%d为奇数",n);
    }
    else
    {
     printf("%d为偶数",n);
    }
    return 0;
}

2.输出1-100之间的奇数

#include
int main()
{
    int i=1;
    while(i<100)
    {
        printf("%dn",i);
        i+=2;
    }
    return 0;
}
2.2switch语句
switch(整形表达式)
case 整形常量:
语句;
break;
default://默认
语句;
break;

switch允许嵌套使用

编程好习惯

在最后一个 case 语句的后面加上一条 break语句。 (之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。

在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。

3.循环语句 3.1while循环
while(表达式)
     循环语句;
     while(getchar()!='n')
     {
         ;//清理缓冲区
     }
3.2for循环
for(表达式1;表达式2;表达式3)
{
     循环语句;
}

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

表达式2为条件判断部分,用于用于判断循环时候终止;

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

建议:

  1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。

  2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

3.3do while循环
do
    循环语句;
    while(表达式);//至少执行1次
3.4练习 1.计算n的阶乘
#include
int main()
{
	int n = 0;
	int i = 0;
	int sum = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		sum *= i;
	}
	printf("%d", sum);
	return 0;
}
2.计算1!+2!+……+10!
#include
int main()
{
	int n = 0;
	int i = 0;
	int ret = 1;
	int sum = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		ret *= i;
		sum += ret;
	}
	printf("%d", sum);
	return 0;
}
3.在一个有序数组中查找具体的某个数字n。(讲解二分查找/折半查找)
#include
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);//求数组个数
	int left = 0;
	int right = sz - 1;//最右边元素下标数为数组个数减去1
	int k = 0;
	scanf("%d", &k);
	int mid = 0;
	while (left<=right)
	{
		mid = (left + right) / 2;
		if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else if (arr[mid] > k)
		{
			right = mid - 1;
		}
		else
		{
			printf("找到了,k的下标为%dn", mid);
			break;//此处不添加break程序死循环
		}
	}
	if (left > right)
	{
		printf("找不到n");
	}
	return 0;
}
4.编写代码,演示多个字符从两端移动,向中间汇聚。
#include
#include
#include
#include
int main()
{
	char arr1[] = { "welcome to bit!!!!!" };
	char arr2[] = { "###################" };
	int left = 0;
	int right = strlen(arr1) - 1;//strlen(arr1)求得字符数组arr1的元素个数
	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		left++;
		right--;
		Sleep(1000);//Sleep函数表示延迟(n)毫秒后执行下个程序,需引用头文件
		system("cls");//cls命令表示清空屏幕,system函数需引用头文件
		printf("%sn", arr2);
	
	}
	return 0;
}
5.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。)
#include
#include
int main()
{
	char password[20] = { 0 };
	int i = 0;
	printf("请输入密码n");
	for (i = 0; i < 3; i++)//3次输入密码机会
	{
		scanf("%s", password);
		if (strcmp(password, "bitbit") == 0)
		{
			printf("密码正确n");
			break;//密码正确后要跳出循环
		}
		else
		{
			printf("密码错误,请重新输入n");
		}
	}
	if (i == 3)
	{
		printf("密码输入错误3次,退出程序n");
	}
	return 0;
}
6.猜数字游戏
#include
#include
#include
void meun()
{
	printf("######################n");
	printf("###### 1.play ########n");
	printf("###### 0.exit ########n");
	printf("######################n");
}
void game()
{
	int guess = 0;
	int ret = rand() % 100 + 1;//随机生成一个1-100的数
//rand函数可以生成随机数
//返回一个0~RAND_MAX(32767)
	while (1)
	{
		printf("请猜数字");
		scanf("%d", &guess);
		if (guess > ret)
		{
			printf("猜大了n");
		}
		else if (guess < ret)
		{
			printf("猜小了n");
		}
		else
		{
			printf("猜对了n");
			break;
		}
	}
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		meun();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();//猜数字游戏通过一个函数实现
			break;
		case 0:
			printf("退出游戏n");
			break;
		default:
			printf("输入错误,请重新输入n");
			break;
		}
	} while (input);
	return 0;
}

 

4.goto语句

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。 例如:一次跳出两层或多层循环。 多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

4.1goto语句示例
#include
#include
#include
int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 60");
	again:
	printf("你的电脑将在1分钟内关机,如果想停止关机,请输入我是猪n");
	scanf("%s", input);
	if(strcmp(input,"我是猪") ==0)
		{
			system("shutdown -a");
			printf("电脑已停止关机n");
		}
	else
	{
		goto again;
	}
	return 0;
}
推荐书籍

《高质量C++/C编程指南》(林锐)(代码风格讲解)

 

 

 

 

 

 

 

 

 

 

 

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

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

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