首页 > 其他分享 >C语言新手入门---分支与循环(下)

C语言新手入门---分支与循环(下)

时间:2025-01-17 17:31:13浏览次数:3  
标签:语句 --- return int C语言 新手入门 while 循环 include

前言&概括

鼠鼠也是才学C语言,屏幕前的各位多指教,鼠鼠耐骂。
浅浅讲一下怎么使用C语言三种循环结构的语句:while for do…while

1、while循环

(1)if语句和while语句在形式上的对比

两者在语法结构上基本都是一致的,再度提醒if无{}只能管理紧邻的一个句子

if(exp1)
{
语句
}
while(exp2)
{
语句
}

(2)while语句作用

若()中的表达式判定为真,则按序执行while{}内部的语句。循环这个过程,直到表达式被判定为假。
在这里插入图片描述 在这里插入图片描述
看不懂的可以看看图片

sb练习:打印1~99

#include<stdio.h>
int main()
{
int i=1;
while(i<100)
{
printf("%d ",i);
i++;
}
return 0;
}

sb练习:输入并逆序输出数字

#include <stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
while(n)
{
printf("%d ", n%10);
n /= 10;
}
return 0;
}

2、for循环

由于形式最为简明扼要,for循环往往是C语言里面使用得最多的一种。但三种循环本身并无好坏之分

(1)语法形式

for(exp1;exp2;exp3)
{
语句
}

exp1 用于循环变量的初始化
exp2 用于循环结束条件的判断
exp3 用于循环变量的调整

(2)for循环作用

进入for循环后,进行exp1操作(仅在开始循环的时候做一次,后面不在进行该操作)
判断exp2返回值是否为真,真则开始运行{}内部的语句,结束该轮循环后,进行exp3操作。
接下来重复斜体加粗部分的操作直到exp2返回值为假,结束这一层级的该for循环。
如图所示
在这里插入图片描述

sb练习:在屏幕上打印1~10的值

产生1~10的数字的载体;打印。

#include <stdio.h>
int main()
{
int i = 0;
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}

for和while循环的差别:形式整齐

上面我们提到:
exp1 用于循环变量的初始化
exp2 用于循环结束条件的判断
exp3 用于循环变量的调整

for循环能够把三个表达式都放在一起,并且这三个表达式都是循环所不可或缺的
while初始化放在了最前面,结束条件在()里,循环变量的调整在{}里
而for循环都放在一起

3、do…while

用的比较少,和while的区别就是先做一次循环体(即{}部分)内容,再来判断exp

语法形式

do
{
语句
}while(exp);

do…while循环作用及与while的对比

在这里插入图片描述
在这里插入图片描述

小练习:计算非负整数有几位数

(槽点在于0也是一位数,不管怎样上来cnt都要+1;只不过用的很少就对了)

#include <stdio.h>

int main()
{
int n = 0;
scanf("%d", &n);
int cnt = 0;
do
{
cnt++;
n = n / 10;
} while (n);
printf("%d\n", cnt);
return 0;
}

4、break和continue语句

提前终止循环是很常见的情况:
在高中每天上课是循环体
break就好比毕业
毕业了就不去高中上课
continue就好比休假
休完假还是去高中上课

break

作用:停止这个break语句所在的循环的一切语句,按照顺序结构继续向下走。
对于所有循环语句都一样。

举例

#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
break;//当i等于5后,就执⾏break,循环就终⽌了
printf("%d ", i);
i = i+1;
}
return 0;
}

continue

停止这个循环体的这一次的循环,开始判断循环结束条件,剩下的就按照循环语句的情况来执行。

for循环中触发continue:之后会执行这一次循环中的exp3然后再开始判断循环结束条件,剩下的就按照循环语句的情况来执行。

举例

#include <stdio.h>
int main()
{
int i = 1;
while(i<=10)
{
if(i == 5)
continue;
//当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅
//因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊死循环
printf("%d ", i);
i = i+1;
}
return 0;
}

5、嵌套循环

前⾯学习了三种循环 while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决
问题,就是我们所说的:循环嵌套,这⾥我们就看⼀个例⼦。

举例

找出100~200之间的素数,并打印在屏幕上。
注:素数⼜称质数,只能被1和本⾝整除的数字。
解析:
要找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。
假设要判断i是否为素数,需要拿2~ i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤循环解决。
如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。

#include <stdio.h>
int main()
{
int i = 0;
for(i=100; i<=200; i++)//循环产⽣100~200的数字
{//循环产⽣2~i-1之间的数字
int j = 0;
int flag = 1;//假设i是素数
 for(j=2; j<i; j++)
 {
   if(i % j == 0)
   {
   flag = 0;
   break;
   }
 }
    if(flag == 1)
    {
    printf("%d ", i);
    }
}
return 0;
}

简化版本:
因为当存在a,b使得m=a*b,则m不是素数,所以a和b至少有一个是<=m的所以范围只需要缩小到2~根号m即可。
能大大减少电脑的运算量,比如右边边界是100,开根则10

