是简单程序吖
Posted *平芜尽处是春山*
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;
运行截图:
以上是关于是简单程序吖的主要内容,如果未能解决你的问题,请参考以下文章