「题目描述未赋值的变量值为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