#数学趣题
-
新郎新娘问题
- /*3对情侣参加婚礼,3个新郎分别为A,B,C, 3个新娘分别为X,Y,Z,有人想知道究竟谁与谁结婚,于是就问新人中的三位,得到如下结果:A说他将和X结婚;X说她的未婚夫是C;C说他将和Z结婚.这人事后知道他们在开玩笑,说的全是假的. 那么,究竟谁和谁结婚呢! */
//C语言
#include<stdio.h>
#include<stdlib.h>
void married(int i,int j,int k,char wife[]) {
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
for (k = 0; k < 3; k++) {
if (i!=k&&k!=j&&j!=i) {
if (wife[i]!='X'&&wife[k]!='X'&&wife[k]!='Z') {
printf("配对方式为:\n");
printf("A-----%c\n",wife[i]);
printf("B-----%c\n",wife[j]);
printf("C-----%c\n",wife[k]);
}
}
}
}
}
}
void main() {
char wife[3] = {'X','Y','Z'};
int i = 0;
int j = 0;
int k = 0;
married(i,j,k,wife);
system("pause");
}
- 爱因斯坦阶梯问题
- //检测整型数据数据类型的表达值范围
- /*著名的爱因斯坦阶梯问题是这样的:有一条长长长的阶梯,如果你每步跨2阶,那么最后剩1阶;如果你每步跨3阶,那么最后剩2阶;如果你每步跨5阶,那么最后剩4阶;如果你每步跨6阶,那么最后剩5阶;最有当你每步跨7阶时,最后正好走完,一阶也不剩。请问这条阶梯最少有多少阶。*/
//C语言
#include<stdio.h>
#include<stdlib.h>
#include <limits.h>
void main() {
int i = 1;
int ladder = 7;
for (i = 1; i < INT_MAX;i++) {
if ((ladder%2==1)&&(ladder%3==2)&&(ladder%5==4)&&(ladder%6==5)) {
break;
}
ladder = 7 * (i+1);
}
printf("最低的阶梯数是:%d\n",ladder);
system("pause");
}
- 猴子吃桃问题
- /*猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,
又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又
多吃了一个。以后每天早上都吃了前一天剩下的一半零一
个。到第十天早上在想吃时,就只剩一个桃子了。求第一
天共摘了多少个桃子?*/
//C语言
#include<stdio.h>
#include<stdlib.h>
/*
每天早上都吃了前一天剩下的一半零一个
意味着:第一天的桃子:x
第二天的桃子:y y=x-(x/2 -1) x=2*(y+1)
*/
void main() {
int day = 10;
int num = 1;
for (day = 10; day > 1;day--) {//十天吃了九次
num = 2 * (num + 1);
}
printf("第一天一共摘了 %d 个桃子\n",num);
system("pause");
}
//C语言
//100~200的素数
#include<stdio.h>
#include <stdlib.h>
void main() {
int i = 2;
printf("100--200的素数有:\n");
int j=100;
while (j <= 200) {
for (i = 2; i < j; i++)
if (j%i == 0)
break;
if (i == j)
printf("%d\t", j);
j++;
}
system("pause");
}