在我的代码中:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
void flushstdin()
{
int c;
while((c = getchar()) != '\n' && c != EOF);
int main () {
float a, b, c;
float s=0, ar1=0, ar2=0;
printf("Inform the value of size A.");
while(scanf("%f",&a) != 1 || a <= 0){
printf("Invalid value!");
“while(scanf(”%f“,&amp; a)!= 1 || a&lt; = 0){”是什么意思?
答案 0 :(得分:2)
嗯,scanf返回给定模式中匹配的参数数量(%f部分)读取,或者如果遇到EOF则返回-1(意味着输入结束)。那么&lt; = 0应该有点自我解释。这两个组合的代码将导致输入循环,直到用户输入大于0的值或者根本没有输入任何值。
有关scanf的更多信息,请查看文档:{{3}}
答案 1 :(得分:1)
这会尝试从stdin读取一个float并检查是否成功读取了float(scanf返回成功读取的参数数)。如果a成功读取,则检查a是否大于零。它一直持续到两个条件都是假的。第二个条件仅在第一个条件为假时进行评估,即a已被读取。
答案 2 :(得分:0)
scanf()
返回成功读取的元素数,在这种情况下,您希望读取的元素数为1
。如果转换失败,则该值不会为1,因此您打印invalid value
,扫描值a
不能小于或等于0
答案 3 :(得分:0)
scanf(“%f”,&amp; a)用于程序中的输入值,这里你的条件是循环继续,直到你输入1或nagitive值
答案 4 :(得分:0)
虽然scanf返回一个浮点数(%f),例如4.535并将其存储到变量a(&amp; a)中,该变量不等于1或(||)a等于或小于零(a&lt; = 0)