迷失的宇航员的宇航员+猜数游戏

这篇博客探讨了两道编程题目。第一题涉及C语言实现宇航员迷失方向的模拟,通过解决变量重置问题成功通过测试。第二题是猜数游戏,通过输入的提示调整猜测范围,分析Stan是否诚实。博主分享了在编程过程中遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

迷失的宇航员的宇航员

做了几道模拟题后,感觉思路都比较简单,但是用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;
}

题目链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值