关键在于分段输入
或者说如何输入
一开始写的是
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;
}
或者说如何输入
一开始写的是
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;
}