浙大计算机复试上机成绩,浙大计算机研究生复试上机考试-2006年

发指啊... 第一次快写完了结果傲游挂了... ...直接全部重来啊... ...OMG

这套比2005年的稍难, 不过基本都是小模拟啦, 对ACM菜鸟来说都是大水题~~

1. 还是A+B

注意题目第三个case, 8的前面全当成0, 所以108和8的前两位看作相同的

我的方法很WS, 因为题目说不超过8位, 就先把不足8位的数字串补足8位, 高位全填0, 然后从后面开始比较k位就ok了~

cbef093dcc044b2793832001e2365e43.png//浙大计算机研究生复试上机考试-2006年 还是A+Bcbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.pngintk, s1, s2, l1, l2;

cbef093dcc044b2793832001e2365e43.pngchara[10], b[10];

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintcal(char*s)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pnginti, t=0;

df37983f39daa189b8c814e01a6a9011.pngfor(i=0; s[i];++i) t=t*10+s[i]-'0';

df37983f39daa189b8c814e01a6a9011.pngreturnt;

0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintmain()918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pnginti;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(1)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        scanf("%s %s %d", a, b,&k);

df37983f39daa189b8c814e01a6a9011.pngif(!strcmp(a,"0")&&!strcmp(b,"0"))break;

df37983f39daa189b8c814e01a6a9011.png        l1=strlen(a); l2=strlen(b);

df37983f39daa189b8c814e01a6a9011.pngfor(i=7; i>7-l1;--i) a[i]=a[l1+i-8];

df37983f39daa189b8c814e01a6a9011.pngfor(i=0; i<=7-l1;++i) a[i]='0';

df37983f39daa189b8c814e01a6a9011.pngfor(i=7; i>7-l2;--i) b[i]=b[l2+i-8];

df37983f39daa189b8c814e01a6a9011.pngfor(i=0; i<=7-l2;++i) b[i]='0';

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(!strncmp(a+8-k,b+8-k, k))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png            puts("-1");

df37983f39daa189b8c814e01a6a9011.pngcontinue;

4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png        s1=cal(a); s2=cal(b);

df37983f39daa189b8c814e01a6a9011.png        printf("%d\n", s1+s2);

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.pngreturn0;

0ac3a2d53663ec01c7f7225264eeefae.png}

2. 火星A+B

一开始理解错题意了, 不过应该不会有人跟我有一样NC的理解吧... = = ...就不说了

有点像高精度加法, 一位位加就好了, 注意进制, 先打出100以内的质数表(保险起见多打了两个)

开始一处初始化忘了, WA三次才发现... ...

PS: Discuss惊现ECUST-SJTU---ssjia大牛, 各种Orz

2011.09.17 PS: 这题九度上死活过不了啊... 求交流

cbef093dcc044b2793832001e2365e43.png//浙大计算机研究生复试上机考试-2006年 火星A+Bcbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.pngusingnamespacestd;

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintbas[]=918e8df969f9f8c8d002f25cda86cade.png{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103};

cbef093dcc044b2793832001e2365e43.pnginta[30], b[30], c[30], l1, l2;

cbef093dcc044b2793832001e2365e43.pngchars1[300], s2[300];

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintmain()918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pnginti, tn1, tn2, tp;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(1)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        scanf("%s %s", s1, s2);

df37983f39daa189b8c814e01a6a9011.pngif(!strcmp(s1,"0")&&!strcmp(s2,"0"))break;

df37983f39daa189b8c814e01a6a9011.png        l1=strlen(s1);

df37983f39daa189b8c814e01a6a9011.png        l2=strlen(s2);

df37983f39daa189b8c814e01a6a9011.png        memset(a,0,sizeof(a));

df37983f39daa189b8c814e01a6a9011.png        memset(b,0,sizeof(b));

df37983f39daa189b8c814e01a6a9011.png        memset(c,0,sizeof(c));

df37983f39daa189b8c814e01a6a9011.png        tn1=tn2=0; tp=1;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngfor(i=l1-1; i>=0;--i)918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(s1[i]==',')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                tn1++;

df37983f39daa189b8c814e01a6a9011.png                tp=1;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(isdigit(s1[i]))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                a[tn1]=a[tn1]+tp*(s1[i]-'0');

df37983f39daa189b8c814e01a6a9011.png                tp*=10;

4a5daaec04350a363f186a4d2c5ed6ce.png            }4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png        tp=1;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngfor(i=l2-1; i>=0;--i)918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(s2[i]==',')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                tn2++;

df37983f39daa189b8c814e01a6a9011.png                tp=1;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(isdigit(s2[i]))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                b[tn2]=b[tn2]+tp*(s2[i]-'0');

df37983f39daa189b8c814e01a6a9011.png                tp*=10;

4a5daaec04350a363f186a4d2c5ed6ce.png            }4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.pngintcf=0;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngfor(i=0; i<=min(tn1, tn2);++i)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png            c[i]=cf+a[i]+b[i];

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(c[i]>=bas[i])918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                cf=c[i]/bas[i];

df37983f39daa189b8c814e01a6a9011.png                c[i]%=bas[i];

4a5daaec04350a363f186a4d2c5ed6ce.png            }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.png                cf=0;

4a5daaec04350a363f186a4d2c5ed6ce.png        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngfor(;i<=max(tn1, tn2);++i)918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(i<=tn1)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                c[i]=cf+a[i];

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(c[i]>=bas[i])918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                    cf=c[i]/bas[i];

df37983f39daa189b8c814e01a6a9011.png                    c[i]%=bas[i];

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.png                    cf=0;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(i<=tn2)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                c[i]=cf+b[i];

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(c[i]>=bas[i])918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                    cf=c[i]/bas[i];

df37983f39daa189b8c814e01a6a9011.png                    c[i]%=bas[i];

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.png                    cf=0;

4a5daaec04350a363f186a4d2c5ed6ce.png            }4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png        c[i]+=cf;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(c[i]>=bas[i])918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png            cf=c[i]/bas[i];

df37983f39daa189b8c814e01a6a9011.png            c[i]%=bas[i];

4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.png            cf=0;

df37983f39daa189b8c814e01a6a9011.pngif(cf) c[++i]=cf;

df37983f39daa189b8c814e01a6a9011.pngwhile(c[i]==0&&i>0)--i;

df37983f39daa189b8c814e01a6a9011.pngfor(; i>0;--i) printf("%d,", c[i]);

df37983f39daa189b8c814e01a6a9011.png        printf("%d\n", c[0]);

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.pngreturn0;

0ac3a2d53663ec01c7f7225264eeefae.png}

3. 还是畅通工程

模板题, 不解释

cbef093dcc044b2793832001e2365e43.png//浙大计算机研究生复试上机考试-2006年 还是畅通工程cbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#defineN 110cbef093dcc044b2793832001e2365e43.png#defineINF 0x3f3f3f3fcbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.pngintn, adj[N][N], lowcost[N], closest[N];

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngvoidprim(intc[][N])918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngbools[N];

df37983f39daa189b8c814e01a6a9011.png    s[1]=true;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngfor(inti=2; i<=n;++i)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        lowcost[i]=c[1][i];

df37983f39daa189b8c814e01a6a9011.png        closest[i]=1;

df37983f39daa189b8c814e01a6a9011.png        s[i]=false;

