COJ 1112: 机器人的指令

关键在于分段输入
或者说如何输入
一开始写的是
 else if(strcmp(b,"SAME")==0)
                        {
                                scanf("%s %d",“AS”,&j);
                                a[i]=a[j];
                                pos=pos+a[i];
                        }
不得过
后来改成
 else if(strcmp(b,"SAME")==0)
                        {
                                scanf("%s %d",AS,&j);
                                a[i]=a[j];
                                pos=pos+a[i];
                        }
就好了 其中AS是一个字符数组
究其原因 你无法去控制oj输入的是啥
特别注意
还有就是strcmp()这个函数怎么用
当s1<s2时,返回为负数
当s1=s2时,返回值= 0
当s1>s2时,返回正数
即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
"A"<"B" "a">"A" "computer">"compare"
特别注意:strcmp(const char *s1,const char * s2)这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。
ANSI标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的
源代码
#include<stdio.h>
#include<string.h>
#define maxn 101




int a[maxn];
char b[maxn];
char AS[maxn];




int main()
{
        int t,i,j,n,pos;
        scanf("%d",&t);
        while(t--)
        {
                pos=0;
                scanf("%d",&n);
                i=1;
                while(n--)
                {
                        scanf("%s",b);
                        if(strcmp(b,"LEFT")==0)
                        {
                                a[i]=-1;
                                pos--;
                        }
                        else if(strcmp(b,"RIGHT")==0)
                        {
                                a[i]=1;
                                pos++;
                        }
                        else if(strcmp(b,"SAME")==0)
                        {
                                scanf("%s %d",AS,&j);
                                a[i]=a[j];
                                pos=pos+a[i];
                        }
                        i++;
                }
                printf("%d\n",pos);
                memset(a,0,sizeof(a));
                memset(b,'\0',sizeof(b));
        }
        return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值