【71.约瑟夫问题】

这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15

个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒。

#include

struct node{

int

nextp;

int

no_out;

}link[31];

void main(){

int

i,j,k;

printf("The original circle

is(+:pagendom,@:christian):\n");

for(i=1;i<=30;i++){

link[i].nextp=i+1;

link[i].no_out=1;

}

link[30].nextp=1;

j=30;

for(i=0;i<15;i++){

for(k=0;;)

if(k<15){

j=link[j].nextp;

k+=link[j].no_out;

}

else

break;

link[j].no_out=0;

}

for(i=1;i<=30;i++)

printf("%c",link[i].no_out?

'@':'+');

printf("\n");

}

【72.邮票组合】

某人有四张3分的邮票和三张5分的邮票,用这些邮票中的一张或若干张可以得到多少种不同的邮资?

#include

int a[27];

void main(){

int

i,j,k,s,n=0;

for(i=0;i<=4;i++)

for(j=0;j<=3;j++){

s=i*3+j*5;

for(k=0;a[k];k++)

if(s==a[k])break;

if(!a[k]&&s){

a[k]=s; n++;

}

}

printf("%d

kinds:",n);

for(k=0;a[k];k++)

printf("%d ",a[k]);

printf("\n");

}

【73

和数能表示1~23的5个正整数】

已知五个互不相同的正整数之和为23,且从这五个数中挑选若干个加起来可以表示从1到23之内的全部自然数。问这五个数是什么?

#include

void main(){

int a,b,c,d,e,i,j,k,l,m,x,count=0,f=0;

printf("There are following possble result:\n");

for(a=1;a<=23;a++){

for(b=1+a;b<=23-a;b++)

for(c=1+b;c<=23-a-b;c++)

for(d=1+c;d<=23-a-b-c;d++){

f=1;

if((e=23-a-b-c-d)>d)

for(f=0,x=1;x<24&&!f;x++)

for(f=1,i=0;i<2&&f;i++)

for(j=0;j<2&&f;j++)

for(k=0;k<2&&f;k++)

for(l=0;l<2&&f;l++)

for(m=0;m<2&&f;m++)

if(x==a*i+b*j+c*k+d*l+e*m) f=0;

if(!f)

printf("[%d]: %d %d %d %d %d\n",++count,a,b,c,d,e);

}

}

}

【74.可称1~40磅的4块砝码】

法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)中提出了一个问题:一位商人有一个重40磅的砝码,一天不小心将砝码摔成了四块。后来商人称得每块的重量都是整磅数,而且发现这四块碎片可以在天平上称1至40磅之间的任意重量。请问这四块碎片各重多少?

#include

#include

void main(){

int

weight1,weight2,weight3,weight4,d1,d2,d3,d4,x,flag;

printf("The weight is broke up as following 4 pieces:");

for(weight1=1;weight1<=40;weight1++)

for(weight2=weight1+1;weight2<=40-weight1;weight2++)

for(weight3=weight2+1;weight3<=40-weight1-weight2;weight3++)

if((weight4=40-weight1-weight2-weight3)>=weight3){

for(flag=1,x=1;x<41&&flag;x++)

for(flag=0,d1=1;d1>-2;d1--)

for(d2=1;d2>-2&&!flag;d2--)

for(d3=1;d3>-2&&!flag;d3--)

for(d4=1;d4>-2&&!flag;d4--)

if(x==weight1*d1+weight2*d2+weight3*d3+weight4*d4)

flag=1;

if(flag)

printf("%d %d %d %d\n",weight1,weight2,weight3,weight4);

flag=0;

}

}

【75.10个小孩分糖果】

十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖?

#include

int j=0;

int judge(int c[]){

int

i;

for(i=0;i<10;i++)

if(c[0]!=c[i]) return

1;

return 0;

}

void print(int s[]){

int

k;

printf(" - ",j++);

for(k=0;k<10;k++) printf("M",s[k]);

printf("\n");

}

void main(){

static int

sweet[10]={10,2,8,22,16,4,10,6,14,20};

int

i,t[10],l;

printf(" child\n");

printf("

round 1 2 3 4 5 6 7 8 9 10\n");

printf(".............................\n");

print(sweet);

while(judge(sweet)){

for(i=0;i<10;i++)

if(sweet[i]%2==0)

t[i]=sweet[i]=sweet[i]/2;

else

t[i]=sweet[i]=(sweet[i]+1)/2;

for(l=0;l<9;l++)

sweet[l+1]=sweet[l+1]+t[l];

sweet[0]+=t[9];

print(sweet);

}

}

【76.小明买书】

小明假期同爸爸一起去书店,他选中了六本书,每本书的单价分别为:3.1,1.7,2,5.3,0.9和7.2。不巧的是,小明的爸爸只带了十几块钱,为了让小明过一个愉快的假期,爸爸扔然同意买书,但提邮购一个要求,要小明从六本书中选出若干本,使得单价相加所得的和同10最接近。你能够帮助小明解决这个问题吗?

#include

#include

void main(){

int

d[6],m,i,j;

long

b[63],flag;

float

c[6],min,x;

printf("Please enter

the prices of 6 books:");

for(i=0;i<6;i++) scanf("%f",&c);

for(i=0,min=-1,d[0]=0;d[0]<2;d[0]++)

for(d[1]=0;d[1]<2;d[1]++)

for(d[2]=0;d[2]<2;d[2]++)

for(d[3]=0;d[3]<2;d[3]++)

for(d[4]=0;d[4]<2;d[4]++)

for(d[5]=0;d[5]<2;d[5]++){

for(flag=0,x=0,j=5;j>=0;j--){

x+=c[j]*d[j]; flag=flag*10+d[j];

}

x=((x-10>0)?

x-10:10-x);

if(min<0){

min=x;

b[i++]=flag;

}

else if(min-x>1.e-6){

min=x; b[0]=flag; i=1;

}

else if(fabs((double)x-min)<1.e-6)

b[i++]=flag;

}

for(m=0;m

printf("10(+ -)%.2f=",min);

for(flag=b[m],j=0;flag>0;j++,flag/=10)

if(flag)

if(flag>1) printf("%.2f+",c[j]);

else printf("%.2f\n",c[j]);

}

}

【77.波松瓦酒的分酒趣题】

法国著名数学家波瓦松在表年时代研究过一个有趣的数学问题:某人有12品脱的啤酒一瓶,想从中倒出6品脱,但他没有6品脱的容器,仅有一个8品脱和5品脱的容器,怎样倒才能将啤酒分为两个6品脱呢?

将12品脱酒

8品脱和5品脱的空瓶平分,可以抽象为解不定方程:

8x-5y=6

其意义是:从12品脱的瓶中向8品脱的瓶中倒x次,并且将5品脱瓶中的酒向12品脱的瓶中倒y次,最后在12品脱的瓶中剩余6品脱的酒。

用a,b,c代表12品脱、8品脱和5品脱的瓶子,求出不定方程的整数解,按照不定方程的意义则倒法为:

a -> b -> c ->a

x y

倒酒的规则如下:

1)

按a -> b -> c

->a的顺序;

2)

b倒空后才能从a中取

3)

