是简单程序吖

简单程序

  • 一、投骰子
    • 二、自守数
      • 三、汉诺塔
        • 四、回文素数

在对c语言有了初步了解之后,相信大家都遇到过汉诺塔等问题的求解,今天带大家看看她的真面目。

一、投骰子

描述:每次点数都是1到6的一个随机数;为了分出每盘的胜负,必须把两个人骰子点数的累加值分别记录下来;为了分出整体的胜负,必须把两人胜利的盘数分别记录下来。
分析:
(1)引入需要用到的三个头文件;
(2)在主函数中,调用srand()函数设计随机数种子;
(3)外层循环实现50盘游戏中两人胜负盘数的累积,内层循环计算每人每盘掷出的随机点数;
(4)循环结束后得到最终结果,经过比较分出胜负并输出结果到屏幕上。
代码实现:

#include 
#include
#include
int main()
{
     
    srand((unsigned int)time(NULL));
    int d1, d2, c1, c2, i, j;
    c1 = c2 = 0;
    for (i = 1; i <= 50; i++)
    {
     
        d1 = d2 = 0;
        for (j = 1; j <= 6; j++)
        {
     
            d1 = d1 + rand() % 6 + 1;
            d2 = d2 + rand() % 6 + 1;
        }
        if (d1 > d2)
            c1++;
        else if (d1 < d2)
            c2++;
    }
    if (c1 > c2)
    {
     
        printf("\nThe frist win.");
    }
    else
    {
     
        if (c1 < c2)
            printf("\nThe second win.");
        else
            printf("\nThey tie.");
    }
    return 0;
}

运行截图:是简单程序吖_第1张图片

二、自守数

描述:如果某个数的平方的末尾几位等于该数本身,那么就称这个数为自守数。
分析:
(1)用for循环遍历1~10000的所有整数;
(2)求出当前循环中此数的平方和此数的位数;
(3)通过对此数的平方取余求出此数的尾数;
(4)判断尾数是否和此数相等,如果相等则为自守数,将此数输出到屏幕上。
代码实现:

#include
#include
int main()
{
     
 int i, a, k, m;
 for (i = 1; i < 10000; i++)
 {
     
  a = i;
  a *= a;
  k = log10(i) + 1;
  for (m = 1; k; k--)
   m *= 10;
  a %= m;
  if (a == i)
   printf("%d\n", i);
 }
 return 0;
}

运行截图:
是简单程序吖_第2张图片

三、汉诺塔

描述:在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
代码实现:

#include
int getNum(int n)
{
     
 if (n == 1)
  return 1;
 else
  return 2 * getNum(n - 1) + 1;
 return 0;
}int main()
{
     
 int n = 10, num;//n的值可以修改
 num = getNum(n);
 printf("汉诺塔中%d片圆盘共需移动%d次\n", n, num);
 return 0;
}

运行截图:是简单程序吖_第3张图片

四、回文素数

描述:一个整数i从左向右读与从右向左读都是相同的数,且i为素数,则称其为回文素数。(素数指只能由1和它本身整除的整数)
分析:
(1)先采用穷举法对1000以内的整数进行遍历,判断其是否为素数;
(2)如果此数为素数,则继续判断此数是两位数还是三位数;
(3)如果为两位数,则判断其十为和个位是否相同,如果相同则说明此数为回文素数;如果是三位数,则判断其百位和个位是否相同,如果相同则说明此数为回文素数;
(4)最后将所有少于1000的回文素数打印输出到屏幕上即可。
代码实现:

#include 
int main()
{
     
 int flag;
 int n;
 int i;
 for (n = 10; n < 1000; n++)
 {
     
  for (i = 2; i < n; i++)
  {
     
   flag = 1;
   if (n % i == 0)
   {
     
    flag = 0;
    break;
   }
  }
  if (flag == 1)
  {
     
   if (n / 100 == 0)
   {
     
    if (n / 10 == n % 10)
    {
     
     printf("%4d", n);
    }
   }
   else
   {
     
    if (n / 100 == n % 10)
    {
     
     printf("%4d", n);
    }
   }
  }
 }
 printf("\n");
 return 0;
}

运行截图:
是简单程序吖_第4张图片

你可能感兴趣的:(c语言)