循环结构 程序举例

简介: 循环结构 程序举例

循环结构:

求n!

求1!+2!+3!+……+n!

求数列和

求cosx的近似值

求n!

输入n

使用for循环 for( i=1;i<=n;i++) // i 是计数器变量

用fac来接收 n!

输出 n!

#include <stdio.h>
int main (void)
{
  int i,n;
  float fac;
  printf("请输入正整数n:\n");
  scanf("%d",&n);
  fac=1;               \\记得给fac初始化!!
  for (i=1;i<=n;i++)   \\注意不要在后面加分号!
  {
    fac*=i;
  }
  printf("n!=%f",fac);
  return 0;
}

求1!+2!+3!+……+n!

用s接收 1!+2!+3!+……+n! 并将s初始化为0

用 变量a来接收 1! , 2!, 3!,……n!

循环次数已定,为n

使用for循环 for(i=1;1<=n;i++)

循环体 a * =i;s+=a;

#include <stdio.h>
int main (void)
{
  int i,n;
  float a=1,s=0;           \\给a和s初始化
  printf("请输入正整数n:\n");
  scanf("%d",&n);          \\不要丢取地址符!
  for (i=1;i<=n;i++)        
  {
    a*=i;
    s+=a;
  }
  printf("s=%f",s);
  return 0;
}

求数列和

计算数列1/2,-2/3,3/4,-4/5……的前20项和。

首先,循环数已知为20,以变量i作为计数器

确定for 循环 for(i=1;i<=20;i++)

观察分子分母以及符号的规律。

分子:当i=1时,分子为1;当i=2时,分子为2……分子数值一直与i相同。用a来接收分子的值,可以将变量i的值直接赋值给a。

分母:分母的值为分子的值加1。用变量b来接收分母的值,即b=i+1

符号:第一项为正,第二项为负。即奇数项为正,偶数项为负。后一项的符号与前一项的符号相反。用变量c来进行符号的转换

#include <stdio.h>
int main (void)
{
  int i,c;
  float a,b,s;
  s=0;
  c=-1;
  for (i=1;i<=20;i++)
  {
    a=i;
    b=i+1;
    c*=-1;
    s+=a/b*c;
  }
  printf("s=%f\n",s);
  return 0;
}

求数列和

计算数列1/2,-2/3,3/5,-5/8,8/13……的前20项和。

分析如上题目。

循环次数已定,为20.

使用for循环,用变量i作为计数器。 即 for(i=1;i<=20;i++)

分子与i相同

分母:第一项为2,第二项为3,第三项为5,第四项为8……即分母为前两项之和。必要条件:必须知道第一项分母和第二项分母的值。

符号后一项的符号与前一项的符号相反

#include <stdio.h>
int main (void)
{
  int i,f;    \\i只是计数器的作用;f只在1和-1之间变换。
  float s,a,b,c,x;   
  a=2;b=3;   \\处理前两项。分别为第一项和第二项分母。
  s=1./2.-2./3.;  \\前两项需要直接存到s中,后面根据前两项的规律进行递推。
                   \\注意!!!不能写成1/2 -2/3 否则运算结果为0!
  f=1;
  for (i=3;i<=20;i++)   \\计数器从3开始即可
  {
    c=a+b;     \\引入变量c是为了分母的递推
    a=b;b=c;
    x=i/c*f;  \\将后面每一项存到变量x中
    f*=-1;
    s+=x;
  }
  printf("s=%f",s);
  return 0;
} 

求cosx的近似值

cosx=1-x^2/2!+x ^4/4!+x ^6/6!……

分析:

未知x,需要输入x;

一共加到多少项,未知。(即循环次数未知)但是当某一项小于等于10^-6 时,就会停止循环 (循环的条件)

每一项的表示:

分子:x^2 , x ^4 , x ^6, ……后面每一项都是前一项加2

分母:2! 4! 6! …… 后面每一项的阶乘都是前一项加2

循环变量i 设其初始值为2,使循环趋于结束的部分:i=i+2

