趣味编程题目
① C/C++编程趣味题
#include<iostream.h>
void main()
{
int d[8]={0},b[9]={1,2,3,4,5,6,7,8,9};
long A[9],B[8];
int i,j,k,lenb,lend;
for(d[0]=0; d[0]<3; d[0]++)//1 2间的运算符
for(d[1]=0; d[1]<3; d[1]++)//2 3间的运算符
for(d[2]=0; d[2]<3; d[2]++)//3 4间的运算符
for(d[3]=0; d[3]<3; d[3]++)//4 5间的运算符
for(d[4]=0; d[4]<3; d[4]++)//5 6间的运算符
for(d[5]=0; d[5]<3; d[5]++)//6 7间的运算符
for(d[6]=0; d[6]<3; d[6]++)//7 8间的运算符
for(d[7]=0; d[7]<3; d[7]++)//8 9间的运算符
{
j=0,k=0, A[0]=b[0];
for(i=0;i<8;i++){
if(d[i]!=0){
j++;
A[j]=b[i+1];
}
if(d[i]==0)
A[j]=10*A[j]+b[i+1];//A存放数据
else if(d[i]==1)
B[k++]=1; //B存放运算符
else
B[k++]=2;
}
lenb=j;
lend=k;
char c[8];long sum=A[0];
for(i=0;i<lend;i++){
if(B[i]==1){
sum=sum+A[i+1];
c[i]='+';
}
else if(B[i]==2){
sum=sum-A[i+1];
c[i]='-';
}
}
if(sum==100){
for(j=0;j<lend;j++)
cout<<A[j]<<c[j];
cout<<A[j]<<'='<<sum<<endl;
}
}
}
正如楼主所说,生成运算符的数组是非常麻烦的,希望有人能够解决.
由运算符生成数据的算法我自认为还可以,有什么问题希望能够讨论!
不好意思,未加注释,读起来可能会痛苦
绝对支持此类问题
注:借鉴一楼
我们的算法大都一样,用1代表+,用2代表-,没有运算符就用0来替代
所以就可以把所有可能的运算符数组用 (如果有n种运算可视为n+1进制的数) 3进制的整数替代,工有3^8种组合;
即可以把for 循环中的d[8]改为
d[8]={0}; //初始化全为0
for(int i=0;i<3^8;i++){ //3的8次方用函数可求
int n=8;
do
d[--n]=i%3;
while(i=i/3);
}
虽然在算法的复杂度上没什么提高,但书写起来就要方便很多
② 【C++】请你提供一些巧妙、有趣的上机练习题(3~4题即可)
http://hi..com/korpus/blog/item/165756fdebdece1308244d2e.html
C/C++语言经典、实用、趣味程序设计编程百例精解(1)2007年06月04日 星期一 20:18C/C++语言经典、实用、趣味程序设计编程百例精解(1) 1.绘制余弦曲线2.绘制余弦曲线和直线3.绘制圆4.歌星大奖赛5.求最大数6.高次方数的尾数7.阶乘尾数零的个数8.借书方案知多少9.杨辉三角形10.数制转换11.打鱼还是晒网12.抓交通肇事犯13.该存多少钱14.怎样存钱利最大15.捕鱼和分鱼16.出售金鱼17.平分七筐鱼18.有限5位数19.8除不尽的自然数20.一个奇异的三位数21.4位反序数22.求车速23.由两个平方三位数获得三个平方二位数24.阿姆斯特朗数25.完全数26.亲密数27.自守数28.回文数29.求具有abcd=(ab+cd)2性质的四位数30.求素数31.歌德巴赫猜想32.可逆素数33.回文素数34.要发就发35.素数幻方36.百钱百鸡问题37.爱因斯坦的数学题38.换分币39.年龄几何40.三色球问题41.马克思手稿中的数学题42.最大公约数和最小公倍数43.分数比较44.分数之和45.将真分数分解为埃及分数46.列出真分数序列47.计算分数的精确值48.新娘和新郞49.委派任务50.谁在说谎51.谁是窃贼52.黑与白53.迷语博士的难题(1)54.迷语博士的难题(2)55.哪个大夫哪天值班56.区分旅客国籍57.谁家孩子跑最慢58.拉丁方阵59.填表格60.1~9分成1:2:3的三个3位数61.1~9组成三个3位的平方数62.由8个整数形成奇特的立方体63.减式还原64.乘式还原65.乘式还原(2)66.除式还原(1)67.除式还原(2)68.九位累进可除数69.魔术师的猜牌术(1)70.魔术师的猜牌术(2)71.约瑟夫问题72.邮票组合73.和数能表示1~23的5个正整数74.可称1~40磅的4块砝码75.10个小孩分糖果76.小明买书77.波松瓦酒的分酒趣题78.求π的近似值79.求π的近似值(2)80.奇数平方的一个有趣性质81.角谷猜想82.四方定理83.卡布列克常数84.尼科彻斯定理85.回文数的形成86.自动发牌87.黑白子交换88.常胜将军89.抢3090.搬山游戏91.人机猜数游戏92.人机猜数游戏(2)93.汉诺塔94.兎子产子95.将阿拉伯数字转换为罗马数字96.选美比赛97.满足特异条件的数列98.八皇后问题99.超长正整数的加法100.数字移动
③ 有道c语言的趣味题那位大哥帮忙看一下~不胜感激
先给个启发
如果答案发邮件给我[email protected]
我觉得这种题自己思考来得有意思
跳水名将
问题描述:5位跳水高手参加10米高台跳水决赛,有好事者让5人据实力预测比赛结果.
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一.
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错.请编程解出
比赛的实际名次.
#include <iostream.h>
void main()
{
int cc1,cc2,cc3,cc4,cc5; //cc1到cc5代表5位选手的逻辑判断
int A,B,C,D,E; //A,B,C,D,E分别代表5位选手的名次
int g; //问题是否解决的BOOL值
for(A=1; A<=5; A++)
for(B=1; B<=5; B++)
{for(C=1; C<=5; C++)
{for(D=1; D<=5; D++)
{ for(E=1; E<=5; E++)
{ cc1=((B==2)&&(!(A==3)))||((!(B==2))&&(A==3));
cc2=((B==2)&&(!(E==4)))||((!(B==2))&&(E==4));
cc3=((C==1)&&(!(D==2)))||((!(C==1))&&(D==2));
cc4=((C==5)&&(!(D==3)))||((!(C==5))&&(D==3));
cc5=((E==4)&&(!(A==1)))||((!(E==4))&&(A==1));
if(((cc1+cc2+cc3+cc4+cc5)==5)&&(A!=B)&&(A!=C)&&(A!=D)&&(A!=E)&&(B!=C)&&(B!=D)&&(B!=E)&&(C!=D)&&(C!=E)&&(D!=E))
{ g=1;
cout<<"A的名次是:"<<A<<endl;
cout<<"B的名次是:"<<B<<endl;
cout<<"C的名次是:"<<C<<endl;
cout<<"D的名次是:"<<D<<endl;
cout<<"E的名次是:"<<E<<endl;
}}}}};
if(g!=1)
cout<<"Can't found!"<<endl;
}
④ 请问有什么比较好的练习c/c++的题目吗
上北大的或者杭电的oj上做题啊,有很多经典题目
⑤ 关于C语言编程 。急!!!!1
这种可以使用递归函数
该函数的作用是处理加了一个再加一倍的功能。函数的终止条件是由第10天反推到第一天
伪代码:
eatCount(count,day)
{
if(day<>1) //如果还未反推到第一天
{
day=day-1; //反推到前一天
eatCount((count+1)*2,day); //前一天是多一个之后再多一倍
}
else //如果已经是第一天了,返回最后结果
{
return count;
}
}
⑥ 编程题跳格子(递归算法,一定!!),谢谢
递归啊。。。递归函数大概就是:
int dfs(int x, int y) {
if (x > 4 || x < 1 || y > 5 || y < 1) return 0;
if (x == 1 && y == 1) return 1;
return dfs(x - 1, y) + dfs(x, y - 1);
}
主函数里面输出dfs(4, 5)的值就可以了。
⑦ 一个c语言的编程题。 趣味编程之随机点名。
这个可以写
⑧ C\C++ 趣味编程题目
include <iostream>
using namespace std;
void main(){
int pirate[30];
int i,j,survived;
for(i=0;i<30;i++)
pirate[i]=0;
i=0;j=0;
for(survived=30;survived>1;){
if(pirate[i]==0){
j++;
if(j%7==0){
pirate[i]=1;
cout<<"No."<<i+1<<" private jump"<<endl;
survived-=1;
}
}
i=(i+1)%30;
}
for(i=0;i<30;i++)
if(pirate[i]==0)
cout<<"No."<<i+1<<" private survive"<<endl;
}
这个程序得到的答案是23号海盗生存,不知是否符合楼主的要求,呵呵
⑨ 趣味电脑知识选择题(1)
A
第一代计算机的特点是操作指令是为特定任务而编制的,每种机器有各自不同的机器语言,功能受到限制,速度也慢;另一个明显特征是使用真空电子管和磁鼓存储数据。
第二代晶体管计算机(1956-1963)
1948年,晶体管的发明大大促进了计算机的发展,晶体管代替了体积庞大电子管,电子设备的体积不断减小。1956年,晶体管在计算机中使用,晶体管和磁芯存储器导致了第二代计算机的产生。第二代计算机体积小、速度快、功耗低、性能更稳定。首先使用晶体管技术的是早期的超级计算机,主要用于原子科学的大量数据处理,这些机器价格昂贵,生产数量极少。
1960年,出现了一些成功地用于商业领域、大学和政府部门的第二代计算机。第二代计算机用晶体管代替电子管,还有现代计算机的一些部件:打印机、磁带、磁盘、内存、操作系统等。计算机中储存的程序使得计算机有很好的适应性,可以更有效地用于商业用途。在这一时期出现了更高级的COBOL和FORTRAN等语言,以单词、语句和数学公式代替了含混的二进制机器码,使计算机编程更容易。新的职业(程序员、分析员和计算机系统专家)和整个软件产业由此诞生。
第三代集成电路计算机(1964-1971)
虽然晶体管比起电子管是一个明显的进步,但晶体管还是产生 大量的热量,这会损害计算机内部的敏感部分。1958年德州仪器的工程师Jack Kilby发明了集成电路IC,将三种电子元件结合到一片小小的硅片上。科学家使更多的元件集成到单一的半导体芯片上。于是,计算机变的更小,公耗更低,速度更快。这一时期的发展还包括使用了操作系统,使得计算机在中心程序的控制协调下可以同时运行许多不同的程序。