宿迁哪家做网站推广,台州椒江网站制作公司,网站安全建设思考,高端网站建设公司服务好吗欢迎点赞支持 个人主页#xff1a;励志不掉头发的内向程序员#xff1b; 专栏主页#xff1a;C语言基础#xff1b; 文章目录 目录 前言 一、for循环的补充 二、循环的嵌套 1、嵌套的介绍 1.1 练习#xff1a; 题目解析#xff1a; 优化#xff1a; 三、goto语句 1、go… 欢迎点赞支持 个人主页励志不掉头发的内向程序员 专栏主页C语言基础 文章目录 目录 前言 一、for循环的补充 二、循环的嵌套 1、嵌套的介绍 1.1 练习 题目解析 优化 三、goto语句 1、goto介绍 2、使用方式 四、关机程序 1.、原理 2.、实现 总结 前言
对于上一章节的循环的学习相信大家对于循环已经有了自己的一些理解那么我们这一章节就来看看循环的嵌套吧就是一个循环套着一个循环本质上还是循环但是在理解方面可能会更加的困难我相信小伙伴们肯定已经跃跃欲试了吧那就让我们来一起看看吧。 一、for循环的补充
上一节课讲了说for循环是建立在while循环的缺陷的基础上的把while循环的三个关键点放在一起这样就解决了关键点难以查找的问题while循环的三个关键点并不是一定要存在的而是可以缺少的但是可能会使程序死循环那么for循环呢是不是也是这样的呢我们来尝试一下吧。
int main()
{int i 0;for (; i 10; i){printf(%d , i);}return 0;
}
我们可以看到在这个地方初始化消失了但是由于我们在前面已经定义了所以说我们就可以不再定义一次而直接写判断条件和调整方式和初始化直接写在for循环里面没有什么区别。 其他也是同理但是要注意如果把后面的调整或者判断条件删了程序就有可能陷入死循环判断部分缺失就意味着程序恒成立所以如果要删除的话一定要谨记。
二、循环的嵌套
1、嵌套的介绍
我们之前学了for循环和while循环等嵌套其实就是在这些循环的基础上在其内部再次使用一个循环其实在语法上没有什么其他的用法一般来说我们在使用循环时要用到这三种循环的嵌套才能更好的解决问题。所以说我们就从一些练习来看看循环的嵌套的使用方法和精妙之处吧。 1.1 练习 找出1~100之间的素数 我们都知道可能素数就是除了1和它本身就没有其他的数字能把它整除所以我们应该怎么解决这一问题呢
题目解析
我们既然知道了原理那就应该有思路不就是看看有没有除了1和它本身的数字可以和它整除嘛这样我们是不是就可以去试试循环假如我们要看看a是不是素数那就看看从1到a有没有其他的数字可以和a整除嘛如果有的话那就不是素数如果没有的话就是素数了。但是我们要求的可不是一个数a啊是要找到从1~100中的素数啊那怎么办呢我们想想要是再有一个循环就好了所以说这时嵌套循环就来了我们先写两个循环一个实现找一个数的素数再一个实现从1~100循环。
1.
int main()
{int a 13;int flag 1;for (int i 2; i a - 1; i){if (a % i 0){flag 0;break;}}if (flag){printf(%d , a);}return 0;
}
这行代码表示的就是如何判断出是否是素数的代码我想大家可能有一些地方看不懂但是没有关系我来给大家讲解一下我们知道素数就是除了1和它本身之外没有其他的数可以将它整除的数字所以说我们可以让a去取除了1和a以外的数字的余数如果有余数为0的数字出现就证明它不是素数反之则证明了它是素数。所以我们就可以用一个循环去一个一个的试flat的作用是假设假设a是素数如果a不是素数的话就让flat 0这样我们跳出循环时就可以判断a到底是不是素数了。
2.
int main()
{for (int i 1; i 100; i){printf(%d , i);}return 0;
}
这里很显然就是一个从1~100的遍历。
如果我们把这两个函数嵌套一下那就即实现了1~100的遍历也实现了求它们的素数我们可以来尝试一下。
int main()
{for (int i 1; i 100; i){int flag 1;for (int j 2; j i - 1; j){if (i % j 0){flag 0;break;}}if (flag){printf(%d , i);}}return 0;
}
这里我们可以看到将两个循环嵌套起来既实现了找素数的功能也可以一次性找很多个素数。 这样这一道题就解出来了啦但是我们可以看看有没有什么办法能让我们的计算机轻松一点呢就比如说少循环几次呢也就是我们所说的优化程序呢
优化
我们都知道如果不是素数那么必然是有可以整除的数的就比如8 2 * 4但是我们再想想是不是只要找到前面的数就不需要找后面的数了呢那么我们取中间值就可以了中间值是取我们的平方根就好了。
#includemath.h
int main()
{for (int i 1; i 100; i){int flag 1;for (int j 2; j sqrt(i); j){if (i % j 0){flag 0;break;}}if (flag){printf(%d , i);}}return 0;
}
我们来看看取平方根的方式吧本质上是一个sqrt函数用法非常简单就是这样 将我们要取平方根的数字放到它的括号里面就可以了但是它是在一个math的头文件里的所以要使用时我们得带上。 还可以优化吗我们再想想emmmmm~~是不是只有奇数才可能是素数而偶数是绝对不可能的呢那我们来试试看吧
int main()
{for (int i 1; i 100; i 2){int flag 1;for (int j 2; j sqrt(i); j){if (i % j 0){flag 0;break;}}if (flag){printf(%d , i);}}return 0;
}
好啦现在应该不能再优化了那么这个程序就写完啦。 我们要知道一个题目的解法肯定是不止一种的在面对很多种解法是应该怎么办呢肯定就是选择最好的那种。
三、goto语句
1、goto介绍
goto从字面上看就是去哪里的意思其实使用方式也差不多就是去往自己指定的地方如果指定的地方是在前面那就会在走一次前面的程序可能会导致死循环如果是指定后面那就会跳过一些程序直接到指定的位置就是因为goto语句跳来跳去的所以我们一般不频繁的使用它因为很容易会导致直接思想混乱。
2、使用方式 1. goto *** ***: 2. ***: goto *** 使用方法很简单就是goto后面用一个自己命名的内容然后再跳到自己命名的内容的地方去。
例如
int main()
{printf(呵呵呵\n);goto next;printf(哈哈哈\n);
next:printf(好好好\n);return 0;
}
这一串代码就是我命名了一个next的地方让goto跳到next的程序去。所以说它会不输出哈哈哈而直接输出好好好。 如果让goto往回跳的话很容易产生死循环所以说要尽量小心使用。
int main()
{
next:printf(呵呵呵\n);goto next;printf(哈哈哈\n);printf(好好好\n);return 0;
} 四、关机程序
在这里教大家一个非常有意思的程序可以整蛊一下自己的朋友那就是让他说自己是猪不然就关机它的电脑接下来我们来看看怎么实现吧。
1.、原理
其实在我们计算机中按WindowR后会出现一个窗口 在这个窗口输入cmd后回车就可以打开计算机的底层菜单。 在这个菜单中可以对计算机进行指令比如说创建菜单啊关机电脑啊之类的大家可以自己研究研究但是在这里输入shutdown -t 60就可以让计算机在60秒后关机如果说输入shutdown -a就可以取消电脑关机我们在知道这些以后如何在C语言中实现呢这得依靠一个system的库函数来实现它需要一个叫stdlib的头文件来使用。
2.、实现
#includestring.h
#includestdlib.h
int main()
{char a[20] { 0 };system(shutdown -s -t 60);
again:printf(你的电脑还有1分钟关机如果不想关机请输入:我是猪\n);scanf(%s, a);if (strcmp(a, 我是猪) 0){system(shutdown -a);}else{goto again;}return 0;
}
实现起来还是蛮简单的但是我们要注意字符串的比较不是直接用来比较而是用一个strcmp的库函数来比较而这个库函数在string的头文件之中使用方式如下 将要比较的内容放在里面如果它们相同那返回值就为0。 总结
本节课主要是说明了循环的嵌套和对上一章节循环的完善循环到此就全部结束啦我们下一章节就来讲讲数组吧数组部分也有蛮多内容的期待小伙伴的前来关注谢谢小伙伴们啦。如果有哪里写的不好请指出。感谢。