符号:后一项的符号与前一项相反

#include <stdio.h>
#include <math.h>  \\下面用到 pow函数
int main (void)
{
  int i,f;     
  double x,cosx,a,b,c;  \\ pow函数 pow(x,y),要求x,y必须是double型数据
  printf("请输入x的值:\n");
  scanf("%lf",&x);    
  b=1;   \\用变量b来接收分母
  f=1;    \\控制符号变化
  cosx=1;   \\使变量x初始化
  c=1;    \\ 这里给c赋值只是为了for循环中,满足循环条件!
  for (i=2;c>=1e-6;i=i+2)
  {
    a=pow(x,i);
    b*=i*(i-1);
    f*=-1;
    c=a/b;     \\c恒正,为了判断循环条件时方便(可以不使用绝对值函数)
    cosx+=c*f;    \\注意不要忘了符号
  }
  printf("cosx的近似值为:%lf\n",cosx);
  return 0;
}


相关文章
|
3月前
|
缓存 前端开发 API
阿里巴巴国际站关键字搜索 API 实战:从多条件筛选到商品列表高效获客
本文详解了如何通过阿里巴巴国际站的关键字搜索接口实现多条件商品搜索功能,涵盖接口调用、参数设置、分页处理及数据解析,并提供可复用的 Python 实现代码,助力开发者高效构建跨境电商商品搜索系统。
|
4月前
|
机器学习/深度学习 人工智能 搜索推荐
天猫API智能分析用户行为,精准推荐转化率飙升!
在竞争激烈的电商环境中,天猫API通过人工智能技术深度分析用户行为,实现个性化推荐,有效提升用户转化率。本文解析其智能分析、精准推荐及转化率优化的实现机制,助力商家把握数据价值。
266 0
|
6月前
|
传感器 人工智能 搜索推荐
VR体育训练:从赛场到虚拟世界,运动训练的新纪元
VR体育训练:从赛场到虚拟世界,运动训练的新纪元
274 11
VR体育训练:从赛场到虚拟世界,运动训练的新纪元
|
9月前
|
IDE Java 应用服务中间件
spring boot 启动流程
Spring Boot 启动流程简介: 在使用 Spring Boot 之前,启动 Java Web 应用需要配置 Web 容器(如 Tomcat),并将应用打包放入容器目录。而使用 Spring Boot,只需运行 main() 方法即可启动 Web 应用。Spring Boot 的核心启动方法是 SpringApplication.run(),它负责初始化和启动应用上下文。 主要步骤包括: 1. **应用启动计时**:使用 StopWatch 记录启动时间。 2. **打印 Banner**:显示 Spring Boot 的 LOGO。 3. **创建上下文实例**:通过反射创建
487 5
|
人工智能 搜索推荐 安全
从零到一:微信机器人开发的实战心得
从零到一:微信机器人开发的实战心得
1166 2
|
消息中间件 设计模式 SQL
代码复用:DDD视角下的平衡艺术
文章深入探讨了软件开发中关于代码复用的哲学思考,作者通过自己的经历引入话题,结合软件设计领域的理论和观点,阐述了代码复用的本质及其在不同情境下的应用策略。
|
机器学习/深度学习 人工智能 算法
[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作
[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作
|
开发框架 移动开发 前端开发
在微信框架模块中,基于Vue&Element前端的后台管理功能介绍
在微信框架模块中,基于Vue&Element前端的后台管理功能介绍
|
机器学习/深度学习 算法 算法框架/工具
e - 一个神奇的存在
本文介绍了数学常数e,即自然对数的底,约等于2.71828,由欧拉命名。e是一个无限不循环小数,可通过级数1 + 1/n!表示。e在数学、物理、工程和计算机科学等领域有广泛应用,尤其在微积分、复利、概率统计和算法分析中扮演关键角色。它是自然界和科学研究中的基本概念。
1197 1
|
机器学习/深度学习 文字识别 算法
深度学习助力版面分析技术,图像“还原”有方
深度学习助力版面分析技术,图像“还原”有方
300 0