实验代码:#include<stdio.h>
int main() { int i,n,j,x=0; char a[100]; int b[100]={0}; int c[100]={0}; for(i=1;;i++) { scanf("%c",&n); a[i]=n; if(n=='$') break; } //for(j=1;j<=10;j++) //{ // printf("%d",b[j]); 测试 //} for(j=1;j<=i;j++) { if(a[j]=='X') { if(b[j]==0||c[j]==1) /*b[j]=0意味着没有进入伤心或者不高兴*/ { b[j+1]=1; printf("U"); } else printf("-"); } else if(a[j]=='T') { x=x-3; if(b[j]==0||c[j]==1) { b[j+1]=1; b[j+2]=1; printf("D"); x=x+10; } else { printf("-"); x=x+3; } } else if(a[j]=='C') { x=x-3; if(b[j]==0||c[j]==1) /*c[j]=1意味着进入兴奋状态*/ { c[j+1]=1; c[j+2]=1; printf("!"); } else { printf("-"); x=x+3; } } } printf(" %d",x); return 0; }
设计思路
首先把所有天数做出的操作全部存入一个数组a【】中。
然后,把数组a【】中的元素一个个拿出来,根据拿出来的元素的不同来执行不同的结果。
如果然后分别在讨论该天老鼠的情况,是否有不开心或者伤心(即使用数组b【】的元素来判断),以及是否进入兴奋状态(根据数组c【】的元素判断)。
根据对于的情况产生对应的结果(同时造成对应的影响),并且把结果打印出来。
关于钱,我是只要使用的奶酪就扣除3元,如果被吃没有捕获,就相当于消耗一个奶酪,如果被吃捕获了,就获得10元,如果没有被吃,就回收奶酪(x+3)
问题及解决问题的方法
我定义数组的范围只有70,因为我最初看到题目觉得不会超过70天。但是出现了一个我从来没有见过的情况,pta显示段错误。
然后我顺便了解了一下什么叫做堆栈溢出,什么叫做数组越界。
运行结果