写个小程序计算猜数字问题的结果
来源:互联网 发布:陕西省行政区划数据 编辑:程序博客网 时间:2024/06/05 19:56
一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明!
一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人可以看见另两个数,但看不见自己的)
教授问第一个学生:你能猜出自己的数吗?回答:不能;
问第二个,不能;
第三个,不能;
再问第一个,不能;
第二个,不能;
第三个:我猜出来了,是144!
教授很满意的笑了。请问您能猜出另外两个人的数吗? 请说出理由!
程序如下:
#include <stdio.h>
#include <stdlib.h>struct number_guess
{
int num[3];
};
struct guessnumber
{
int nCount;
number_guess guess[128];
};
void savelog(char *pBuffer )
{
FILE * fp = fopen("guess.log", "a+");
if (!fp )
return ;
fwrite(pBuffer,1,strlen(pBuffer),fp);
fclose(fp);
}
guessnumber g_guessnumber[32]={0};
void calcnumber(int curnumber)
{
g_guessnumber[curnumber].nCount = g_guessnumber[curnumber-1].nCount+g_guessnumber[curnumber-2].nCount;
number_guess *pGuess = g_guessnumber[curnumber].guess;
for (int i =0;i< g_guessnumber[curnumber-2].nCount;i++)
{
memcpy(&pGuess->num,&g_guessnumber[curnumber-2].guess[i].num,3*sizeof(int));
if (0==curnumber%3)
pGuess->num[0] = pGuess->num[1]+pGuess->num[2];
else if (1==curnumber%3)
pGuess->num[1] = pGuess->num[0]+pGuess->num[2];
else if (2==curnumber%3)
pGuess->num[2] = pGuess->num[0]+pGuess->num[1];
pGuess++;
}
for (int i =0;i< g_guessnumber[curnumber-1].nCount;i++)
{
memcpy(&pGuess->num,&g_guessnumber[curnumber-1].guess[i].num,3*sizeof(int));
if (0==curnumber%3)
pGuess->num[0] = pGuess->num[1]+pGuess->num[2];
else if (1==curnumber%3)
pGuess->num[1] = pGuess->num[0]+pGuess->num[2];
else if (2==curnumber%3)
pGuess->num[2] = pGuess->num[0]+pGuess->num[1];
pGuess++;
}
}
int main()
{
g_guessnumber[0].nCount =1;
g_guessnumber[0].guess[0].num[0]=2;
g_guessnumber[0].guess[0].num[1]=1;
g_guessnumber[0].guess[0].num[2]=1;
g_guessnumber[1].nCount =2;
g_guessnumber[1].guess[0].num[0]=1;
g_guessnumber[1].guess[0].num[1]=2;
g_guessnumber[1].guess[0].num[2]=1;
g_guessnumber[1].guess[1].num[0]=2;
g_guessnumber[1].guess[1].num[1]=3;
g_guessnumber[1].guess[1].num[2]=1;
g_guessnumber[2].nCount =4;
g_guessnumber[2].guess[0].num[0]=1;
g_guessnumber[2].guess[0].num[1]=1;
g_guessnumber[2].guess[0].num[2]=2;
g_guessnumber[2].guess[1].num[0]=2;
g_guessnumber[2].guess[1].num[1]=1;
g_guessnumber[2].guess[1].num[2]=3;
g_guessnumber[2].guess[2].num[0]=1;
g_guessnumber[2].guess[2].num[1]=2;
g_guessnumber[2].guess[2].num[2]=3;
g_guessnumber[2].guess[3].num[0]=2;
g_guessnumber[2].guess[3].num[1]=3;
g_guessnumber[2].guess[3].num[2]=5;
char szBuffer[10240]="";
for (int i =3;i <8;i++)
{
calcnumber(i);
sprintf(szBuffer ,"%s num=%d,number=%d,",szBuffer ,i+1,g_guessnumber[i].nCount);
for (int j =0;j<g_guessnumber[i].nCount;j++)
{
number_guess *pGuess = g_guessnumber[i].guess+j;
for (int k=0;k<3;k++)
{
sprintf(szBuffer,"%s%d:",szBuffer ,pGuess->num[k]);
}
strcat(szBuffer,",");
}
strcat(szBuffer,"\n");
}
printf(szBuffer);
savelog(szBuffer);
getchar();
return 0;
}
- 写个小程序计算猜数字问题的结果
- 使用jni计算两个数字的结果
- 将数字格式的计算结果转换为汉字结果
- 计算结果总是100的程序
- 计算结果总是100的程序
- 猜数字问题的出题程序
- 将数字格式的计算结果转为汉字格式
- 输入若干数字计算数字之和的程序
- 把1-9这9个数字按从小到大的顺序排列 ,中间添上“+”和"-"可以计算的结果等于100的程序;
- 把1-9这9个数字按从小到大的顺序排列 ,中间添上“+”和"-","",可以计算的结果等于100的程序
- 彻底解决Javascript数字计算不精确的问题
- 竞争编码一些数字的计算问题
- 计算从N个数字中取K个数字的结果集
- 汇编调用子程序计算输入的数字个数并以十进制形式显示计算结果【源码】
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- 编写一个在1,2,…,9(顺序不能变)数字之间插入+或-或什么都不插入,使得计算结果总是100的程序
- Spark程序结果包含括号的问题
- 1072 是否闰年
- sizeof,union在32位系统中的对齐问题
- 马云在2013中国IT领袖峰会上的演讲
- Limu:JavaScript的那些书
- Android属性之build.prop生成过程
- 写个小程序计算猜数字问题的结果
- 硬盘安装debian squeeze 6.0.3 DVD.ISO
- button上添加文字
- uploadify3.0详细使用说明
- 100多个国外市场APP推广渠道网站 提交地址
- php .htaccess 伪静态
- linux 不同进程间和线程间的同步
- win7右下角的小喇叭消失
- 傅里叶变换与数字图像处理