分支和循环语句(2)

这篇具有很好参考价值的文章主要介绍了分支和循环语句(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3.2 for循环

3.2.1 for语句的语法

分支和循环语句(2)

使用for循环在屏幕上打印1-10的数字。

#include <stdio.h>

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


for语句的执行流程如下:
分支和循环语句(2)


现在我们对比一下for循环和while循环:

#include <stdio.h>

int main()
{
	int i = 1;//1.初始化

	while (i <= 10)//2.判断
	{
		printf("%d ", i);
		i++;//3.调整
	}

	return 0;
}

可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹,for循环使用的频率也最高。

3.2.2 for循环中的break和continue

break:

#include <stdio.h>

int main()
{
	int i = 0;
	
	for (i = 1; i <= 10; i++)
	{		
		if (5 == i)
		{
			break;
		}

		printf("%d ", i);
	}
	
	return 0;
}

//1 2 3 4

continue:

#include <stdio.h>

int main()
{
	int i = 0;

	for (i = 1; i <= 10; i++)
	{
		if (5 == i)
		{
			continue;
		}

		printf("%d ", i);
	}

	return 0;
}

//1 2 3 4 6 7 8 9 10
3.2.3 for语句的循环控制变量

建议:

  1. 不可在for循环体内修改循环变量,防止for循环失去控制。
  2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
#include <stdio.h>

int main()
{
	int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	//              0  1  2  3  4  5  6  7  8  9
	int i = 0;//[0,10)

	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}
3.2.4 一些for循环的变种
#include <stdio.h>

int main()
{
	//初始化和调整部分的省略就是啥都不做
	//判断部分省略了,意味着判断是恒为真的
	//建议不要随便省略
	for (;;)
	{
		printf("hehe\n");
	}

	return 0;
}

#include <stdio.h>

int main()
{
	int i = 0;
	int j = 0;

	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
		{
			printf("hehe\n");
		}
	}

	return 0;
}

//打印16个hehe

#include <stdio.h>

int main()
{
	int i = 0;
	int j = 0;

	for (; i < 4; i++)
	{

		for (; j < 4; j++)
		{
			printf("hehe\n");
		}

	}

	return 0;
}

//打印4个hehe

//使用多余一个变量控制循环

#include <stdio.h>

int main()
{
    int x = 0;
    int y = 0;
    
    for (x=0, y=0; (x<2) && (y<5); ++x, y++)
    {
        printf("hehe\n");
    }
   
    return 0;
}

//打印2个hehe
3.2.5 一道笔试题
//请问循环要循环多少次?

#include <stdio.h>

int main()
{
	int i = 0;
	int k = 0;
	
	for (i = 0, k = 0; k = 0; i++, k++)
		k++;
	
	return 0;
}

//循环0次

3.3 do while循环

3.3.1 do语句的语法

分支和循环语句(2)
那么do语句的执行流程是怎样的呢?
分支和循环语句(2)

3.3.2 do语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用。

//使用do while语句打印1~10

#include <stdio.h>

int main()
{
	int i = 1;
	
	do
	{
		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}
3.3.3 do while循环中的break和continue

break:

#include <stdio.h>

int main()
{
	int i = 1;
	
	do
	{
		if (5 == i)
		{
			break;
		}

		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}

//1 2 3 4

continue:

#include <stdio.h>

int main()
{
	int i = 1;
	
	do
	{		
		if (5 == i)
		{
			continue;
		}

		printf("%d ", i);
		i++;
	} while (i <= 10);

	return 0;
}

//1 2 3 4 死循环

3.4 练习

3.4.1 计算 n的阶乘
//5! = 1*2*3*4*5
//n! = 1~n 累积相乘

//不考虑溢出
#include <stdio.h>

int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int ret = 1;

	for (i = 1; i <= n; i++)
	{
		ret = ret * i;
	}

	printf("%d\n", ret);

	return 0;
}
3.4.2 计算 1!+2!+3!+……+10!
#include <stdio.h>

int main()
{
	int i = 0;
	int n = 0;
	int sum = 0;

	for (n = 1; n <= 10; n++)
	{
		int ret = 1;

		for (i = 1; i <= n; i++)
		{
			ret = ret * i;
		}

		sum = sum + ret;
	}

	printf("%d\n", sum);

	return 0;
}

//以下方法更好

#include <stdio.h>

int main()
{
	int n = 0;
	int ret = 1;
	int sum = 0;
	//1!
	//2! = 1*2
	//3! = 1*2*3
	//4! = 1*2*3*4
    //每次在前面一次的基础上多乘了一个数,所以不需要每次都把ret改成1重来一遍
	for (n = 1; n <= 10; n++)
	{
		ret *= n;
		sum += ret;
	}

	printf("%d\n", sum);

	return 0;
}
3.4.3 在一个有序数组中查找具体的某个数字n
#include <stdio.h>

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//升序
	int k = 7;
	int i = 0;
	
	for (i = 0; i < 10; i++)
	{
		if (k == arr[i])
		{
			printf("找到了,下标是%d\n", i);
			break;
		}
	}

	if (10 == i)
	{
		printf("找不到了\n");
	}

	return 0;
}

