问下C语言for循环语句的一个简单的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 16:07:23
用户输入两个整数,求两个整数之间的所有数的和(输入的数可能存在前面的大于后面的数)
main()
{
int a,b,sum=0,i,t;
scanf("%d%d",&a,&b);
if(a>b) //这里不懂,A>B的话,他说把t值给a,又把什么a给b,还把什么b给t,.....就是这里不懂,。。
{
t=a;
a=b;
b=t;
}
for(i=a;i<=b;i+1)
{
sum = sum + i;
}
printf("%d",sum);
getch();
}

麻烦说清楚点,谢谢

你没看懂的那一部分是为了交换你所输出的两个数,比如你输出了5,3,根据
scanf("%d%d",&a,&b);
那么就把5赋给了a,3赋给了b,这显然不能满足下面计算求和条件,因为求和的条件是a=3,b=5,因为a必须小于b。所以就需要把a,b这两个数调换,即a=3,b=5
t=a;
a=b;
b=t;
翻译过来就是
t=5;因为a=5
a=3;因为b=3
b=5;因为t=5
显然交换后就得到了a=3,b=5,这就达到了目的。这是用来交换两个变量的值极为常见的算法。即引入另外一个变量(本例中就是t),然后就采用这段程序来进行交换。

t=a;
a=b;
b=t;
这个是交换2个数的算法,使用了一个辅助变量t

a=a+b;
b=a-b;
a=a-b;
这个是不使用辅助变量的算法

没事,就是把 a b的值交换,小的在前面,大的在后面,以便你下面得for循环执行!

假设a是5,b是2

就变成a是2,b是5

该说的楼上都说了。顺便说一句,t=a;是把a的值付给t,你理解反了

if(a>b)

如果前面的数比后面的数大,则交换位置,前小后大

那句的目的就是如果a>b就交换a和b的值,这样就能保证a始终是小于等于b的,后面只要再循环一次就能出结果了.