一道acm题,在c-free上可以测试成功但是却不能ac!
问题:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1267代码:#include<stdio.h>#include<...
问题:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1267
代码:
#include<stdio.h>
#include<string.h>
int main()
{
int z[27]={0};
int t;
char str2=NULL,
str3[2]={NULL};
char str1[5];
int l;
int T;
scanf("%d",&T);
while(T>0)
{
scanf("%s %c,%s",&str1,&str2,&str3);
l=strlen(str3);
if(strcmp(str1,"mov")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']=t;
}
}
else if(strcmp(str1,"add")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']+=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']+=t;
}
}
else if(strcmp(str1,"sub")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']-=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']-=t;
}
}
else if(strcmp(str1,"print")==0)
{
printf("%d\n",z[str2-'a']);
}
str1[5]=NULL;
str2=NULL;
str3[2]=NULL;
--T;
}//大循环
return 0;
} 展开
代码:
#include<stdio.h>
#include<string.h>
int main()
{
int z[27]={0};
int t;
char str2=NULL,
str3[2]={NULL};
char str1[5];
int l;
int T;
scanf("%d",&T);
while(T>0)
{
scanf("%s %c,%s",&str1,&str2,&str3);
l=strlen(str3);
if(strcmp(str1,"mov")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']=t;
}
}
else if(strcmp(str1,"add")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']+=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']+=t;
}
}
else if(strcmp(str1,"sub")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']-=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']-=t;
}
}
else if(strcmp(str1,"print")==0)
{
printf("%d\n",z[str2-'a']);
}
str1[5]=NULL;
str2=NULL;
str3[2]=NULL;
--T;
}//大循环
return 0;
} 展开
2个回答
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
int z[27]={0};
int t;
char str2=NULL,
str3[3]={NULL};//2 --> 3
char str1[6]; // 5-->6
int l;
int T;
scanf("%d",&T);
while(T>0)
{
scanf("%s %c,%s",&str1,&str2,&str3);
l=strlen(str3);
if(strcmp(str1,"mov")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']=t;
}
}
else if(strcmp(str1,"add")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']+=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']+=t;
}
}
else if(strcmp(str1,"sub")==0)
{
if(('a'-'0') <= (str3[0]-'0')&&(str3[0]-'0') <= ('z'-'0'))
{
z[str2-'a']-=z[str3[0]-'a'];
}
else
{
if(l==2)
t=(str3[0]-'0')*10+str3[1]-'0';
else
t=str3[0]-'0';
z[str2-'a']-=t;
}
}
else if(strcmp(str1,"print")==0)
{
printf("%d\n",z[str2-'a']);
}
str1[5]=NULL;
str2=NULL;
str3[2]=NULL;
--T;
}//大循环
return 0;
}
你知道C里面用数组存储字符串,要预留一个位置放置字符串尾部的\0吗?
也就是存储“print”这个字符串的时候,应该开一个长度为6的数组,数组存储的字符依次是
'p' 'r' 'i' 'n' 't' '\0'
'\0'是字符串的结束标志。
改了数组大小就能过了。
富港检测技术(东莞)有限公司_
2024-05-27 广告
2024-05-27 广告
ISTA3E程序是对相同产品的集合包装的综合模拟性能测试,集合包装件被定义为将一个产品、多个产品或包装件放置在滑板或托盘上,固定在一起或是作为一个单元运输。例如:一台机器由带瓦楞底托的托盘上、瓦楞侧围、顶盖包装,用缠绕膜缠绕在托盘上。用于评...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询