| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1146 人关注过本帖
标题:[求助]求教一道编程题???
只看楼主 加入收藏
zhmember
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-10
收藏
 问题点数:0 回复次数:14 
[求助]求教一道编程题???

各位高手们,我这有道题,帮帮忙啊!!!
1=2(0)
2=2(1)
3=2(1)+2(0)
4=22=2(2(1))
5=22+1=2(2(1))+2(0)
6=22+21=2(2(1))+2(1)
8=23=2(2(1)+2(0))
64=26=2(2(2(1))+2(1))
依次这样,就是将一个数写成以2为底的幂的形式,然后再对幂施以同样的处理:
(1)这个数只能由0,1,2组成;
(2)单独一个1写成2(0)的形式,指数上的1则不用写成这样的形式;
(3)指数以括号的形式放在底数后面;
程序要求:
示例:
输入一个数字:97
输出:97=2(2(2(1))+2(1))+2(2(2(1))+2(0))+2(0)

搜索更多相关主题的帖子: SUP 形式 指数 
2006-08-10 12:14
横眉冷对
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-3
收藏
得分:0 

用递归试试


MSN:jyycom@ 爱好:军事,体育,Rock。
2006-08-10 14:37
ridwsc
Rank: 1
等 级:新手上路
帖 子:168
专家分:0
注 册:2006-8-10
收藏
得分:0 

中国加油,加油,加油~~~~~ 我行~~我可以~~C
2006-08-10 14:48
swabian
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-8-10
收藏
得分:0 

#include <stdio.h>

int k,s,t; /*这几个全局变量为了方便,哈,省的传参数了,k是用户输入的数,s为1的时候表示不是(的起始处,用来根据情况添+号的,t是判断是否要显示2(1)滴。*/

int show(int m) /*显示2(1),2(0)什么的 */
{
if(m!=k&&s)
printf("+");
switch(m)
{
case 1:printf("2(0)");m-=1;break;
case 2:printf("2(1)");m-=2;break;
}
s=1;
return(m);
}
int getanswer(int x)
{
int t1,t2;
if (x>0&&x<3)
{
x=show(x);
return(0);
}
if (x<=0)
return(0);
t2=1;
t1=0;
t=1;
if(x!=k&&s)
printf("+");
while((t2*2)<=x)
{
s=0;
if (t)
printf("2(1)(");
t2*=2;
t1++;
t=0;
}
getanswer(t1);
printf(")");
getanswer(x-t2);
}
main()
{
clrscr();
printf("Please input a number(>0):");
scanf("%d",&k);
printf("%d=",k);
getanswer(k);
getch();
}



[此贴子已经被作者于2006-8-11 8:38:02编辑过]


如太阳般夺目... 燃烧的自由 自由的燃烧
2006-08-11 08:33
swabian
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-8-10
收藏
得分:0 

水平有限,就能用递归了,用循环实现这个没去想...也许要写个几百行哈
而且平时就自己做,没+过注释....这个都要+在哪里?

[此贴子已经被作者于2006-8-11 8:38:43编辑过]


如太阳般夺目... 燃烧的自由 自由的燃烧
2006-08-11 08:34
zhmember
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-10
收藏
得分:0 

拜过!!!

2006-08-11 09:47
zhmember
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-10
收藏
得分:0 
编译时
clrscr()和getch()
好像有点问题??
2006-08-11 09:54
横眉冷对
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2005-3-3
收藏
得分:0 

换成getchar()试试


MSN:jyycom@ 爱好:军事,体育,Rock。
2006-08-11 10:41
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
#include "Stdio.h"
#include "Conio.h"
#include "math.h"
int log2(int num);
void func(int num);
int main(void)
{
int num;
scanf("%d",&num);
func(num);
getch();
return 0;
}
void func(int num)
{
int trans;
num==2?(printf("2(1)")):(num==1?(printf("2(0)")):(printf("2("),func(log2(num)),printf(")"),trans=num-(int)pow(2,log2(num)),trans>0?(printf("+"),func(trans)):(getch())));
}
int log2(int num)
{
return (int)(log(num)/log(2));
}

明天再看看能不能写个不递归的,我睡觉先。

对不礼貌的女生收钱......
2006-08-11 23:42
qqq123
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-8-12
收藏
得分:0 

#include <stdio.h>

main()
{
char a[16];
int num,i=0;

scanf("%d",&num);

do{
a[i++]=num%2;
num=num/2;
}while(num>0)

printf("%d=",num);

if(i>2)
{
printf("2(");
for(--i;i>0;i--)
printf("2(%d)+",a[i]>0?0:1);
printf("\b)");
}
else if(i>1)
printf("2(%d)",a[--i]);

if(a[0])
printf("+2(0)");

}
没调试...有错误的话请高手指正.

[此贴子已经被作者于2006-8-12 1:09:54编辑过]

2006-08-12 00:41
快速回复:[求助]求教一道编程题???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013160 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved