uva10033(Interpreter)解释器

来源:互联网 发布:金税盘数据库更新失败 编辑:程序博客网 时间:2024/06/05 01:03

已经觉得符合要求了,一直是WA。。记录一下

一定要更努力才行哦!

#include<stdio.h>#include<string.h>#define M 10#define N 100int res[M]={0};int mem[N];int cmd(){int count = 0;//执行次数int f, x ,y;int start = 0;//执行顺序while(++count){f = mem[start] / 100;x = (mem[start] - f * 100) / 10;y = mem[start] % 10;if(f == 1){//for(int i=0; res[i] < M; i++)//printf("11111res[%d] is: %d\n",i, res[i]);return count;}else if(f == 2){res[x] = y;//printf("22222res[%d] = %d:\n",x, y);}else if(f == 3){res[x] = (res[x] + y) % 1000;//printf("33333res[%d] = (res[%d] + %d)==%d:\n",x,x, y,res[x]);}else if(f == 4){res[x] = (res[x] * y) % 1000;//printf("44444res[%d] = (res[%d] * %d) == %d:\n",x,x, y,res[x]);}else if(f == 5){res[x] = res[y];//printf("55555res[%d] = res[%d] == %d:\n",x, y,res[x]); }else if(f == 6){res[x] = (res[x] + res[y]) % 1000;//printf("66666res[%d] = (res[%d] + res[%d]) ==%d :\n",x,x, y, res[x]); }else if(f == 7){res[x] = (res[x] * res[y]) % 1000;//printf("77777res[%d] = (res[%d] * res[%d]) == x:\n",x,x, y,res[x]);}else if(f == 8){res[x] = mem[res[y]];//printf("88888res[%d] = mem[res[%d]] == %d\n",x, y,res[x]); }else if(f == 9){mem[res[y]] = res[x];//printf("99999mem[%d] = res[%d]\n", res[y],x); }else if(f == 0){ if(res[y]){start = res[x]  - 1;//printf("00000start = res[ %d ] - 1 == %d\n",x, start);}}start++;//执行下一条指令//printf("count : %d\n",count);}//while}int main(){int n ;char buf[10];scanf("%d",&n);getchar();getchar();while(n--){memset(mem, '\0', N);memset(res, 0, M);int num = 0;while(gets(buf) != NULL){if(!strcmp(buf, ""))break;sscanf(buf, "%d", &mem[num++]);}int res = cmd();printf("%d\n",res);if(n)puts("");}return 0;}