c装满后才能向a中倒

#include

int

i;

void getti(int a,int y,int z) {

int

b=0,c=0;

printf(" a%d b%d c%d\n

MMM\n",a,y,z,a,b,c);

while(a!=i||b!=i&&c!=i){

if(!b){

a-=y;

b=y;

}

else if(c==z){

a+=z;

c=0;

}

else if(b>z-c){

b-=(z-c);

c=z;

}

else{

c+=b;

b=0;

}

printf(" M M M\n",a,b,c);

}

}

void main(){

int a,y,z;

printf("input Full

a,Empty b,c,Get i:");

scanf("%d%d%d%d",&a,&y,&z,&i);

getti(a,y,z);

getti(a,z,y);

}

【78.求π的近似值】

请利用“正多边形逼近”的方法求出π的近似值

#include

#include

void main(){

double

e=0.1,b=0.5,c,d;

long int

i;

for(i=6;;i*=2){

d=1.0-sqrt(1.0-b*b);

b=0.5*sqrt(b*b+d*d);

if(2*i*b-i*e<1e-15)

break;

e=b;

}

printf("pai=%.15lf\n",2*i*b);

printf("The number of

edges of required polygon:%ld\n",i);

}

【79.求π的近似值(2)】

利用随机数法求π的近似值

#include

#include

#include

#define N 30000

void main(){

float x,y;

int

c=0,d=0;

randomize();

while(c++<=N) {

x=random(101);

y=random(101);

if(x*x+y*y<=10000)

d++;

}

printf(" pi=%f\n",4.

*d/N);

}

【80.奇数平方的一个有趣性质】

编程验证“大于1000的奇数其平方与1的差是8的倍数”。

#include

void main(){

long int a;

for(a=1001;a<=3000;a+=2){

printf("%ld:",a);

printf("(%ld*%ld-1)/8",a,a);

printf("=%ld",(a*a-1)/8);

printf("+%ld\n",(a*a-1)%8);

}

}

c语言益智程序,100个经典C语言程序(益智类)(71---80)相关推荐

  1. 100个经典C语言程序(益智类)

    100个经典C语言程序(益智类) [1.绘制余弦曲线] 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 [问题分析与算法设计] 利用cos(x)的左右对称性,将屏幕的行 ...

  2. c语言经典笔试100题,100条经典C语言笔试题目(全).doc

    100条经典C语言笔试题目(全) 100条经典C语言笔试题目 请填写bool,float,指针变量与"零值"比较的if语句. 提示:这里"零值"可以是0,0.0 ...

  3. c语言经典例题及其答案详解,100个经典c语言例题(带答案)

    100个经典c语言例题(带答案) 100 个经典 c 语言例题(带答案)经典C源程序 100 例- -1 经典C源程序 100 例 [程序 1]题目:有 1.2.3.4 个数字,能组成多少个互不相同且 ...

  4. 100 条经典C语言笔试题目

    100 条经典C语言笔试题目 题目来源: 1.中兴.华为.慧通.英华达.微软亚洲技术中心等中 外企业面试题目: 2.C 语言面试宝典(林锐<高质量编程第三版>). 说明: 1.部分C 语言 ...

  5. 100 条经典C语言笔试题目(转)

    本文转自:https://blog.csdn.net/yanghonker/article/details/40118615 100 条经典C语言笔试题目 题目来源: 1.中兴.华为.慧通.英华达.微 ...

  6. 100个c语言经典timu,100个经典C语言题目

    100个经典C语言程序 1. 绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组,这个问题十分简单.但若规定不能使 ...

  7. c语言经典程序表白6,经典C语言程序设计100例(6)

    [程序61] 题目:打印出杨辉三角形(要求打印出10行如下图) 1.程序分析: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 2.程序源代码: main() ...

  8. c语言程序设计棋盘不对齐,经典c语言程序设计例(55页)-原创力文档

    经典C语言程序设计100例1-10 [程序 1] 题目:有 1 .2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数? 都是多少? 1 .程序分析:可填在百位.十位.个位的数字都是1 .2. ...

  9. c语言必考100题解析,C语言必考100题

    本文档中包含C语言中绝大部分内容,对于初学C语言的人来说,不得不说是一份特好的资料. 1. 按下述格式,从键盘输入一个整数加法表达式:操作数1+操作数2,然后计算 并输出表达式的计算结果,形式如下:操 ...

最新文章

  1. 关于curl使用记录
  2. ScrollView的使用
  3. 使用redis时遇到的问题
  4. 快速恢复Word、Excel的默认初始设置
  5. long java 比较_Java到底是不是一种纯面向对象语言?
  6. 近期吉他练习曲目《爱的罗曼史》,安排每天晚上睡觉前练习1小时!
  7. vue与php接口对接,怎样使用vue项目中api接口
  8. 软件工程详细设计说明书_软件工程导论知识点梳理之简答题
  9. 南漂DBA——除了996,还可以收获这些...
  10. C++构造函数的各种用法全面解析(C++初学面向对象编程)
  11. python机器学习库sklearn——K最近邻、K最近邻分类、K最近邻回归
  12. 电工产品的电磁兼容要求
  13. 【渝粤教育】国家开放大学2018年春季 0551-21T素描(二) 参考试题
  14. 手动保存刷新微星主板BIOS图解教程
  15. 趣头条的区块链实验:为何金币贬值了6.6倍?
  16. 计算机删除其它用户,如何通过注册表删除多余的账号如何删除电脑其它用户
  17. 域名可以修改绑定的服务器么,域名备案绑定的服务器可以改么
  18. 做好大型项目的五个关键
  19. 牛客网刷题day21
  20. win10亮度_Win10系统运行游戏或大型软件的优化设置教程

热门文章

  1. 微信小程序routeDone错误问题
  2. Manacher算法的基础应用:小A的回文串
  3. java二级考什么_计算机二级主要考什么内容?
  4. 华为手机提示 系统发现xxx删除照片提示 如何不提示,且不保存在最近删除列表
  5. 微信qq邮箱提醒 服务器繁忙,微信设置密码失败,QQ无法绑定,邮箱服务器繁忙...
  6. android手机号码恢复,安卓手机通讯录没有了怎么办?如何恢复手机通讯录
  7. 不跳舞的人羡慕吧?scratch(图形化编程工具)使用点阵绘制跳舞的人!
  8. 内网渗透笔记——二层发现
  9. python裁剪图片边缘模糊_Python OpenCV 图片高斯模糊
  10. Microbit与Arduino的区别