11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)

简介: 11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)

1.弹球距离

两种方法,一种用while循环,一种用函数递归,两种方法各有优势

首先第一种方法while循环

double dist(double h, double p)
{
    double sum = h;
    double x=p*h;
     while (x >= TOL)
    {
        sum += x * 2;
        x *= p;
    }
    return sum;
}

这个方法比较好理解,但要注意的是循环要从h*p开始,或者用dowhile也行

第二种是函数递归

double dist(double h, double p)
{
    double sum = 0;
    double x=p*h;
    if(x<TOL)
        return h;
    else
        return h+dist(x,p)+x;
}

代码比较简洁但并不容易理解,首先函数递归要有一个限制条件,且想办法然函数中的某个形参无限逼近与该条件,由题目可知,这个限制条件是让h*p^n逼近与0.001即可,当h*p^n满足小于0.001时返回h*p^(n-1),然后再往前推直到求到第一个dist函数,需要注意的是每次x与h的关系,第一次x=h*p,第二次传递x=h1*p,这时的h1由于第一次赋值等于h*p...然后一直往后递推直到x<0.001后返回,假设h*p^3<0.001,这时返回h*p^2,由于h*p^2>0.001,返回h+h*p^2+h*p^2...直到返回到第一次调用的dist函数即可。

2.

#include <stdio.h>
int main()
{
    int a, b, sum1=0, sum2=0, j;
    scanf("%d %d", &a, &b);
    for (int i = a; i <= b; i++)
    {
        for (j = 2; j < i; j++)
        {
            if (i % j == 0)
                break;
        }
        if (j == i)
        {
            sum1++;
            sum2 += i;
        }
    }
    printf("%d %d", sum1, sum2);
    return 0;
}

这道题首先求哪个数是素数,素数的概念一个数的因子只有1和它本身,1除外。

所以由概念可知,假设一个数为x,当你用for循环遍历从2到x-1的数时,如果找到中间的某个数能被x整除,则说明它的因子不只有1和它本身,x为合数,这时结束求因子的for循环。而如果遍历所有这个范围的数都没找到,则说明x为素数,而条件j==i,则是为了说明你跳出循环是因为所有数都遍历完了,而不是因为找到另一个因子。

3.最大公约数最小公倍数

#include <stdio.h>
int main()
{
    int a,b,x,y;
    scanf("%d %d",&a,&b);
    x=a;y=b;
    while(a!=b)
    {
        if(a>b)
            a=a-b;
        else b=b-a;
    }
    printf("%d %d",a,(x/a)*(y/a)*a);
    return 0;
}

先求最大公约数,方法有很多,例如辗转相除,更相减损

我这里用的是更相减损法,原理就是当a与b两个数不相等是将两数相减并赋值给较大的数,当减到两数相同时,这时两数的值即为它们的最大公约数,而最小公倍数就简单多了,用a,b两数除以最大公约数后相乘再乘上个最大公约数就能得到最小公倍数啦。

3.求整数的位数及各位数字之和

还是讲两种方法,一种while循环,一种函数递归(递归就不细讲了,参照第一题,因为讲起来有点绕,后面专门出一期函数递归讲讲里面的典型例题)

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

这种就是我们常说的模10法,接下来我以123为例讲一下

首先从位数入手,第一次循环123/10=12,第二次12/10=1,第三次1/10=0...由此可知,当跳出循环时,循环的次数等于该整数的位数

再说各个位上的数字,第一次循环123%10=3,第二次12%10=2,第三次1%10=1...这道题只用求和,所以不需要考虑求出各个位上的数字的顺序,如果题目要求正向输出各个位上的数字,就在while中把各个位上的数字赋给一个数组,然后用for循环倒着遍历即可

还有一种方法函数递归,省去了for循环,直接正序输出

int Print(int n)//定义函数,并传入形参n
{
  if (n < 10)
    return printf("%d ", n);
  else
  {
    Print(n / 10);
    return printf("%d ", n % 10);;
  }
}
int main()
{
  int n;
  scanf("%d", &n);
  Print(n);
  return 0;
}

