渡边麻友白石麻衣:c语言问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 13:33:08
#include<stdio.h>
void sum(int m);
void main()
{
int m;
printf("please input number:\n");
scanf("%d",&m);
sum(m);
printf("m=%d\n",m);
}
void sum(int m)
{
int i;
for(i=m-1;i>=1;i--)
m=m+i;
printf("m=%d\n",m);
}
输出为m=20100
m=200
m为什么会的20100,for(i=m-1;i>=1;i--)是什么意思?
输入200
还有个问题,就是m=m+i在程序中起到是么作用,在输出中有影响吗

for(i=m-1;i>=1;i--)是for循环,意思是先把m-1的值赋给i,然后判断i是否>=1,(如果是,就继续循环,如果不是,循环结束),然后i再自减1。所以输入m=200,实际计算应该是结果m=200+199+198+197+...+1=20100.你可以用数列的计算方法算一下m=200+199+198+197+...+1=200(200+1)/2=20100

m+(m-1)+(m-2)+...+1

输入多少输出就多少,你的函数并没有改变m ,在sum函数里,你知道你要实现的目的吗?