当前位置: 首页 > news >正文

###C语言程序设计-----C语言学习(6)#

前言:感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。

 

 

 

一.  主干知识的学习 

 

1. while语句 

除了for语句以外,while语句也用于实现循环,而且它的适用面更广,其一般形式为:

            while(表达式)

                      循环体语句

while语句的执行流程:当表达式的值为‘真’时,循环执行,直到表达式的值为‘假’,循环中止并继续执行while的下一条语句。

下面是while语句和for语句的流程对比图:

 

注意:for语句和while语句均能实现循环。但一般情况下,如果题目中指定了循环的次数,使用for语句更加清晰,循环的4个组成部分一目了然;其他情况一般使用while语句。

 

2.do-while语句

do-while语句与上述两种循环语句略有不同,它先执行循环体,后判断循环条件。所以无论循环条件的值如何,至少会执行一次。其一般形式为:

                     do{

                           循环体语句

                      }while(表达式);

执行流程:第一次进入循环时,首先执行循环体语句,然后再检查循环控制条件,即计算表达式,若值为‘真’,继续循环,直到表达式的值为‘假’,循环结束,执行下一条语句。

do-while语句的流程图:

 

3.break语句

break语句强制循环结束,for循环中的break语句的执行流程如下图,一旦执行了break语句,循环提前结束,不再执行循环体中位于其后的其他语句。

for结构中break的作用:

 

 

4.continue语句

continue语句的作用是跳出循环体中continue后面的语句,继续下一次循环,其工作流程如图:

 

注意:continue语句与break语句的区别在于,break结束循环,而continue只是跳过后面语句继续循环。break除了可以中止循环外,还用于switch语句,而continue只能用于循环。

 

二.  具体问题中的应用 

 

问题1:用格雷戈里公式求给定度的“值。使用格雷戈里公式求 的近似值,要求精确到最后一项的绝对值小于给定精度 eps。
                                丌/4=1-1/3+1/5-1/7+····· 

源程序:

#include <stdio.h>
#include <math.h>       //用于调用绝对值函数fabs() 
int main()
{int denominator,flag,i;double eps,item,pi;   //pi用于存放累加和 printf("Enter eps:");  //输入所需精度 scanf("%lf", &eps);i=1;   //i表示项数 flag=1;  //flag用于改变符号 denominator=1;  //denominator表示第i项分母 item=1.0;  //item为第i项的值 pi=0;while(fabs(item)>=eps)  //循环条件 {pi=pi+item;  //逐项累加 i++;flag=-flag;denominator=denominator+2;item=flag*1.0/denominator;}pi=pi+item;  //加上最后一项的值 pi=pi*4;  //最终结果 printf("pi=%.6f\n", pi);  //保留6位小数 printf("i=%d\n", i);  //输出项数 return 0;} 

注意:这里第i项用变量item表示,一旦某一项的绝对值小于eps,就达到了所给的精度,由于最后一项的绝对值小于eps,所以最后还需要加上最后一项的值。

 

问题2:统计一个整数的位数。从键盘读入一个整数,统计该数的位数。例如,输入12534,输出5;输入-99,输出2;输入0,输出1。

源程序:

#include <stdio.h>
int main()
{int count,number,t_number;   //count记录整数number的位数 count=0;printf("Enter a number:");scanf("%d", &number);t_number=number;  //保护输入数据不被改变 if (number<0){t_number=-t_number;  //将输入的负数转换为正数 }do{count++;  t_number=t_number/10;  //整除后减少一个个位数,组成一个新数 }while(t_number!=0);  //循环条件,控制循环的结束 printf("It contains %d digits.\n", count);return 0;} 

 

问题3:判断一个整数是否为素数。输人一个正整数 m,判断它是否为素数。素数就是只能被 1和自身整除的正整数,1 不是素数,2 是素数。

源程序:

#include <stdio.h>
#include <math.h>
int main()
{int i,limit,m;printf("Enter a number:");scanf("%d", &m);if (m<=1)  //小于等于1的不是素数 {printf("No!\n");}else if (m==2)   //2是素数 {printf("%d is a prime number!\n", m);}else{limit=sqrt(m)+1;for (i=2; i<=limit; i++){if (m%i==0)  //若m能被某个i整除,则m不是素数 {break;}}if (i>limit)  //循环结束,说明m不能被任何一个i整除 {printf("%d is a prime number!\n", m);}else {printf("No!\n"); }}return 0;} 

 

感谢您的关注哦,我会持续更新编程相关知识,愿您在这里有所收获。如果有任何问题,欢迎沟通交流!期待与您在学习编程的道路上共同进步。 

 

 

 

 

 

相关文章:

  • 【运维】Ubuntu18.04系统docker方式安装ElasticSearch和kibana
  • Linux CPU 负载说明
  • 在linux、window环境搭建kafka环境
  • C语言——O / 动态内存管理
  • 实习记录——第五天
  • 一些反序列化总结
  • C语言指针进阶之三——函数指针、函数指针数组、指向函数指针数组的指针
  • kali系统入侵电脑windows(win11系统)渗透测试,骇入电脑教学
  • diff命令详解
  • PalWorld/幻兽帕鲁Ubuntu 22.04 LTS 一键部署脚本
  • React中使用LazyBuilder实现页面懒加载方法一
  • 头歌C语言结构体
  • 【驱动】TI AM437x(内核调试-07):devmem2直接读写内存、寄存器,devkmem读取内核变量
  • Android 系统启动流程
  • 运维SRE-01 目录结构体系、find
  • 11111111
  • bootstrap创建登录注册页面
  • CentOS从零开始部署Nodejs项目
  • ES6核心特性
  • express如何解决request entity too large问题
  • Golang-长连接-状态推送
  • idea + plantuml 画流程图
  • java2019面试题北京
  • JS+CSS实现数字滚动
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • orm2 中文文档 3.1 模型属性
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 测试如何在敏捷团队中工作?
  • 大整数乘法-表格法
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 线性表及其算法(java实现)
  • 一份游戏开发学习路线
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • # Apache SeaTunnel 究竟是什么?
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (06)Hive——正则表达式
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Forward) Music Player: From UI Proposal to Code
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一) springboot详细介绍
  • (转)为C# Windows服务添加安装程序
  • (转载)hibernate缓存
  • (转载)OpenStack Hacker养成指南
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ***监测系统的构建(chkrootkit )
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • *上位机的定义
  • ... 是什么 ?... 有什么用处?