有大神C仔高级会所选秀能给我解释下这段C代码的意思吗

求大神用c语言帮我做一下这道题,
问题描述:
求大神用c语言帮我做一下这道题,定义十进制的数字和字母一个对照关系,'A'对应0,'B'对应1...依次类推.26-'A' 27-'B'28-'C' 29-'D' 30-'E' 31-'F'每个十进制的整数用五位二进制数来表示,比如1用00001表示,2用00010表示,依次类推现有一个字符串的游戏,规则如下:如果看到的是数字0,则随机的翻译为一个大写的字母,如果看到的是数字1,则随机的翻译为0~9之间的一个数字.如:00010可翻译为ABC1D或者JUG9N等.游戏开始的时候,输入一串字符串,该字符串是由数字(0,1)和字符组成的.请按照以上的推则反向将字符串翻译成1和0组成的二进制数字,并以5位二进制位一组,将这5个二进制转换成十进制,输出十进制数字对应的字母.例如:输入:0N1E2H5Q39AK2TGIC9ERT39B2P423L8B20D输出:FLEENOW
问题解答:
int&decode(char&*buf){int&ret&=&(buf[0]&-&'0')&&&&4&|&(buf[1]&-&'0')&&&&3&|&(buf[2]&-&'0')&&&&2&|&(buf[3]&-&'0')&&&&1&|&(buf[4]&-&'0');return&}int&main(int&argc,char&*argv[]){printf(&请输入字符串\n&);char&inputBuf[256]&;&char&outputBuf[256]&=&{0};scanf(&%s&,inputBuf);int&i;for(i=0;i&strlen(inputBuf);i++){if(inputBuf[i]&&=&'A'&&&&inputBuf[i]&&=&'Z'){inputBuf[i]&=&'0';}else&if(inputBuf[i]&&=&'0'&&&&inputBuf[i]&&=&'9'){inputBuf[i]&=&'1';}}printf(&输出:%s\n&,inputBuf);int&off&=&0;int&for(i=0;off&&&strlen(inputBuf);i++,off+=5){num&=&decode(inputBuf+off);outputBuf[i]&=&num&%&26&+&'A';}outputBuf[i]&=&'\0';printf(&输出:%s\n&,outputBuf);return&0;}第一个字符是大写字母才会出现这样的结果
我来回答:
剩余:2000字
楼主,程序如下:t=linspace(0,2*pi,50);%在区间[0:2π ]均匀的取 50个点y1=sin(2*t-0.3); y2=3*cos(t+0.5);%y1=sin(2*t-0.3); y2=3cos(t+0.5);plot(t,y1,'r-.o',t,y2,'b:*')
#include&&stdio.h&#include&&math.h&int&main(){&&&&double&pCost,rate,totalCost,taxD&&&&nbsp
/* [7] [4] [2] [3] [4] [7] [1]Press any key to continue*/#include #include #define M 20typedef struct node { struct node *} *Link,*pNODE; Link In
//#include "stdafx.h"//VC++6.0加上这一行.#include "stdio.h"void main(void){double x=2.5,y=4.7;int a=7;printf("%f\n",x+a%3*(x+y)/4);}
完整答案来了,自己写的,二维数组、对战、对ai都有,编译后,运行时带参数 pvaio表示ai用o(即ai先走),参数pvaie表示ai用x(人先走),参数pvp或不带参数表示人人对战,具体的自己看代码.#include&&stdio.h&#include&&stdlib.h&
在装一次啊.
每个人都拥有自己最珍爱的宝物.它可能是一件物品,也可能是一段美好的回忆,一次成功的经验,一个深刻的教训,一句真诚的话语……在我的心中有着不一样的“珍宝”.放学回家,我去集贸市场买毛豆.集贸市场的人很多,挤得水泄不通,我随着人流挤到了一个卖毛豆的小女孩面前,她长着一双水灵灵的大眼睛,穿着一件连衣裙,直刺我的双眼的是她戴在
#include #include long mod(char a[], long b){ long _try_ = 0; int l = strlen(a); for(i = 0; i
确定这个也要求助吗?还是自己写吧,很简单的,就考你 if 或者 switch 的用法,翻下书就会了. 再问: T^T不是while语句么 再答: 当然要循环了,用while、 do while、 for都是OK的再问: 完全没头绪啊,不知道怎么设置循环的条件。。。 再答: 循环结束条件就是 n 啊,循环 n 次就结束了
你定义的zm函数需要两个参数,但你使用的时候只有一个参数.
你若执我双手,即是赋我力量.你若望我双眼,仿佛赐我生命.如果你离开我,我将生不如此.纵使天崩地裂,你我永世相依.以君之名,意爱情为何物.以我之身,愿俯首为奴仆.生于你我不逢时,无奈人世多伤悲.此言此语皆真意,古来沙场几人回.
#includeint isPrime( long i ) //判断整数i是不是素数,是素数返回1,不是素数返回0{ if( i
不太明白你想干什么,直接显示出你列出的东西就行了?只显示不需要操作吗?不操作成绩根据什么计算?说明白了我帮你写 再问: 好的,谢谢你的热心。 程序目的是输出选择题,用户选择,对的话就加5分,错的话不得分,三道题之后,直接输出总成绩。 再答: OK,还一个问题,怎么判断用户输入的是对还是错?就是根据什么要求或者条件判断再
#include &stdio.h&int main(){&&&&& int a[5][5]={0};&&&&& int sum[5]={0};&&&&&nbs
#includevoid main(){\x05int i,a=0,b=0,c=0,sum=0;int x[20]={-1,2,-3,4,0,23,145,-123,42,123,145,12,0,-24,87,12,0,-95,-25,255};\x05for(i=0;i
你用100块买了一件衣服,卖了200块,增值100块,国家要对你增值的100块征收税,就叫增值税.增了17块的税,那增值税率就是17/100*100%=17%
#include#includevoid main(){int sd(int a,int b);int a=15,b=12,c;c=sd(a,b);printf("%d",c);system("pause");}int sd(int a,int b){int i,m,n;if(a>b)n=b/2;else n=a/2;
这样看吧:do{while(条件表达式P)循环体A;}while(条件表达式2);程序先走入最外层do循环,所以第一次肯定要进入最外层循环哪怕表达式2不成立.其次,while的表达式P判断,循环A,在判断P,再A,就这样循环下去,直到P不成立了,再跳到表达式2的判断.下面那个类似的,你自己想想吧,不懂再问哦. 再问:
连接OF,交DE于M,连接AF,OD,OE,DF,EF,∵DE//BC,∴OF⊥DE,∵OD=OE,OM为公共边,∴DM=EM(HL)∵MF为公共边,∴∠DEF=∠FDE,∴弧DF=弧EF,∴∠BAF=∠FAC,即AF平分∠BAC.
也许感兴趣的知识欢迎加入我们,一同切磋技术 &
用户名: &&&
密 码: &
共有 4509 人关注过本帖
标题:拜托大家帮我看看这有什么问题啊,VC检查没问题,可是输出不对
不知道哪里 ...
等 级:新手上路
帖 子:12
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:15&&&
拜托大家帮我看看这有什么问题啊,VC检查没问题,可是输出不对
不知道哪里有问题,求大神们帮看看修改下,只能用C语言和数据结构
#include&math.h&
#include&string.h&
#include&stdio.h&
#include&conio.h&
#include&stdlib.h&
#define MAX 4;/*最大输入个数*/
int k=0;/*全局变量 判定是否有解*/
char tp[4]={0},tpt[2000]={0},tptt[2000]={0},tre[2000]={0};/*用来消除重复与记录表达式中的运算符*/
char op[4]={'+','-','*','/'};
void count(float a[],char tem[][25],int n);/*a[]中存放输入的4个数,tem[][25]中存放计算的步骤,n是a[]中元素的个数*/
int q=0,p=0,e=0,w=0,t=0,r=0,g=0,h=0,v=0,u=0,tu=0,te=0;/*用于消除重复*/
float group[2]={0},flow[20]={0},flo[20]={0};
void main()
&&& char br=1;
&&& while (br==1)
&&& float number[4];/*放输入的4个数*/
&&& char temp[4][25];/*放表达式,初始化放4个数*/
&&& printf(&请输入4个数\n&);
&&& for(d=0;d&4;d++)
&&&&&&scanf(&%f&,&number[d]);
&&& for(d=0;d&4;d++)
&&&&&&&&sprintf(temp[d],&%d&,(int) number[d]);
&&& }/*初始化temp[d]*/
&&& count(number,temp,4);/*调用count函数*/
&&& if(k==0)
&&&&&&&&printf(&没有结果\n&);
&&& printf(&按0结束\n&);
&&& scanf(&%d&,&br);
void count(float a[],char tem[][25],int n)
&&& float b[4];
&&& char tm[4][25];/*b[4]中存放输入的4个数,tm[][25]中存放计算的步骤*/
&&& int i,j,l,x,y;/*i,j用来做双循环,l用来做加减乘除的开关,x,y为后面准备递归数据*/
&&& /*输出部分*/
&&& if(n==1)
&&&&&&&&if(fabs(a[0]-24&0.001))/*要考虑到除法,用fabs函数求绝对值与24比较,相当于等于24时的情况*/
&&&&&&&&&&&&/*以下限定输出条件*/
&&&&&&&&&&&&if(tp[3]=='*'&&tp[2]=='*'&&tp[1]=='*')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(te==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%s=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&te=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对运算符全为'*'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='+'&&(tp[2]=='+'||tp[0]=='+')&&tp[1]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(t==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%s=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&t=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对运算符全为'+'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='+'&&(tp[2]=='*'||tp[0]=='*')&&tp[1]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(g==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%s=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&g=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&else if((tp[3]=='-'&&tp[2]=='+')||(tp[3]=='+'&&tp[2]=='-'))
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(w==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%s=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&w=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对于第二次运算时取到b[0]时,第一第二个运算符是'+','-'或'-','+'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='+'&&tp[2]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(u==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%s=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&u=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对于第二次运算时取到b[0]时,第一第二个运算符都是'+'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='*'&&tp[0]=='*'&&tp[1]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(tu=0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%s=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&tu=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{for(h=0;h&q;h++)
&&&&&&&&&&&&{
&&&&&&&&&&&&if(group[0]==flow[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(tp[3]==tpt[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(tp[2]==tptt[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(group[1]==flo[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(p==0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& printf(&\n有解为%s=24&,tem[0]);
&&&&&&&&&&&&&&& k=1;
&&&&&&&&&&&&&&& p=1;
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&else if(h==q-1)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& printf(&\n有解为%s=24&,tem[0]);
&&&&&&&&&&&&&&& k=1;
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&flo[q]=group[1];/*限定条件初始化*/
&&&&&&&&&&&&flow[q]=group[0];/*限定条件初始化*/
&&&&&&&&&&&&tpt[q]=tp[3];/*限定条件初始化*/
&&&&&&&&&&&&tptt[q]=tp[2];/*限定条件初始化*/
&&&&&&&&&&&&tre[q]=tp[1];/*限定条件初始化*/
&&&&&&&&&&&&tp[3]=0;
&&&&&&&&&&&&tp[2]=0;
&&&&&&&&&&&&tp[1]=0;
&&&&&&&&&&&&tp[0]=0;
&&&&&&&&&&&&&&&&&&&&q=q+1;
&&&&&&&&& /*运算部分*/
&&& if(n=1)/*该条件语句用来结束一次递归*/
&&&&&&&&for(i=0;i&n;i++)/*对n个数做'+','-','*','/'遍历*/
&&&&&&&&&&&&for(j=0;j&n;j++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(i=j)
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& for(l=0;l&4;l++)/*进行四则运算*/
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&switch(l)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&case(0):if(n==2)
&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&b[0]=a[0]+a[1];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& else b[0]=a[i]+a[j];
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case(1):if(n==2)
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& b[0]=a[0]*a[1];
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else b[0]=a[i]*a[j];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&/*对加和乘做遍历时除去a[i]+a[j]与a[j]+a[i]或a[i]*a[j]与a[j]*a[i]的相同情况*/
&&&&&&&&&&&&&&& case(2):
&&&&&&&&&&&&&&&&&&&&b[0]=a[i]-a[j];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case(3):
&&&&&&&&&&&&&&&&&&&&if(a[j]==0)
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&b[0]=a[i]/a[j];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&/*对减和除做遍历时考虑a[i]-a[j]与a[j]-a[i]或a[i]/a[j]与a[j]/a[i]的不同*/
&&&&&&&&&&&&&&& default:
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&&&&&& if(l!=3||a[j]!=0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if(l==0||l==2||l==3)/*为递归准备数据(把没用到的数也放到b[]与tm[]中)*/
&&&&&&&&&&&&&&&&&&&&sprintf(tm[0],&(%s%c%s)&,tem[i],op[l],tem[j]);/*用sprintf函数将表达式输入到数组tm[]中,同时把括号也输入tm[]中*/
&&&&&&&&&&&&&&&&&&&&if(l==1)
&&&&&&&&&&&&&&&&&&&&&&&&sprintf(tm[0],&%s%c%s&,tem[i],op[l],tem[j]);
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if(n==3)/*提取第一次运算的运算符和运算结果*/
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&group[1]=b[0];
&&&&&&&&&&&&&&&&&&&&&&&&if(i!=0&&j!=0)
&&&&&&&&&&&&&&&&&&&&&&&&&&& tp[0]=op[l];
&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&&&& tp[n-1]=op[l];
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else if(n==4)/*提取第二次运算的运算符和运算结果*/
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&tp[n-1]=op[l];
&&&&&&&&&&&&&&&&&&&&&&&&group[0]=b[0];
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else/*提取第三次运算的运算符和运算结果*/
&&&&&&&&&&&&&&&&&&&&&&&&tp[n-1]=op[l];
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& for(x=0,y=1;x&n;x++)/*备份没用到的数据(为递归用)*/
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if(x!=i&&x!=j)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&b[y]=a[x];
&&&&&&&&&&&&&&&&&&&&strcpy(tm[y],tem[x]);/*复制字符串*/
&&&&&&&&&&&&&&&&&&&&y++;
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& count(b,tm,n-1);
[此贴子已经被作者于 13:57编辑过]
搜索更多相关主题的帖子:
&&&&&&&&&&
等 级:新手上路
帖 子:12
这是速算24点的
等 级:贵宾
威 望:53
帖 子:1389
专家分:5790
&&得分:10&
要不先把告警解决了?
1&&&main.c
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(33): warning C4477: “scanf”: 格式字符串“%d”需要类型“int *”的参数,但可变参数 1 拥有了类型“char *”
1&&&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(33): note: 请考虑在格式字符串中使用“%hhd”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(51): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(60): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(69): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(78): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(87): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(96): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(115): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
1&c:\users\tr002\documents\visual studio 2015\projects\max.c\max.c\main.c(125): warning C4477: “printf”: 格式字符串“%c”需要类型“int”的参数,但可变参数 1 拥有了类型“char *”
等 级:贵宾
威 望:53
帖 子:1389
专家分:5790
if (n = 1)这是什么目的?输入的不是4吗
等 级:新手上路
帖 子:12
回复 3楼 grmmylbs
啊&&有警告啊。。。我哪里貌似没问题哎&&&我再看看
等 级:新手上路
帖 子:12
回复 3楼 grmmylbs
没有哎,我的VC没有警告哎。。。要不我再发你一次
#include&math.h&
#include&string.h&
#include&stdio.h&
#include&conio.h&
#include&stdlib.h&
#define MAX 4;/*最大输入个数*/
int k=0;/*全局变量 判定是否有解*/
char tp[4]={0},tpt[2000]={0},tptt[2000]={0},tre[2000]={0};/*用来消除重复与记录表达式中的运算符*/
char op[4]={'+','-','*','/'};
void count(float a[],char tem[][25],int n);/*a[]中存放输入的4个数,tem[][25]中存放计算的步骤,n是a[]中元素的个数*/
int q=0,p=0,e=0,w=0,t=0,r=0,g=0,h=0,v=0,u=0,tu=0,te=0;/*用于消除重复*/
float group[2]={0},flow[20]={0},flo[20]={0};
int main()
&&& char br=1;
&&& while (br==1)
&&& float number[4];/*放输入的4个数*/
&&& char temp[4][25];/*放表达式,初始化放4个数*/
&&& printf(&请输入4个数\n&);
&&& for(d=0;d&4;d++)
&&&&&&scanf(&%f&,&number[d]);
&&& for(d=0;d&4;d++)
&&&&&&&&sprintf(temp[d],&%d&,(int) number[d]);
&&& }/*初始化temp[d]*/
&&& count(number,temp,4);/*调用count函数*/
&&& if(k==0)
&&&&&&&&printf(&没有结果\n&);
&&& printf(&按0结束\n&);
&&& scanf(&%d&,&br);
void count(float a[],char tem[][25],int n)
&&& float b[4];
&&& char tm[4][25];/*b[4]中存放输入的4个数,tm[][25]中存放计算的步骤*/
&&& int i,j,l,x,y;/*i,j用来做双循环,l用来做加减乘除的开关,x,y为后面准备递归数据*/
&&& /*输出部分*/
&&& if(n==1)
&&&&&&&&if(fabs(a[0]-24&0.001))/*要考虑到除法,用fabs函数求绝对值与24比较,相当于等于24时的情况*/
&&&&&&&&&&&&/*以下限定输出条件*/
&&&&&&&&&&&&if(tp[3]=='*'&&tp[2]=='*'&&tp[1]=='*')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(te==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%c=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&te=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对运算符全为'*'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='+'&&(tp[2]=='+'||tp[0]=='+')&&tp[1]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(t==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%c=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&t=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对运算符全为'+'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='+'&&(tp[2]=='*'||tp[0]=='*')&&tp[1]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(g==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%c=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&g=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&else if((tp[3]=='-'&&tp[2]=='+')||(tp[3]=='+'&&tp[2]=='-'))
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(w==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%c=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&w=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对于第二次运算时取到b[0]时,第一第二个运算符是'+','-'或'-','+'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='+'&&tp[2]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(u==0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%c=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&u=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}/*对于第二次运算时取到b[0]时,第一第二个运算符都是'+'的只输出一遍*/
&&&&&&&&&&&&else if(tp[3]=='*'&&tp[0]=='*'&&tp[1]=='+')
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(tu=0)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&printf(&\n有解为%c=24&,tem[0]);/*最后的表达式存在tem[0]中*/
&&&&&&&&&&&&&&&&&&&&k=1;
&&&&&&&&&&&&&&&&&&&&tu=1;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{for(h=0;h&q;h++)
&&&&&&&&&&&&{
&&&&&&&&&&&&if(group[0]==flow[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(tp[3]==tpt[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(tp[2]==tptt[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(group[1]==flo[h])
&&&&&&&&&&&&{
&&&&&&&&&&&&if(p==0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& printf(&\n有解为%c=24&,tem[0]);
&&&&&&&&&&&&&&& k=1;
&&&&&&&&&&&&&&& p=1;
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&else if(h==q-1)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& printf(&\n有解为%c=24&,tem[0]);
&&&&&&&&&&&&&&& k=1;
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&flo[q]=group[1];/*限定条件初始化*/
&&&&&&&&&&&&flow[q]=group[0];/*限定条件初始化*/
&&&&&&&&&&&&tpt[q]=tp[3];/*限定条件初始化*/
&&&&&&&&&&&&tptt[q]=tp[2];/*限定条件初始化*/
&&&&&&&&&&&&tre[q]=tp[1];/*限定条件初始化*/
&&&&&&&&&&&&tp[3]=0;
&&&&&&&&&&&&tp[2]=0;
&&&&&&&&&&&&tp[1]=0;
&&&&&&&&&&&&tp[0]=0;
&&&&&&&&&&&&&&&&&&&&q=q+1;
&&&&&&&&& /*运算部分*/
&&& if(n=1)/*该条件语句用来结束一次递归*/
&&&&&&&&for(i=0;i&n;i++)/*对n个数做'+','-','*','/'遍历*/
&&&&&&&&&&&&for(j=0;j&n;j++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if(i=j)
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& for(l=0;l&4;l++)/*进行四则运算*/
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&switch(l)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&case(0):if(n==2)
&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&b[0]=a[0]+a[1];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& else b[0]=a[i]+a[j];
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case(1):if(n==2)
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& b[0]=a[0]*a[1];
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else b[0]=a[i]*a[j];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&/*对加和乘做遍历时除去a[i]+a[j]与a[j]+a[i]或a[i]*a[j]与a[j]*a[i]的相同情况*/
&&&&&&&&&&&&&&& case(2):
&&&&&&&&&&&&&&&&&&&&b[0]=a[i]-a[j];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& case(3):
&&&&&&&&&&&&&&&&&&&&if(a[j]==0)
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&b[0]=a[i]/a[j];
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&/*对减和除做遍历时考虑a[i]-a[j]与a[j]-a[i]或a[i]/a[j]与a[j]/a[i]的不同*/
&&&&&&&&&&&&&&& default:
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&&&&&& if(l!=3||a[j]!=0)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if(l==0||l==2||l==3)/*为递归准备数据(把没用到的数也放到b[]与tm[]中)*/
&&&&&&&&&&&&&&&&&&&&sprintf(tm[0],&(%s%c%s)&,tem[i],op[l],tem[j]);/*用sprintf函数将表达式输入到数组tm[]中,同时把括号也输入tm[]中*/
&&&&&&&&&&&&&&&&&&&&if(l==1)
&&&&&&&&&&&&&&&&&&&&&&&&sprintf(tm[0],&%s%c%s&,tem[i],op[l],tem[j]);
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if(n==3)/*提取第一次运算的运算符和运算结果*/
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&group[1]=b[0];
&&&&&&&&&&&&&&&&&&&&&&&&if(i!=0&&j!=0)
&&&&&&&&&&&&&&&&&&&&&&&&&&& tp[0]=op[l];
&&&&&&&&&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&&&&&&&&&&&& tp[n-1]=op[l];
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else if(n==4)/*提取第二次运算的运算符和运算结果*/
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&tp[n-1]=op[l];
&&&&&&&&&&&&&&&&&&&&&&&&group[0]=b[0];
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&else/*提取第三次运算的运算符和运算结果*/
&&&&&&&&&&&&&&&&&&&&&&&&tp[n-1]=op[l];
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& for(x=0,y=1;x&n;x++)/*备份没用到的数据(为递归用)*/
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&if(x!=i&&x!=j)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&b[y]=a[x];
&&&&&&&&&&&&&&&&&&&&strcpy(tm[y],tem[x]);/*复制字符串*/
&&&&&&&&&&&&&&&&&&&&y++;
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&
[此贴子已经被作者于 13:25编辑过]
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
&&得分:10&
我这运行没有问题,就一个警告,main不要用void,改为int,最后加个return 0;
不过有BUG,输入字符就会出问题,还有个不太友好的地方:不能重复计算。你要不要加个循环。
没看出来你说的输出不对是什么意思。不过算法应该有问题,因为我输入了1&&2&&3&&4,四个数字,居然说没有结果。
这明明可以算24的好吧
[此贴子已经被作者于 12:57编辑过]
等 级:新手上路
帖 子:12
回复 7楼 wanglianyi1
就是这个原因,没能达到概要的结果,貌似是没引用到count(b,tm,n-1);这个函数,不懂怎么放了。。。因为本身不是很懂,就是边看边问别人所以不知道该怎么引用这个了
[此贴子已经被作者于 13:19编辑过]
等 级:新手上路
帖 子:12
回复 4楼 grmmylbs
我错了,改成if(n&1),这样可以,但是没有表达式出来。。。
等 级:贵宾
威 望:53
帖 子:1389
专家分:5790
你想要什么样的表达式?预想的输出结果是怎样的
版权所有,并保留所有权利。
Powered by , Processed in 0.030387 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved}

我要回帖

更多关于 91C大神仔magnet 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信