#include <stdio.h>
int main()
{
int i = 0;
for(i=100; i<=200; i++)//循环产⽣100~200的数字
{//循环产⽣2~根号i之间的数字
int j = 0;
int flag = 1;//假设i是素数
 for(j=2; j*j<=i; j++)
 {
   if(i % j == 0)
   {
   flag = 0;
   break;
   }
 }
    if(flag == 1)
    {
    printf("%d ", i);
    }
}
return 0;
}

共勉

以下就是我对 C语言循环 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出哦,同时我还会继续更新 C语言循环 ,请持续关注我哦!!!

标签:语句,---,return,int,C语言,新手入门,while,循环,include
From: https://blog.csdn.net/sbsztdl/article/details/145207601

相关文章

  • C语言新手入门---分支与循环(上)
    前言鼠鼠也是才学C语言,屏幕前的各位多指教,鼠鼠耐骂。编程里的分支结构要理解其实也就是数学里的树状图,把所需要的情况一点点根据数据分类好,再用编程语言的语法写好就行。一、if语句1、if本身用法如果判断表达式的结果为真(也就是表达式内容正确(或者说表达式返回的值非0),......
  • 编程题-最小高度树
    题目:给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。解法一(二分查找+二叉搜索树构建):二叉搜索树的中序遍历是升序序列,题目给定的数组是按照升序排列的有序数组,因此可以确保数组是二叉搜索树的中序遍历序列。二叉搜索树中,左子树的......
  • P1135 - 【入门】歌德巴赫猜想 -
    难度:4-题目描述任一个大于等于4的偶数都可以拆分为两个素数之和。(5.1.40)输入格式一个整数n(4<=n<=200)输出格式将小于等于n的偶数拆分为2个质数之和,列出所有方案!输入数据110输出数据14=2+26=3+38=3+510=3+710=5+5代码:#include<iostream>usingname......
  • P1126 - 【提高】英文翻译 -
    难度:8+输入格式一个自然数n,0<=n<=2^31-1。输出格式输出这个数的英文,最后不要有多余的空格。输入数据11111111111输出数据1onebilliononehundredandelevenmilliononehundredandeleventhousandonehundredandeleven 代码:#include<iostream>#incl......
  • vue中使用axios获取不到响应头Content-Disposition的解决办法
    项目中,后端返回的文件流,fileName是机构名称+服务器时间。前端需要拿到响应头里的Content-Disposition字段的值,从中获取文件名在控制台Headers中可以看到相关的字段和文件名,但是在axios里面却获取不到 如果想要让客户端访问到相关信息,服务器不仅要在heade里添加,还要将它们在......
  • [Machine Learning] 使用经典聚类模型k均值(k-means)实现blobs聚类
    一、内容实现概述本文主要讲述使用scikit-learn库内置的kNN模型,实现鸢尾花分类。具体实现过程如下:1.导入所需库:预先导入numpy、matplotlib以及scikit-learn库2.导入数据:调用sklearn库内置的加载数据的方法make_blobs(),导入斑点数据3.数据预处理:对blobs数据进行预处理,获得......
  • Biotin sulfo-N-hydroxysuccinimide ester ;生物素磺基-N-羟基琥珀酰亚胺酯;生物素衍生
    一、生物素及其衍生物的概述      生物素衍生物是指在生物素(VitaminH或B7)分子基础上进行化学修饰得到的衍生化合物。这些衍生化合物在生物医学研究、临床诊断和药物开发等领域有着广泛的应用。    生物素(Biotin)是一种水溶性维生素,也被称为维生素H或维生素......
  • Laminin Pentapeptide YIGSR-NH2;层粘连蛋白五肽;抗黏附肽;YIGSR;LAMININ (929-933)肽;1105
    YIGSR 简介    YIGSR是一种能够抑制白血病细胞肿瘤生长和转移的多肽。YIGSR通过67kDa层粘连蛋白结合蛋白阻断细胞与层粘连蛋白I的结合,并抑制剪切诱导的层粘连蛋白细胞 eNOS 表达增加。   【中文名称】层粘连蛋白(929-933);抗黏附肽;酪氨酰-异亮氨酰-......
  • (14-4)基于Latent Diffusion Transformer的文生视频系统:视频数据的预处理和增强
    6.4.5 视频数据的预处理和增强文件video_transforms.py主要实现了视频数据的预处理和增强功能,包括对视频帧的随机裁剪、中心裁剪、尺度调整、归一化、随机水平翻转等操作。通过自定义的多种预处理类,例如RandomCropVideo、CenterCropVideo和NormalizeVideo,可以对输入的视......
  • SpringCloudAlibaba:从0搭建一套快速开发框架-04 OpenFeign的使用
    序言:上篇安装了Nacos并注册了系统服务,本篇主要介绍OpenFeign的集成使用。OpenFeign简介OpenFeign是一个声明式的HTTP客户端,它通过注解的方式简化了调用RESTfulAPI的过程。它是SpringCloud的一部分,用于在微服务架构中简化服务间的通信。与传统的使用RestTemplate......