c语言益智程序,100个经典C语言程序(益智类)(71---80)
【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)相关推荐
- 100个经典C语言程序(益智类)
100个经典C语言程序(益智类) [1.绘制余弦曲线] 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 [问题分析与算法设计] 利用cos(x)的左右对称性,将屏幕的行 ...
- c语言经典笔试100题,100条经典C语言笔试题目(全).doc
100条经典C语言笔试题目(全) 100条经典C语言笔试题目 请填写bool,float,指针变量与"零值"比较的if语句. 提示:这里"零值"可以是0,0.0 ...
- c语言经典例题及其答案详解,100个经典c语言例题(带答案)
100个经典c语言例题(带答案) 100 个经典 c 语言例题(带答案)经典C源程序 100 例- -1 经典C源程序 100 例 [程序 1]题目:有 1.2.3.4 个数字,能组成多少个互不相同且 ...
- 100 条经典C语言笔试题目
100 条经典C语言笔试题目 题目来源: 1.中兴.华为.慧通.英华达.微软亚洲技术中心等中 外企业面试题目: 2.C 语言面试宝典(林锐<高质量编程第三版>). 说明: 1.部分C 语言 ...
- 100 条经典C语言笔试题目(转)
本文转自:https://blog.csdn.net/yanghonker/article/details/40118615 100 条经典C语言笔试题目 题目来源: 1.中兴.华为.慧通.英华达.微 ...
- 100个c语言经典timu,100个经典C语言题目
100个经典C语言程序 1. 绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组,这个问题十分简单.但若规定不能使 ...
- 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() ...
- c语言程序设计棋盘不对齐,经典c语言程序设计例(55页)-原创力文档
经典C语言程序设计100例1-10 [程序 1] 题目:有 1 .2.3.4 个数字,能组成多少个互不相同且无重复数字的三位数? 都是多少? 1 .程序分析:可填在百位.十位.个位的数字都是1 .2. ...
- c语言必考100题解析,C语言必考100题
本文档中包含C语言中绝大部分内容,对于初学C语言的人来说,不得不说是一份特好的资料. 1. 按下述格式,从键盘输入一个整数加法表达式:操作数1+操作数2,然后计算 并输出表达式的计算结果,形式如下:操 ...
最新文章
- 关于curl使用记录
- ScrollView的使用
- 使用redis时遇到的问题
- 快速恢复Word、Excel的默认初始设置
- long java 比较_Java到底是不是一种纯面向对象语言?
- 近期吉他练习曲目《爱的罗曼史》,安排每天晚上睡觉前练习1小时!
- vue与php接口对接,怎样使用vue项目中api接口
- 软件工程详细设计说明书_软件工程导论知识点梳理之简答题
- 南漂DBA——除了996,还可以收获这些...
- C++构造函数的各种用法全面解析(C++初学面向对象编程)
- python机器学习库sklearn——K最近邻、K最近邻分类、K最近邻回归
- 电工产品的电磁兼容要求
- 【渝粤教育】国家开放大学2018年春季 0551-21T素描(二) 参考试题
- 手动保存刷新微星主板BIOS图解教程
- 趣头条的区块链实验:为何金币贬值了6.6倍?
- 计算机删除其它用户,如何通过注册表删除多余的账号如何删除电脑其它用户
- 域名可以修改绑定的服务器么,域名备案绑定的服务器可以改么
- 做好大型项目的五个关键
- 牛客网刷题day21
- win10亮度_Win10系统运行游戏或大型软件的优化设置教程
热门文章
- 微信小程序routeDone错误问题
- Manacher算法的基础应用:小A的回文串
- java二级考什么_计算机二级主要考什么内容?
- 华为手机提示 系统发现xxx删除照片提示 如何不提示,且不保存在最近删除列表
- 微信qq邮箱提醒 服务器繁忙,微信设置密码失败,QQ无法绑定,邮箱服务器繁忙...
- android手机号码恢复,安卓手机通讯录没有了怎么办?如何恢复手机通讯录
- 不跳舞的人羡慕吧?scratch(图形化编程工具)使用点阵绘制跳舞的人!
- 内网渗透笔记——二层发现
- python裁剪图片边缘模糊_Python OpenCV 图片高斯模糊
- Microbit与Arduino的区别