我认为此题描述不清晰 输入样本不全面

P1597 语句解析

「题目描述未赋值的变量值为0 而没有说赋值前a b c默认为0」 你要不要看看你在说什么
by q779 @ 2024-08-09 20:51:58


?为啥是555
by zcy_0v0 @ 2024-08-09 20:52:56


@[zcy_0v0](/user/121404) 若赋值语句为a:=b;b:=c;c:=5; 那么此时a b c都被赋值了 都经历了赋值这个操作 不满足题目所说的未赋值的变量值为0 那么是不是应该先读入c的值为5 然后a和b的值再等于c 即a=5 b=5,输出5 5 5 我是将题中“未赋值的变量值为0”这句话理解为当变量未被赋值时才认为是0,因此在赋值输入赋值语句前不能判断该变量是否有被赋值,也就不能说该变量默认为0 因此我在编写程序的时候是先对 变量=一个数 进行处理 例如 a:=b;b:=c;c:=5; 我是先处理c=5 将其读入创建的map<char, char> pp中,此时pp['c'] = 5 再编写递归函数对a = b 和 b = c作递归处理 当键对应的值为数而非字母时返回并输出 最后输出为 5 5 5
by stan404 @ 2024-08-09 21:11:44


@[q779](/user/346383) 若赋值语句为a:=b;b:=c;c:=5; 那么此时a b c都被赋值了,都经历了赋值这个操作 不满足题目所说的未赋值的变量值为0,那么是不是应该先读入c的值为5,然后a和b的值再等于c 即a=5 b=5,输出5 5 5 。我是将题中“未赋值的变量值为0”这句话理解为当变量未被赋值时才认为是0,因此在赋值输入赋值语句前不能判断该变量是否有被赋值,也就不能说该变量默认为0,因此我在编写程序的时候是先对“变量=一个数”的语句进行处理,例如 a:=b;b:=c;c:=5; 我是先处理c=5,将其读入创建的map<char, char> pp中,此时pp['c'] = 5,再编写递归函数对a = b 和 b = c作递归处理,当键对应的值为数而非字母时返回并输出,最后输出为 5 5 5
by stan404 @ 2024-08-09 21:13:05


@[stan404](/user/1398263) 为啥是先读入c的值为5? 你C++ 代码 ```cpp a=b; b=c; c=5; ``` 运行出来不应该是a=0 b=0 c=5?
by zcy_0v0 @ 2024-08-09 21:20:03


@[zcy_0v0](/user/121404) 我的代码是先创建 ```cpp map<char, char> pp; ``` 然后读入 ```cpp pp['a'] = 'b'; pp['b'] = 'c'; pp['c'] = '5'; ``` 由于此时键a和b对应的值为变量名而不是数 所以我再写了一个递归函数 ```cpp string fact(char ch) { if(pp.count(ch)) ch = pp[ch]; if(isalpha(ch)) ch = fact(ch); return ch; } ``` 假如 fact(a),由于 a = b,那么找b对应的值,又因为b = c,那么再找c对应的值,最后c = 5,因此return '5',此时pp['a'] = '5'
by stan404 @ 2024-08-09 21:28:51


@[zcy_0v0](/user/121404) 我对题目中“未赋值的变量值为0”这句话的理解是,假如读入的赋值语句是 ```cpp a:=3;b:=5 ``` 此时c才算是未赋值,因为赋值语句只对a和b赋值了,输出时c应该为0,但在读入赋值语句前我们并不知道a,b,c有没有被赋值,因此a,b,c默认值不应该为0,因此当读入赋值语句是 ```cpp a:=b;b:=c;c:=5; ``` 时a,b,c三者都经历了赋值,因此不应该为0,只能先处理c=5这个语句,再让a=b=c=5.
by stan404 @ 2024-08-09 21:36:45


他的意思是在当时未赋值 初始值为0吧 没必要钻牛角尖 能正确理解意思就行 这种题多的是
by zcy_0v0 @ 2024-08-09 21:54:52


@[zcy_0v0](/user/121404) 确实,也只能这样将就了
by stan404 @ 2024-08-09 21:59:21


@[stan404](/user/1398263) 正常代码是从前往后读的,你 a:=b 的时候 b 就没被赋值,所以是 0 0 5;按你的那种理解方式应该叫:“最后没有被赋值的变量为0”。建议不要钻牛角尖。
by q779 @ 2024-08-10 01:51:52


| 下一页