我试图找出为什么这两个C ++源具有不同的输出,当它们应该输出相同的东西时。第一个源代码是:
print(df)
Dep Exp Fl-No Shared Codes
0 20:58 20:55 LX 736 [No shared codes]
1 21:23 20:55 LX 818 [Dummy, LH 5809]
2 21:27 21:00 JU 375 [No shared codes]
4 21:28 21:00 LX 770 [Dummy, SN 5102]
7 21:31 21:10 LX 1842 [Dummy, LH 5880, TP 8184, A3 1985]
x = df.iloc[:, :-1].values.repeat(df['Shared Codes'].apply(len), 0)
y = df['Shared Codes'].apply(pd.Series).stack().values.reshape(-1, 1)
out = pd.DataFrame(np.hstack((x, y)), columns=df.columns)
print(out)
Dep Exp Fl-No Shared Codes
0 20:58 20:55 LX 736 No shared codes
1 21:23 20:55 LX 818 Dummy
2 21:23 20:55 LX 818 LH 5809
3 21:27 21:00 JU 375 No shared codes
4 21:28 21:00 LX 770 Dummy
5 21:28 21:00 LX 770 SN 5102
6 21:31 21:10 LX 1842 Dummy
7 21:31 21:10 LX 1842 LH 5880
8 21:31 21:10 LX 1842 TP 8184
9 21:31 21:10 LX 1842 A3 1985
下一个源代码是:
#include <iostream>
using namespace std;
int main()
{
int sum = 0, k = 0;
while (sum <= 25000)
{
k = k + 1;
sum = sum + k;
}
cout << "The last number added is " << k << " for the end result of " << sum << endl;
system("pause");
return 0;
}
有人可以解释为什么一个输出变量k为224而另一个225?我是新手,也许并不完全理解C ++的内外版本。
提前致谢。
答案 0 :(得分:1)
在第一个循环中
while (sum <= 25000)
{
k = k + 1;
sum = sum + k;
}
在语句
之前完成对变量k
的下一个值的评估
sum = sum + k;
因此,如果k
sum > 25000
在这个循环中
for (k = 1; sum <= 25000; k = k + 1)
sum = sum + k;
在语句
之后完成对变量k
的下一个值的评估
sum = sum + k;
因此变量k
在上次sum > 25000
时会增加。
您可以通过以下方式重写第二个循环以获得相同的结果。
int sum = 0, k;
for (k = 0; sum <= 25000; )
{
k = k + 1;
sum = sum + k;
}
答案 1 :(得分:0)
输出不同,因为在for和while循环中递增k的行为是不同的。
输出1: k:223总和:24976 k:224总和:25200
最后一个数字是224,最终结果为25200
首先完成循环测试,然后k递增。 输出2: k:223总和:24976 k:224总和:25200
最后一个数字是225,最终结果为25200
在for循环中,k递增,然后对25000
测试求和答案 2 :(得分:0)
只需将第一个程序更改为:
int main()
{
int sum = 0, k = 1; // Set K = 1
while (sum <= 25000)
{
sum = sum + k; // First Add k to Sum
k = k + 1; // Then Increment k
}
cout << "The last number added is " << k << " for the end result of " <<sum << endl;
system("pause");
return 0;
}