//以下方法更好

#include <stdio.h>

int main()
{
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//升序
	//printf("%d\n", sizeof(arr));//计算数组的总大小,单位是字节
	//printf("%d\n", sizeof(arr[0]));//4
	//printf("%d\n", sizeof(arr) / sizeof(arr[0]));
	int k = 7;
	int sz = sizeof(arr) / sizeof(arr[0]);
	
	//1
	int left = 0;
	int right = sz - 1;
	int flag = 0;//flag的作用是标志是否找到了
	//2
	while (left <= right)
	{
		int mid = (left + right) / 2;

		if (k == arr[mid])
		{
			printf("找到了,下标是:%d\n", mid);
			flag = 1;
			break;
		}
		else if (arr[mid] < k)
		{
			left = mid + 1;
		}
		else
		{
			right = mid - 1;
		}
	}

	if (0 == flag)
	{
		printf("没找到\n");
	}

	return 0;
}

分支和循环语句(2)

3.4.4 多个字符从两端移动,向中间汇聚
//welcome to bit!!!!!
//###################
//w#################!
//we###############!!
//wel#############!!!
//...
//welcome to bit!!!!!


//welcome to bit!!!!!
//###################

#include <stdio.h>
#include <string.h>
#include <windows.h>//Sleep需要一个windows.h的头文件
#include <stdlib.h>//system需要一个stdlib.h的头文件

int main()
{
	char arr1[] = "welcome to bit!!!!!";
	char arr2[] = "###################";
	int left = 0;
	int right = strlen(arr1) - 1;

	while (left <= right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);//单位是毫秒
		system("cls");//system函数可以执行系统命令,cls是清理屏幕
		left++;
		right--;
	}
	
	printf("%s\n", arr2);
	
	return 0;
}
3.4.5 模拟用户登录情景

编写代码实现模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确,则提示登录成功;如果三次均输入错误,则退出程序。)文章来源地址https://www.toymoban.com/news/detail-430622.html

//假设密码是:"123456"

#include <stdio.h>
#include <string.h>

int main()
{
	int i = 0;
	char password[20] = { 0 };

	for (i = 0; i < 3; i++)
	{
		printf("请输入密码:>");
		scanf("%s", password);
		//判断密码是否正确
		//两个字符串比较相等是不能使用==的,应该使用strcmp库函数	
		//strcmp返回0表示2个字符串相等
		//strcmp返回>0的数字,表示第一个字符串大于第二个字符串
		//strcmp返回<0的数字,表示第一个字符串小于第二个字符串
		//字符串比较大小是比较对应位置上的ASCII码值
		//
		//abcd\0
		//abq\0
		//
		//abq大于abcd

		if (0 == strcmp(password, "123456"))
		{
			printf("登录成功\n");
			break;
		}
		else
		{
			printf("密码错误\n");
		}

	}

	if (3 == i)
	{
		printf("退出程序\n");
	}

	return 0;
}

//也可以这样写

#include <stdio.h>
 
int main()
{
	int i = 0;
	char password[20] = { 0 };
	int flag = 0;

	for (i = 0; i < 3; i++)
	{
		printf("请输入密码:>");
		scanf("%s", password);
		
		if (0 == strcmp(password, "123456"))
		{
			printf("登录成功\n");
			flag = 1;
			break;
		}
		else
		{
			printf("密码错误\n");
		}

	}

	if (0 == flag)
	{
		printf("退出程序\n");
	}

	return 0;
}

