11.14作业(打印图案,乘法表右对齐,圆周率,哥德巴赫猜想)

简介: 11.14作业(打印图案,乘法表右对齐,圆周率,哥德巴赫猜想)

1.打印图案

#include <stdio.h>
int main()
{
    int n;
    char ch[] = "abcdefghijklmnopqrstuvwxyz";
    char* p = ch;
    scanf("%d", &n);
    for (int i = n; i > 0; i--)
    {
        for (int j = 0; j < n-i; j++)
             printf(" ");
        for (int k = 1; k <= 2 * i - 1; k++)
             printf("%c", *(p + k - 1));
        if(i > 1)
        printf("\n");
    }
    return 0;
}

这里打印图案没什么难度,主要是按顺序依次输出abc...这里我采用了指针,也可以用asc||码值

2.打印乘法表右对齐

#include <stdio.h>
int main()
{
  int n;
  scanf("%d", &n);
  for (int i = n; i > 0; i--)
  {
    for (int j = 0; j < n - i; j++)
    {
      printf("          ");
    }
      for (int j = i; j > 0; j--)
    {
      printf("%d*%d=%2d    ", i, j, i * j);
    }
    printf("\n");
  }
  return 0;
}

3.计算圆周率(蒙特卡罗法)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int main()
{
  double x = 0, y = 0, pi = 0;
  double n = 1e6, count = 0, a;
  scanf("%lf", &a);
  srand(a);
  for (int i = 0; i < n; i++)
  {
    x = (double)rand() / RAND_MAX;
    y = (double)rand() / RAND_MAX;
    if (sqrt(x * x + y * y) < 1)
      count++;
  }
  pi = 4.0 * (count / n);
  printf("%.5lf", pi);
  return 0;
}

解读一下这个代码:首先定义x,y表示坐标,然后设定一个随机数种子srand(a),意思就是如果a等于100,下面rand取随机数时从100开始,在除以RAND_MAX(表示一个很大的随机数,至少也是三十多万),所以(double)rand()/RAND_MAX范围在0-1之间(也可以理解成一个有限的数乘上无穷小量还是一个无穷小量),当然可能由于编译器的差异,不同编译环境下算出的pi值不同。 (因为产生的随机数不一样)

4.哥德巴赫猜想

#include <stdio.h>
int main()
{
  int n, k, x;
  scanf("%d", &n);
  for (int i = n; i > 2; i--)
  {
    for (int j = 2; j <= i; j++)
    {
      if (i + j == n)
      {
        for (x = 2; x < j; x++)
          if (j % x == 0)
            break;
        for (k = 2; k < i; k++)
          if (i % k == 0)
            break;
        if (k == i && x == j)
          printf("%d+%d\n", j, i);
      }
    }
  }
  return 0;
}

别先去判断质数,先去判断两数之和,大大节省运行时间

相关文章
|
6月前
|
存储 缓存 安全
【原理】【Java并发】【volatile】适合初学者体质的volatile原理
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是写出高端的CRUD应用。2025年,我正在沉淀自己,博客更新速度也在加快。在这里,我会分享关于Java并发编程的深入理解,尤其是volatile关键字的底层原理。 本文将带你深入了解Java内存模型(JMM),解释volatile如何通过内存屏障和缓存一致性协议确保可见性和有序性,同时探讨其局限性及优化方案。欢迎订阅专栏《在2B工作中寻求并发是否搞错了什么》,一起探索并发编程的奥秘! 关注我,点赞、收藏、评论,跟上更新节奏,让我们共同进步!
309 8
【原理】【Java并发】【volatile】适合初学者体质的volatile原理
|
9月前
|
安全 Ubuntu Shell
深入解析 vsftpd 2.3.4 的笑脸漏洞及其检测方法
本文详细解析了 vsftpd 2.3.4 版本中的“笑脸漏洞”,该漏洞允许攻击者通过特定用户名和密码触发后门,获取远程代码执行权限。文章提供了漏洞概述、影响范围及一个 Python 脚本,用于检测目标服务器是否受此漏洞影响。通过连接至目标服务器并尝试登录特定用户名,脚本能够判断服务器是否存在该漏洞,并给出相应的警告信息。
539 84
|
NoSQL Java Redis
|
监控
zabbix如何添加自定义监控项
zabbix如何添加自定义监控项
744 0
|
11月前
|
SQL XML Java
Mybatis的<where>,<if>等标签用法
这篇文章详细解释了Mybatis中<where>和<if>等标签的用法,展示了如何在SQL动态构建中有效地过滤条件和处理逻辑分支。
741 1
|
并行计算 算法 C#
C# Mandelbrot和Julia分形图像生成程序更新到2010-9-14版 支持多线程计算 多核处理器
此文档是一个关于分形图像生成器的介绍,作者分享了个人开发的M-J算法集成及色彩创新,包括源代码和历史版本。作者欢迎有兴趣的读者留言交流,并提供了邮箱(delacroix_xu@sina.com)以分享资源。文中还展示了程序的发展历程,如增加了真彩色效果、圈选放大、历史记录等功能,并分享了几幅精美的分形图像。此外,还提到了程序的新特性,如导入ini文件批量输出图像和更新一批图片的功能。文档末尾附有多张程序生成的高分辨率分形图像示例。
|
编解码 前端开发 开发者
构建响应式Web界面:Flexbox布局的全面指南
【2月更文挑战第28天】 在当今多变的设备屏幕尺寸和分辨率中,创建一个能够适应不同视口的响应式Web界面至关重要。本文深入探讨了CSS Flexbox布局模块,它是一种设计灵活且强大的方式来创建复杂的响应式布局。我们将透过概念解析、关键属性讲解以及实际案例分析,帮助前端开发者掌握Flexbox的核心原理和应用技巧,以实现流畅的页面布局调整和优化用户体验。
|
Dart Shell pouch
markdown中快速插入Emoji表情包语法速查表!!!
markdown中快速插入Emoji表情包语法速查表!!!
|
SQL 存储 分布式数据库
美团增量数仓建设新进展
美团系统研发工程师汤楚熙,在 Flink Forward Asia 2022 实时湖仓专场的分享。
853 0
美团增量数仓建设新进展

热门文章

最新文章