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;
}

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

相关文章
|
4月前
输出9*9口诀
输出9*9口诀。
28 1
|
7天前
输出 9*9 口诀
输出 9*9 口诀。
33 10
|
4月前
8.求出100~230之间所有素数之和,先在屏幕上输出,再求和
8.求出100~230之间所有素数之和,先在屏幕上输出,再求和
25 0
|
4月前
打印9*9乘法口诀
打印9*9乘法口诀
39 0
|
4月前
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
学C的第二十四天【练习:1. 打印菱形;2. 打印自幂数;3. 求Sn=a+aa..n项之和;4. 喝汽水问题;5. 调整数组使奇数位于偶数前面;6. 打印X形图案;7……;8……;9……;10……】-2
5. 调整数组使奇数全部都位于偶数前面 题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。
113 0
学C的第十三天【应用多文件的形式实现 三子棋 程序(重点);练习:1. 打印9*9乘法口诀表、2. 求10个整数中的最大值、3. 分数加减交叉计算、4. 数一下 1到 100 的整数中出现了多少个9】
9.数组的应用实例1:三子棋(综合以前学习的知识) 三子棋的实现:(重点都在注释中) 1. 游戏不退出,继续玩下一把(循环) 2. 应用多文件的形式写代码
菱形图案打印、水仙花数、买汽水(上)
菱形图案打印、水仙花数、买汽水(上)