/*
用data数组表示a, b, c的值,data[0]表示a,data[1]表示b,data[2]表示c
由status变量表示解析到赋值语句前或赋值语句后
*/
#include <stdio.h>
#include <string.h>
int ptr = 0;
char str[255];
int data[3];
int status = 0;
void parseOp()
{
if (str[ptr] == ':' && str[ptr + 1] == '=') //遇到赋值符号,status=1
{
ptr += 2;
status = 1;
}
else if (str[ptr] == ';') //遇到分号,status=0表示新的语句开始
{
ptr += 1;
status = 0;
}
}
int main()
{
scanf("%s", str);
int size = strlen(str);
int choice = 0;
while (ptr < size) //从头循环
{
parseOp();
if (status == 0)
{
if (str[ptr] == 'a')
{
choice = 0;
}
else if (str[ptr] == 'b')
{
choice = 1;
}
else if (str[ptr] == 'c')
{
choice = 2;
}
}
else
{
if (str[ptr] == 'a')
{
data[choice] = data[0];
}
else if (str[ptr] == 'b')
{
data[choice] = data[1];
}
else if (str[ptr] == 'c')
{
data[choice] = data[2];
}
else if (str[ptr] >= '0' && str[ptr] <= '9')
{
data[choice] = str[ptr] - 0x30;
}
}
ptr++;
}
printf("%d %d %d\n", data[0], data[1], data[2]);
return 0;
}
洛谷p1597记录
最新推荐文章于 2023-04-03 17:17:13 发布