C++简单死的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 15:07:13
1列 2列 3列
1行 j c m
2行 5 18 12
3行 33 17 28
4行 76 16 43
j,m,c关系是m=m-2+c;
j=m+j
上星期学的这个,突然有个不懂
比如28=12-2+18
28是第3行的m,12和18就是第2行
76=43+33为啥76是4行的,33是3行的,
而43就是4行的不是3行的?
前后运算的关系搞不懂了
??????大哥哥们995
main()
{
int j=5,c=18,m=12;
while(c>=3)
{
m=m-2+c;
j=m+j;
cout<<j<<"\n";
c=c-1;
}
getch();
}

汗。。。。终于看懂了。。。。
首先,你打印出来的数列是错误的。
你应该在c改变之前,也就是在打印j的时候就打c跟m都打印出来。
/////////////////////////////////////////////////////////
#include <iostream>
using namespace std;

void main()
{
int j=5,c=18,m=12;
while(c>=3)
{
m = m-2+c;
j = m + j;
cout << j << " " << c << " " << m << "\n";
c = c-1;
}
getchar();
}
//////////////////////////////////////////////////////
这样得到的才是在一次循环中的j,c,m的值。
得到的结果应该是:
j c m
1行 5 18 12
2行 33 18 28
3行 76 17 43
(这里我额外地把它们的初值也加了进来。以方便比较)
因为m += c-2;而它的上一行就是它m本身的值,所以当然这一行的m就要等于上一行的m加上这一行的c再减2,也就是28=12+18-2;
对吗?
还有j += m,所以j应该是等于上一行的j加上同一行的m(为什么是同一行的m而不是上一行的m呢,因为算j的时候m已经改变了呀)。
所以33 = 28 +5; 76 = 43 + 33;
明白了吗?
说实话这种问题自己想想就明白了。
呵呵我怎么觉得这代码不是你自己学的呀?
好好学吧!加油!

晕!!!!

麻烦把代码发上来,这样理解不到你