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

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

相关文章
|
9月前
|
存储 Java
Java 编程实例:相加数字、计算单词数、字符串反转、元素求和、矩形面积及奇偶判断
Java中相加两个数字可通过简单赋值实现,如`int sum = x + y;`。若要用户输入数字相加,可使用`Scanner`类读取。计算单词数,可使用`split()`方法或`StringTokenizer`类。反转字符串,可用`for`循环或`StringBuilder`的`reverse()`方法。计算数组元素总和,可遍历数组累加。矩形面积通过长度乘以宽度得出。判断奇偶性,利用模2运算或位运算检查最低位。更多内容,可关注微信公众号`Let us Coding`。
99 0
|
9月前
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
11.09作业详解(弹球距离,素数,最大公约数最小公倍数,求整数位数及其各位数字之和,打印乘法表)
学C的第二十四天【练习:1. 打印菱形;2. 打印自幂数;3. 求Sn=a+aa..n项之和;4. 喝汽水问题;5. 调整数组使奇数位于偶数前面;6. 打印X形图案;7……;8……;9……;10……】-2
5. 调整数组使奇数全部都位于偶数前面 题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。
145 0
菱形图案打印、水仙花数、买汽水(上)
菱形图案打印、水仙花数、买汽水(上)
菱形图案打印、水仙花数、买汽水(下)
菱形图案打印、水仙花数、买汽水(下)
用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形
用键盘读入一个字符,然后在屏幕上显示一个用这个字符填充的对角线长5个字符,倾斜放置的菱形
141 0
|
算法 Python
【每周一坑】​计算100以内质数之和 +【解答】输出三角形
不过如果你有兴趣的话,可以进一步考虑一下你所用方法的算法复杂度是多少,看看谁的方法更简单。
输出三个乘法表,按照完整乘法表、下三角乘法表、上三角乘法表的顺序输出,每个表中间空一行。对于每个乘法表,首行升序输出的 11 到 99 数与数之间恰好有三个空格,接下来 10 行每栏内容都需要
输出三个乘法表,按照完整乘法表、下三角乘法表、上三角乘法表的顺序输出,每个表中间空一行。对于每个乘法表,首行升序输出的 11 到 99 数与数之间恰好有三个空格,接下来 10 行每栏内容都需要
99 0
PTA 7-1 打印三角形拼图 (15 分)
一个正方形可以用两个等边直角三角形拼出来。给定正方形的边长、两个三角形和对角线所用的符号,请你打印出这两个三角形拼出的正方形。
151 0