编译器不断重复打印语句-C编程语言

问题描述 投票:0回答:3

伪代码->

idealMarks是一个值为80的整数

marksGained是一个值为50的整数

检查marksGained是否大于或等于idealMarks

[如果MarksGained小于理想标记,则打印“重试”更改标记获得等于80

如果marksGained大于或等于理想值,Marks将打印“您得分不错!”

C代码->

#include <stdio.h>

int main()
{
   int idealMarks; int marksGained;
   for (idealMarks = 80; marksGained = 50; marksGained == idealMarks)
   {
      printf("You have scored well!");
      marksGained = 80;
   }
   printf("Try Again");
}

当我执行此代码时,它将继续重复打印语句。

我使用以下网站执行我的代码-https://www.onlinegdb.com

Error Image

c printing repeat language
3个回答
1
投票
for (idealMarks = 80; marksGained = 50; marksGained == idealMarks)

marksGained = 50始终为真。

int idealMarks = 80;
for( int marksGained = 50; marksGained < idealMarks;)

是您想要的

[Edit:另外,您的打印语句也已切换,请尝试将其放入循环中。

请参见sample

0
投票
for循环中,您正在将值分配给marksGained = 50,它应该是条件语句marksGained == 50

0
投票
for (A; B; C) D

在此:

A首先执行。通常用于设置循环的初始状态。

    [B在每次迭代之前进行评估,以测试是否继续循环(如果B评估为“真”或非零)或退出(如果B评估为“假”或零)。
  • C在每次迭代后评估。通常,它用于以清晰的方式根据循环的迭代来调整状态。
  • [D是要迭代的语句(通常是复合语句{ … })。
  • for循环中,用marksGained = 50代替了B。那是一个赋值表达式;它将50放入marksGained。赋值表达式具有一个值;它是存储在左操作数中的值。因此,此B始终具有值50。这是非零值,因此for循环始终会继续。
  • 您用marksGained == idealMarks代替了C。那是一个比较。如果两个操作数相等,则结果为“ true”(1),否则为“ false”(0)。它没有其他作用。不使用表达式的值代替C。因此,此代码对您的程序无效。

    尚不清楚您打算写什么。我建议您首先只使用if语句(可能使用dowhile语句而不是for语句)进行编写。如果让程序使用这些语句,则可以尝试将dowhile语句转换为for语句。

  • © www.soinside.com 2019 - 2024. All rights reserved.