4.九九乘法表,基础题,就不细讲了

#include <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    for (int i=1;i<=n;i++)
    {
        for(int j=1;j<=i;j++)
        {
            printf("%d*%d=%-4d",j,i,i*j);
        }
        printf("\n");
    }
    return 0;
}
相关文章
|
Web App开发 关系型数据库 RDS
电源缓启动(软起动)原理
该文讨论了电源的缓启动(软起动)技术,主要是为了解决热插拔过程中可能产生的电源振荡和大电流冲击问题。缓启动通过防抖动延时和控制电流上升斜率来避免系统受影响或设备受损。文章提到了两种类型的缓启动电路:电压斜率型和电流斜率型,并详细解释了电压型缓启动电路的工作原理,包括各个元件的作用和电路的缓启动阶段。
454 12
|
大数据 搜索推荐 新制造
带你读《中台战略:中台建设与数字商业》之二:企业数字化转型
在产业互联网时代,数字化成为企业的核心战略。在此背景下,数字中台成为指导企业数字化转型、实现数字营销的主流方法。数字中台是基于企业级互联网及大数据架构打造的数字化创新平台,包含业务中台和数据中台。
|
机器学习/深度学习 人工智能 自然语言处理
未来深度学习技术的发展趋势与挑战
随着人工智能的快速发展,深度学习作为其核心技术之一,正面临着多样化和复杂化的挑战。本文探讨了未来深度学习技术的发展趋势,分析了当前面临的技术挑战,并提出了应对策略。 【7月更文挑战第10天】
427 0
|
11月前
|
存储 监控 安全
低代码平台如何筑牢数据安全防线
数字化转型下,低代码平台备受青睐,但数据安全问题日益凸显。Zoho Creator低代码平台通过数据加密、访问控制、安全审计等措施,确保数据安全,提供高效安全的开发环境,持续改进安全策略以应对新挑战。
211 1
|
供应链 监控 安全
物联网(IoT)的安全性挑战及其应对策略
【5月更文挑战第9天】物联网(IoT)的快速发展带来设备多样性和安全漏洞,易受DDoS攻击、数据隐私泄露及供应链威胁。为应对挑战,需强化设备安全设计,建立认证和授权机制,加密数据传输,实施安全事件监控及加强供应链管理,以确保IoT的健康发展。
|
分布式计算 NoSQL Java
2024年最新推荐3款可以搞定中国式复杂报表的报表工具
中国式复杂报表以结构复杂、多数据源和大量信息为特点,常见于金融等领域。适合制作这类报表的工具有润乾报表、smartBI和亿信BI。润乾报表以其非线性模型擅长处理复杂报表,支持多种数据源,提供数据准备层,降低开发难度;smartBI采用真Excel架构,学习成本低,但性能可能因Excel而受限;亿信BI则注重BI功能,其在线设计器操作流畅性欠佳。在性价比方面,润乾报表以较低价格和完整功能脱颖而出。建议根据具体需求选择适合的工具进行试用。
334 1
|
存储 安全 编译器
C/C中sizeof和strlen函数的实现:详细解析sizeof和strlen函数的实现机制、参数说明和使用技巧
C/C中sizeof和strlen函数的实现:详细解析sizeof和strlen函数的实现机制、参数说明和使用技巧
298 1
|
机器学习/深度学习 算法 数据可视化
探索可解释性机器学习:Breakdown带你了解心脏病随机森林的预测关键
探索可解释性机器学习:Breakdown带你了解心脏病随机森林的预测关键
348 0
探索可解释性机器学习:Breakdown带你了解心脏病随机森林的预测关键
|
存储 NoSQL Java
比亚迪面试,全程八股!
比亚迪面试,全程八股!
290 3
|
传感器 数据采集 安全
聊聊身边的嵌入式,你家燃气表是智能的吗?
聊聊身边的嵌入式,你家燃气表是智能的吗?

热门文章

最新文章