迷失的宇航员的宇航员
做了几道模拟题后,感觉思路都比较简单,但是用C语言去实现就有点困难@#@
最开始提交一直WA,最后发现是自己没有重置变量的值~~#
#include<stdio.h>
int main()
{
int m,n,d;
char dire[10];
int face=0,left=4,ver=2,temp;
scanf("%d",&m);
int x,y,z;
x=y=z=0;
while(m--){
scanf("%d",&n);
int i=0;
for(i=0;i<n;i++){
scanf("%s %d",dire,&d);
if(dire[0]=='b') face=(face+3)%6,left=(left+3)%6;
else if(dire[0]=='l'){
temp=face;
face=left;
left=(temp+3)%6;
}
else if(dire[0]=='r'){
temp=left;
left=face;
face=(temp+3)%6;
}
else if(dire[0]=='u'){
temp=face;
face=ver;
ver=(temp+3)%6;
}
else if(dire[0]=='d'){
temp=ver;
ver=face;
face=(temp+3)%6;
}
if(face==1) y+=d;
if(face==4) y-=d;
if(face==0) x+=d;
if(face==3) x-=d;
if(face==2) z+=d;
if(face==5) z-=d;
}
printf("%d %d %d %d\n",x,y,z,face);
x=y=z=0;
face=0,left=4,ver=2;
}
return 0;
}
猜数游戏
题目描述
Stan和Ollie在玩一个猜数游戏。先由Stan想出一个1到10之间的数,Ollie猜这个数可能是几。Ollie每猜一个数,Stan回答这个数比原数高、低,还是正确,对应的回答为“too high”,“ too low”,“right on”。猜数正确后,此轮游戏结束。每次游戏结束,Ollie判断是不是Stan说谎。如果是,则输出“Stan is dishonest”,否则,输出“Stan may be honest”。
输入
有多组数据,输入一个整数n(1<=n<=10)。接下来的一行是(too high,too low,right on)中的一个。如果是right on,则这组输入结束。如果n=0,表示这是最后一组数据。
输出
Stan没有说谎,则输出“Stan may be honest”,否则输出“Stan is dishonest”。
Sample Input
10
too high
3
too low
4
too high
2
right on
5
too low
7
too high
6
right on
0
Sample Output
Stan is dishonest
Stan may be honest
做这道题的时候,最开始因为数组大小设为5,使得再进行字符串输入时,改变了n的值,使其变为0!?,后来数组开大了一点才解决问题,但是不懂其中的原理@#@
有没有哪位大佬能解释以下~~~
#include<stdio.h>
#include<string.h>
int main()
{
int n;
char a[10],b[15];
int max=11,min=0;
while(1){
scanf("%d",&n);
if(n==0) break;
scanf("%s%s",a,b);
if(b[0]=='h'&&n<max) max=n;
if(b[0]=='l'&&n>min) min=n;
if(a[0]=='r'){
if(n<max&&n>min) {
printf("Stan may be honest\n");
max=11,min=0;
}
else {
printf("Stan is dishonest\n");
max=11,min=0;
}
}
}
return 0;
}