Tag: while循环

为什么这个语句在while循环中打印两次?

我写了这个简单的练习程序: #include #include #include #define CLASSES 3 #define STUDENTS 4 int grades[CLASSES][STUDENTS]; int main(void) { int i = 1; char t,k; while(i == 1) { printf(“\n\n\nMENU:\nEnter the grades(E)\nReport Grades(R)\nQuit(Q)\nYour choice: “); k = toupper(getchar()); printf(“Input entered… %c\n”, k); switch(k) { case ‘E’ : printf(“Entering the grades..\n”); break; case ‘R’ : printf(“Reporting the grades…\n”); break; case […]

在while循环条件下分配值

我在维基百科上找到了这段代码。 #include int main(void) { int c; while (c = getchar(), c != EOF && c != ‘x’) { switch (c) { case ‘\n’: case ‘\r’: printf (“Newline\n”); break; default: printf (“%c”,c); } } return 0; } 我很好奇表达用作while循环的条件: while (c = getchar(), c != EOF && c != ‘x’) 它的作用非常明显,但我以前从未见过这种结构。 这是特定于while循环吗? 如果没有,解析器/编译器如何确定逗号分隔表达式的哪一侧为while循环返回布尔值?

为什么以下程序陷入循环?

我写了一个练习的解决方案,要求编写一个程序,作为一个简单的“打印”计算器,并检测除零并检查未知操作符。 当输入预期的运算符时,程序按预期工作。 例如: “100 S”打印“= 100.000000” “2 /”打印“= 50.000000” “10 *”打印“= 500.000000” 它还检测零除和未知运算符。 但是,当我以错误的顺序输入运算符时,如:“/ 2”或“* 10”,程序陷入循环。 如何修复此错误,以便在错误的顺序输入运算符时,它只打印“未知运算符”? // Write a program that acts as a simple “printing” calculator #include int main (void) { float acc, b; char operator; printf (“Begin Calculations\n”); while ( operator != ‘E’) { scanf (“%f %c”, &b, &operator); switch (operator) { […]

浮点变量不符合条件(C)

我试图让用户输入介于1.00000到0.00001之间的数字,而边缘不包含在浮点变量中。 我可以假设用户在点后面没有输入超过5个数字。 现在,这是我写的: printf(“Enter required Leibniz gap.(Between 0.00001 to 1.00000)\n”); scanf(“%f”, &gap); while ((gap 0.99999)) { printf(“Enter required Leibniz gap.(Between 0.00001 to 1.00000)\n”); scanf(“%f”, &gap); } 现在,当我输入尽可能小的数字时:0.00002陷入了while循环。 当我运行调试器时,我看到0.00002与float变量中的值一起存储:1.99999995e-005任何人都可以为我澄清我做错了什么? 为什么0.00002不满足条件? 什么是“1.99999995e-005”的事情。

C中的平均,最大和最小程序

所以我用C编码,我需要提出一些代码,它将从用户那里获取n个数字,并找到它们的最小值,最大值,平均值和平方和。 到目前为止,我有平均和平方和部分,但最小值和最大值是咬我的。 请记住,我处于一个非常基本的水平,我还没有到达arrays。 我所知道的只是逻辑运算符,函数,循环以及stdlib.h,math.h和stdio.h库的使用。 这就是我到目前为止所拥有的。 当我在编译期间尝试将float和double放在一起时,平均函数给了我很多问题,因此将它乘以1.0固定。 我拥有一切,只有最小和最大。 我一直把最后一个条目作为最大值,最小值为0。 #include int main() { float average; int i, n, count=0, sum=0, squaresum=0, num, min, max; printf(“Please enter the number of numbers you wish to evaluate\n”); scanf_s(“%d”,&n); printf(“Please enter %d numbers\n”,n); while(countmax) max=num; if(num<min) min=num; scanf_s("%d",&num); sum = sum+num; squaresum = squaresum + (num*num); count++; } average = […]

使用scanf进行validation检查在循环内不起作用

我正在尝试创建一个函数来检查用户的输入,并让他们再次尝试,以防他们输入错误的输入。 因此,当我在函数中输入错误的输入时,它会将我抛入无限循环。 我该怎么做才能解决它? 我被允许只使用getchar和scanf进行用户输入。 int sizeOfField() { int size,inputCheck,flag=0; while (!flag) { inputCheck= scanf(” %d “, &size ); if ( inputCheck < 1 ) { printf( "Invalid Input!\n" ); printf( "Try agian"); } else if (inputCheck == 1) flag=1; } return size; }

代码“while(condition);”是否有效,是什么意思?

我们可以像分钟一样放(分号while(condition); 在C编程? 如果while(condition); 是有效的,这是什么意思?

while循环C / C ++中的变量声明

据我说,while循环应该是无限的,但它只运行三次 main() { int i=3; while(i–) { int i=100; i–; printf(“%d..”,i); } } 它输出99..99..99 但据我说,它应该运行无限次,因为每次控制进入循环它得到值100.所以它永远不会达到零。 只是为了实验我替换了int i=100; i=100; 在while循环中,现在它运行无限次.WHY ???

如何在看门狗定时器任务启动前防止系统挂起

我们使用基于ARM AM1808的嵌入式系统,带有rtos和文件系统。 我们正在使用C语言。 我们在应用程序代码中实现了一个看门狗计时器。 因此,只要应用程序代码出现问题,看门狗定时器就会负责系统。 但是,我们遇到的问题是系统在监视程序计时器任务启动之前挂起。 系统挂起,因为文件系统代码编码错误,有很多while循环。 有时候由于坏的NAND(或至少文件系统代码认为它很糟糕),代码会在一个while循环中挂起,永远不会脱离它。 我们得到的是一块死板。 因此,提供所有信息的关键是问你们是否有任何机制可以在应用程序代码之前运行的代码中实现? 有硬件看门狗吗? 可以采取哪些步骤以确保我们不会因某些while循环而导致死板。

在实现无限循环时,使用while(1)vs for(;;)vs goto(在C中)是否存在差异?

在实现无限循环时,使用while(1) vs for(;;) vs goto是否有区别? 谢谢,陈兹