c语言while问题
5个回答
展开全部
首先说一下while:
括号里面表示while语句执行的条件,并且在C和C++中有这样的规定:逻辑类型和整数类型可以互换。举个例子:如果括号中表示的是0(注意是整数0),则条件等价于false;反之,如果括号中表示的是非0的整数,则条件等价于true。
其次是后面的a++*2的运算:
根据C语言的运算符先后次序可知,此式应该先算a++,然后将所得结果*2即可得到最后答案。
举个例子吧:
假如你输入的n是4,则程序运行的结果:
第一次while循环:此时n=4,a=0,则a++*2=2;
第二次while循环:此时n=3,a=1,则a++*2=4;
第三次while循环:此时n=2,a=2,则a++*2=6;
第四次while循环:此时n=1,a=3,则a++*2=8;
第五次while循环:此时由于n=0,while括号中的条件为false,故程序不执行while语句中的内容,故最后的结果就是:2,4,6,8
括号里面表示while语句执行的条件,并且在C和C++中有这样的规定:逻辑类型和整数类型可以互换。举个例子:如果括号中表示的是0(注意是整数0),则条件等价于false;反之,如果括号中表示的是非0的整数,则条件等价于true。
其次是后面的a++*2的运算:
根据C语言的运算符先后次序可知,此式应该先算a++,然后将所得结果*2即可得到最后答案。
举个例子吧:
假如你输入的n是4,则程序运行的结果:
第一次while循环:此时n=4,a=0,则a++*2=2;
第二次while循环:此时n=3,a=1,则a++*2=4;
第三次while循环:此时n=2,a=2,则a++*2=6;
第四次while循环:此时n=1,a=3,则a++*2=8;
第五次while循环:此时由于n=0,while括号中的条件为false,故程序不执行while语句中的内容,故最后的结果就是:2,4,6,8
展开全部
while循环是对while括号后面的表达式进行真假的判断,,比如你用的a,C语言中有这样的规定,如果a=0;那么a 表达的就是假,如果a不为0,那么他表示的是真,因此,上面的循环,只要a不等于0,那么循环就一直进行
刚开始学的时候,我一直以为,只有在等于1的时候才是真,等于2他就不能循环了,其实那是错的,编译器判断真假条件的标准是他等不等于0,而不是等不等于1,楼主记住了哦~
还有就是,如果楼主的意愿是让a=0的时候退出循环,那么就可以按照你写的方法进行,如果楼主的意愿是让a=0的时候才循环,那么有2种写法
while(!a)
{
//对a进行非操作
}
还有就是
while(0==a)
{}
建议写成0== a 的形式,其实0==a,和a==0实质是一样的,但是如果你讲0==a,写成了0=a,那么编译器会报错,而将 a==0写成a=0编译器是不会报错的,可以减少风险。
祝你进步!!
刚开始学的时候,我一直以为,只有在等于1的时候才是真,等于2他就不能循环了,其实那是错的,编译器判断真假条件的标准是他等不等于0,而不是等不等于1,楼主记住了哦~
还有就是,如果楼主的意愿是让a=0的时候退出循环,那么就可以按照你写的方法进行,如果楼主的意愿是让a=0的时候才循环,那么有2种写法
while(!a)
{
//对a进行非操作
}
还有就是
while(0==a)
{}
建议写成0== a 的形式,其实0==a,和a==0实质是一样的,但是如果你讲0==a,写成了0=a,那么编译器会报错,而将 a==0写成a=0编译器是不会报错的,可以减少风险。
祝你进步!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
while
(n--)
判断n是否为真,再减一,若果为真,即非0,则循环,为假,即0,则结束程序.
关于a++*2的正确解答(tc测试过了)
例如输入了3:
第1次循环:此时n=3,a=0,a*2=0,输出0,a自增1
第2次循环:此时n=2,a=1,a*2=2,输出2,a自增1
第3次循环:此时n=1,a=2,a*2=4,输出4,a自增1
第4次循环:此时由于n=0,while括号中的条件为真,故程序不执行while语句中的内容
最后的结果就是:0,2,4
(n--)
判断n是否为真,再减一,若果为真,即非0,则循环,为假,即0,则结束程序.
关于a++*2的正确解答(tc测试过了)
例如输入了3:
第1次循环:此时n=3,a=0,a*2=0,输出0,a自增1
第2次循环:此时n=2,a=1,a*2=2,输出2,a自增1
第3次循环:此时n=1,a=2,a*2=4,输出4,a自增1
第4次循环:此时由于n=0,while括号中的条件为真,故程序不执行while语句中的内容
最后的结果就是:0,2,4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
scanf的返回值是成功读取到数的个数,也就是说scanf("%d%d",&a,&b)如果成功读取了这2个值则scan返回2,while(scanf("%d%d",&a,&b)==2)的意思就是当成功读取了a,b两个值后执行循环否则就退出循环,在这段代码中用户必须在输入时在两个数之间输入逗号才能算成功读取,除此之外都会执行到printf("----\n");
这条语句。
这条语句。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如输入n=3
那么执行while
(n--)
printf("%d
",a++*2);
就是while
(3)
printf("%d
",0*2);
结果0
while
(2)
printf("%d
",1*2);
结果2
while
(1)
printf("%d
",2*2);
结果4
接下来循环条件为0(假)所以不执行循环体
所以最后结果是0
2
4
那么执行while
(n--)
printf("%d
",a++*2);
就是while
(3)
printf("%d
",0*2);
结果0
while
(2)
printf("%d
",1*2);
结果2
while
(1)
printf("%d
",2*2);
结果4
接下来循环条件为0(假)所以不执行循环体
所以最后结果是0
2
4
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询