是简单程序吖

Posted 专业include

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是简单程序吖相关的知识,希望对你有一定的参考价值。

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

一、投骰子

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

#include <stdio.h>
#include<time.h>
#include<stdlib.h>
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)用for循环遍历1~10000的所有整数;
(2)求出当前循环中此数的平方和此数的位数;
(3)通过对此数的平方取余求出此数的尾数;
(4)判断尾数是否和此数相等,如果相等则为自守数,将此数输出到屏幕上。
代码实现:

#include<stdio.h>
#include<math.h>
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;
}

运行截图:
在这里插入图片描述

三、汉诺塔

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

#include<stdio.h>
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;
}

运行截图:在这里插入图片描述

四、回文素数

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

#include <stdio.h>
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;
}

运行截图:
在这里插入图片描述

以上是关于是简单程序吖的主要内容,如果未能解决你的问题,请参考以下文章

简单的方法来分享/讨论/协作的代码片段?

通过网页调起客户端程序

在android中显示隐藏片段

Android - 如何录制简单的声音片段?

用金山游侠怎么修改物品吖?

微信小程序代码片段