到了这里,关于分支和循环语句(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 万字C语言之分支语句和循环语句

    前言: 📕作者简介:热爱编程的小七,致力于C、Java、Python等多编程语言,热爱编程和长板的运动少年! 📘相关专栏Java基础语法,JavaEE初阶,数据库,数据结构和算法系列等,大家有兴趣的可以看一看。 😇😇😇有兴趣的话关注博主一起学习,一起进步吧! C语句可分为以

    2024年02月09日
    浏览(50)
  • 分支和循环语句(1)

    什么是语句 分支语句(选择结构) 循环语句 goto语句 C语言中语句可分为以下五类: 表达式语句 函数调用语句 控制语句 复合语句 空语句 本章后面介绍的是 控制语句 。 控制语句 用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持 三种结构 : 顺序结构 、

    2023年04月22日
    浏览(35)
  • 分支和循环语句(2)

    3.2 for循环 3.2.1 for语句的语法 使用for循环在屏幕上打印1-10的数字。 for语句的执行流程如下: 现在我们对比一下for循环和while循环: 可以发现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所

    2024年02月02日
    浏览(30)
  • C 循环与分支语句

    目录 前言 1.什么是语句? 2. 分支语句(选择结构) 2.1   if语句 if…else语句 2.1.1   if语句 2.1.2   if…else语句 2.1.3   嵌套使用 2.1.4   悬空的else  2.2   switch语句 2.2.1   switch语句 2.2.2   嵌套 2.2.3   default 3.循环语句 3.1   while语句 3.1.1   语法 3.1.2   breakcontinue 3.2   f

    2024年02月11日
    浏览(35)
  • 分支和循环语句(3)

    3.4.6 猜数字游戏 打印菜单 选择玩游戏或退出游戏 猜数字游戏主体 完整代码: C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 注: 从理论上, goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 附: 关于shutdown命令的扩展 但是某些场合下got

    2024年02月16日
    浏览(44)
  • C基础-分支和循环语句

    c语言:结构化的程序设计语言。 包括:顺序结构,选择结构,循环结构 选择结构: 分支语句-if和switch 循环结构:循环语句while ,for, do while c语言语句分为五类:1.表达式语句   2.函数调用语句   3.控制语句   4.复合语句  5.空语句 控制语句 用于控制程序的执行流程,以

    2024年02月07日
    浏览(38)
  • Verilog中的 条件语句\多路分支语句\循环语句

    一、背景 由于初学Verilog,故写篇笔记记录Verilog中的 if-else 、 case-endcase 、 for 、 while 、 repeat 、 forever 语法,以及例子。 二、if-else 定个标准,每个 if-else 的出现都要有 begin-end 语句。 2.1 标准结构 条件语句标准使用结构: 2.2 例子 二输入选择器: 三、case-endcase case 语句是一

    2024年02月11日
    浏览(48)
  • 『C语言入门』分支和循环语句

    在编程中,我们需要让程序 根据不同情况作出选择,并重复执行某些任务 。C语言的分支和循环结构为实现这些目标提供了强大的工具。本文将探索C语言中的分支(如 if 和 switch )以及循环(如 while 、 for 和 do...while )结构,帮助你理解如何更有效地控制程序的流程和逻辑。

    2024年02月11日
    浏览(57)
  • 3.7 Linux shell脚本编程(分支语句、循环语句)

    目录 分支语句(对标C语言中的if) 多路分支语句(对标C语言中的swich case) 分支语句(对标C语言中的if) 语法结构:          if    表达式                  then  命令表          fi     如果表达式为真, 则执行命令表中的命令; 否则退出if语句, 即执行fi后面的语句。

    2024年02月02日
    浏览(47)
  • 初阶C语言-分支和循环语句(下)

    “花会沿途盛开,以后的路也是。” 今天我们一起来继续学完分支语句和循环语句。 3.4.1 do语句的用法 在前面,我们学过了用 while循环 和 for循环 在屏幕上打印1~10的数字,那么在 do...while()循环 中,如何实现这步操作呢? 接下来,让我们用一张图了解一下 do...while()循环 的

    2024年02月15日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包