#include <stdio.h>
int main()
{
/* 小伙伴们:
选择你们认为最合理的循环结构完成功能吧 */
int sum = 0; //定义计算结果变量sum
int i = 1; //定义循环数字变量i
int flag = 1; //定义符号状态变量flag
//使用while循环
while(i<=100)
{
i++;
sum+=flag*i;
flag*=-1;
}
i = 1; //重新初始化变量i
//do-while循环
do{
i++;
sum+=flag*i;
flag*=-1;
}while(i<=100);
i = 1; //重新初始化变量i
//使用for循环
for(i=1;i<=100;i++)
{
sum+=flag*i;
flag*=-1;
}
printf("sum=%d\n",sum);
return 0;
}
你输出来的因该是-150;那是因为你把三个循环都一起运行了,while循环之后的时候sum的值是-50;到do-while循环的时候sum又从-50开始循环运算,以止类推,到for循环结束;这时候sum的值为-150;你只要随便把两个循环注释掉就行了
例如:
#include <stdio.h>
int main()
{
/* 小伙伴们:
选择你们认为最合理的循环结构完成功能吧 */
int sum = 0; //定义计算结果变量sum
int i = 1; //定义循环数字变量i
int flag = 1; //定义符号状态变量flag
//使用while循环
while(i<=100)
{
i++;
sum+=(i*flag);
flag*=-1;
}
/* i = 1; //重新初始化变量i
//do-while循环
do{
i++;
sum+=(i*flag);
flag*=-1;
}while(i<=100);
i = 1; //重新初始化变量i
//使用for循环
for(i=1;i<=100;i++)
{
sum+=(i*flag);
flag*=-1;
} */
printf("sum=%d\n",sum);
我知道哪里出问题了,因为每进行一次大循环,sum都会减50,三次循环就变成了-150了,那么我可以重新在第三次循环之前重新定义sum的值为0,或者在printf中使得sum/3,例如:printf("sum=%d\n",sum/3);