4a5daaec04350a363f186a4d2c5ed6ce.png    }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngfor(inti=1; i{

df37983f39daa189b8c814e01a6a9011.pngintmix=INF, j=1;

df37983f39daa189b8c814e01a6a9011.pngfor(intk=2; k<=n;++k)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(lowcost[k]{

df37983f39daa189b8c814e01a6a9011.png                mix=lowcost[k];

df37983f39daa189b8c814e01a6a9011.png                j=k;

4a5daaec04350a363f186a4d2c5ed6ce.png            }df37983f39daa189b8c814e01a6a9011.png            s[j]=true;

df37983f39daa189b8c814e01a6a9011.pngfor(intk=2; k<=n;++k)

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(c[j][k]{

df37983f39daa189b8c814e01a6a9011.png                    lowcost[k]=c[j][k];

df37983f39daa189b8c814e01a6a9011.png                    closest[k]=j;

4a5daaec04350a363f186a4d2c5ed6ce.png                }4a5daaec04350a363f186a4d2c5ed6ce.png    }0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintmain()918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pnginti, j, ans, a, b, c;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(scanf("%d",&n), n)918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngfor(i=1; i<=n*(n-1)/2;++i)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png            scanf("%d %d %d",&a,&b,&c);

df37983f39daa189b8c814e01a6a9011.png            adj[a][b]=adj[b][a]=c;

4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png        prim(adj);

df37983f39daa189b8c814e01a6a9011.png        ans=0;

df37983f39daa189b8c814e01a6a9011.pngfor(i=1; i<=n;++i) ans+=lowcost[i];

df37983f39daa189b8c814e01a6a9011.png        printf("%d\n", ans);

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.pngreturn0;

0ac3a2d53663ec01c7f7225264eeefae.png}

4. 统计同成绩学生人数

大水题, 不解释

cbef093dcc044b2793832001e2365e43.png//浙大计算机研究生复试上机考试-2006年 统计同成绩学生人数cbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#defineN 1010cbef093dcc044b2793832001e2365e43.png

cbef093dcc044b2793832001e2365e43.pnginta[N], n, ans;

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintmain()918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngintx, i;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(scanf("%d",&n), n)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngfor(i=0; i

df37983f39daa189b8c814e01a6a9011.png        scanf("%d",&x);

df37983f39daa189b8c814e01a6a9011.png        ans=0;

df37983f39daa189b8c814e01a6a9011.pngfor(i=0; i

df37983f39daa189b8c814e01a6a9011.pngif(a[i]==x) ans++;

df37983f39daa189b8c814e01a6a9011.png        printf("%d\n", ans);

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.pngreturn0;

0ac3a2d53663ec01c7f7225264eeefae.png}

5. 简单计算器

我的方法比较麻烦... ...设置两个栈(偷懒用了STL, 慢就慢吧...||), 一个符号栈, 一个操作数栈

当读进操作数时, 若符号栈栈顶为*或/, 就马上计算掉, 弹出操作数栈栈顶连续两个元素和符号栈栈顶, 算好之后结果压进操作数栈, 这里注意下运算顺序, '-','/'都是有计算顺序要求的

当读到运算符时, 什么都不管, 直接压进符号栈

最后把操作数栈和符号栈元素全部倒置(稍微想想就知道为什么了, 一开始这里没想清楚, 单步了好一会儿才发现... ...), 然后不断弹出符号栈栈顶符号和操作数栈顶连续两个操作数, 计算完后结果压入操作数栈, 直至符号栈为空.

cbef093dcc044b2793832001e2365e43.png//浙大计算机研究生复试上机考试-2006年 简单计算器cbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.pngusingnamespacestd;

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngdoublecal(doublea,doubleb,charc)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(c=='+')returna+b;

df37983f39daa189b8c814e01a6a9011.pngif(c=='-')returna-b;

df37983f39daa189b8c814e01a6a9011.pngif(c=='*')returna*b;

df37983f39daa189b8c814e01a6a9011.pngif(c=='/')returna/b;

0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintmain()918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pnginti;

df37983f39daa189b8c814e01a6a9011.pngcharop[210];

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(gets(op), strcmp(op,"0")!=0)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        i=0;

df37983f39daa189b8c814e01a6a9011.png        stackopa;

df37983f39daa189b8c814e01a6a9011.png        stackopr;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(op[i])918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(isdigit(op[i]))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoubletp=0.0;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(isdigit(op[i]))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                    tp=tp*10+op[i]-'0';

df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.png                opa.push(tp);

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(!opr.empty()&&opr.top()=='*')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                    opr.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                    opa.push(cal(t2, t1,'*'));

4a5daaec04350a363f186a4d2c5ed6ce.png                }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(!opr.empty()&&opr.top()=='/')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                    opr.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                    opa.push(cal(t2, t1,'/'));

4a5daaec04350a363f186a4d2c5ed6ce.png                }4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='+')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                opr.push('+');

df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='-')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                opr.push('-');

df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='*')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                opr.push('*');

df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='/')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                opr.push('/');

df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png        stackopr1;

df37983f39daa189b8c814e01a6a9011.png        stackopa1;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opr.empty())918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png            opr1.push(opr.top());

df37983f39daa189b8c814e01a6a9011.png            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opa.empty())918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png            opa1.push(opa.top());

df37983f39daa189b8c814e01a6a9011.png            opa.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opr1.empty())918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa1.top(); opa1.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa1.top(); opa1.pop();

df37983f39daa189b8c814e01a6a9011.png            opa1.push(cal(t1, t2, opr1.top()));

df37983f39daa189b8c814e01a6a9011.png            opr1.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png        printf("%.2lf\n", opa1.top());

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.pngreturn0;

0ac3a2d53663ec01c7f7225264eeefae.png}

2011.09.10 PS: 这题又用了另一种方法做

遇到数字的时候不处理, 直接压入操作数栈, 遇到'*'或'/'时, 操作符栈顶连续的'*'或'/'都计算掉, 再将自己压入操作符栈, 遇到'+'或'-'时, 操作符栈里的都能计算掉, 计算完后再将自己压入操作符栈, 最后将操作符栈从栈顶依次处理即可, 因为此时不会出现多个'+''-', '*''/'相连导致运算顺序错误的情况

本来以为这样很方便, 结果代码比原来长了快一倍... (因为写得挫... )

其实像书上那样加入结束字符再处理的话代码应该会短一些... 有空再敲一次

cbef093dcc044b2793832001e2365e43.png//2006年浙江大学计算机及软件工程研究生机试题 简单计算器cbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.png#includecbef093dcc044b2793832001e2365e43.pngusingnamespacestd;

cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngdoublecal(doublea,doubleb,charc)918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(c=='+')returna+b;

df37983f39daa189b8c814e01a6a9011.pngif(c=='-')returna-b;

df37983f39daa189b8c814e01a6a9011.pngif(c=='*')returna*b;

df37983f39daa189b8c814e01a6a9011.pngif(c=='/')returna/b;

0ac3a2d53663ec01c7f7225264eeefae.png}cbef093dcc044b2793832001e2365e43.png

2f88ce130b654eb5dc6788e02dbcfc90.png

dbf989d57862681739b642d8621fe1f0.pngintmain()918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pnginti;

df37983f39daa189b8c814e01a6a9011.pngcharop[220];

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(gets(op), strcmp(op,"0"))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png        i=0;

df37983f39daa189b8c814e01a6a9011.png        stackopa;

df37983f39daa189b8c814e01a6a9011.png        stackopr;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(op[i])918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(isdigit(op[i]))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoubletp=0.0;

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(isdigit(op[i]))918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.png                    tp=tp*10+op[i]-'0';

df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.png                opa.push(tp);

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='+')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(opr.empty()) opr.push('+');

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelse918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opr.empty())918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(opr.top()=='+')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'+'));

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='-')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'-'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='*')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'*'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='/')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'/'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }4a5daaec04350a363f186a4d2c5ed6ce.png                    }df37983f39daa189b8c814e01a6a9011.png                    opr.push('+');

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='-')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(opr.empty()) opr.push('-');

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelse918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opr.empty())918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(opr.top()=='-')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'-'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='+')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'+'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='*')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'*'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='/')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'/'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }4a5daaec04350a363f186a4d2c5ed6ce.png                    }df37983f39daa189b8c814e01a6a9011.png                    opr.push('-');

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='*')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(opr.empty()) opr.push('*');

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelse918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opr.empty())918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(opr.top()=='*')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'*'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='/')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'/'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.pngbreak;

4a5daaec04350a363f186a4d2c5ed6ce.png                    }df37983f39daa189b8c814e01a6a9011.png                    opr.push('*');

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(op[i]=='/')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngif(opr.empty()) opr.push('/');

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelse918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opr.empty())918e8df969f9f8c8d002f25cda86cade.png{

f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngif(opr.top()=='/')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'/'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngelseif(opr.top()=='*')918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png                            opa.push(cal(t2, t1,'*'));

df37983f39daa189b8c814e01a6a9011.png                            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png                        }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.pngbreak;

4a5daaec04350a363f186a4d2c5ed6ce.png                    }df37983f39daa189b8c814e01a6a9011.png                    opr.push('/');

4a5daaec04350a363f186a4d2c5ed6ce.png                }df37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png            }df37983f39daa189b8c814e01a6a9011.pngelsedf37983f39daa189b8c814e01a6a9011.png++i;

4a5daaec04350a363f186a4d2c5ed6ce.png        }f70a0fde2b51b7dd92a70e712e540cf6.png

edb48e6f68462ea23d9a824f01de40c5.pngwhile(!opr.empty())918e8df969f9f8c8d002f25cda86cade.png{

df37983f39daa189b8c814e01a6a9011.pngdoublet1=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.pngdoublet2=opa.top(); opa.pop();

df37983f39daa189b8c814e01a6a9011.png            opa.push(cal(t2, t1, opr.top()));

df37983f39daa189b8c814e01a6a9011.png            opr.pop();

4a5daaec04350a363f186a4d2c5ed6ce.png        }df37983f39daa189b8c814e01a6a9011.png        printf("%.2lf\n", opa.top());

4a5daaec04350a363f186a4d2c5ed6ce.png    }df37983f39daa189b8c814e01a6a9011.pngreturn0;

0ac3a2d53663ec01c7f7225264eeefae.png}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值