如何在C中的if for循环条件中将值添加到变量中

发布于 2025-01-10 15:45:32 字数 1194 浏览 2 评论 0原文

我是 C 编程新手,我很困惑为什么我的代码不起作用。因此,我遇到这样的情况:每次 IF 语句上的值为 true 时,它​​都会为变量添加 1 个值,如果也为 false,它将添加值。

int i,n,nilai,kelulusan,lulus,tidaklulus;
   printf("Berapa banyak nilai yang ingin dimasukkan?: ");
   scanf("%d",&n);
   for (i=1;i<=n;i++)
   {
       printf("Masukkan nilai: ");
       scanf("%d",&nilai);
       if(nilai>=60)
       {
           printf("Nilai ini lulus\n");
           lulus++;
           printf("\n");
       }
       else
       {
           printf("Nilai ini tidak lulus\n");
           tidaklulus++;
           printf("\n");
       }
   }
   printf("Dari %d nilai, ada %d yang lulus, dan %d yang tidak lulus.",n,kelulusan,tidaklulus);

输入将是这样的,例如:

Berapa banyak nilai yang ingin dimasukkan?: 3
Masukkan nilai: 2
Nilai ini tidak lulus

Masukkan nilai: 2
Nilai ini tidak lulus

Masukkan nilai: 60
Nilai ini lulus

Dari 3 nilai, ada 10425344 yang lulus, dan 2 yang tidak lulus.

我得到错误的输出

Dari 3 nilai, ada **10425344** yang lulus, dan 2 yang tidak lulus.

正确的输出应该是这样

Dari 3 nilai, ada 1 yang lulus, dan 2 yang tidak lulus.

我该如何解决这个问题?

I'm new to C programming, I'm confused why my code not working. So I have case where every time the value is true on IF statement, it will add 1 value to variable and either if false too, it will add value.

int i,n,nilai,kelulusan,lulus,tidaklulus;
   printf("Berapa banyak nilai yang ingin dimasukkan?: ");
   scanf("%d",&n);
   for (i=1;i<=n;i++)
   {
       printf("Masukkan nilai: ");
       scanf("%d",&nilai);
       if(nilai>=60)
       {
           printf("Nilai ini lulus\n");
           lulus++;
           printf("\n");
       }
       else
       {
           printf("Nilai ini tidak lulus\n");
           tidaklulus++;
           printf("\n");
       }
   }
   printf("Dari %d nilai, ada %d yang lulus, dan %d yang tidak lulus.",n,kelulusan,tidaklulus);

The input is going to be like this for example:

Berapa banyak nilai yang ingin dimasukkan?: 3
Masukkan nilai: 2
Nilai ini tidak lulus

Masukkan nilai: 2
Nilai ini tidak lulus

Masukkan nilai: 60
Nilai ini lulus

Dari 3 nilai, ada 10425344 yang lulus, dan 2 yang tidak lulus.

I get wrong output

Dari 3 nilai, ada **10425344** yang lulus, dan 2 yang tidak lulus.

The right output should be like this

Dari 3 nilai, ada 1 yang lulus, dan 2 yang tidak lulus.

How do I solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

明明#如月 2025-01-17 15:45:32

我更正了该代码。按照主的意愿工作。所有错误均已标有注释。
无论如何,我建议您的编译器使用 -Wall 标志。它将打开所有警告

#include <stdio.h>

int main()
{
  int i; //"Initialized" by for(...) loop
  int n,nilai; //"Initialized" by scanf
  int lulus=0,tidaklulus=0;   //Definitly need initialization
  //You define `kelulusan` and than print it with out using it storage potential?
  /*Use
    #define kelulusan ⟦any value⟧
  if you need a compile-time constant*/
  
  printf("Berapa banyak nilai yang ingin dimasukkan?: ");
  scanf("%d",&n);
  for (i=1;i<=n;i++)
  {
     printf("Masukkan nilai: ");
     scanf("%d",&nilai);
     if(nilai>=60)
     {
         printf("Nilai ini lulus\n");
         lulus++;
         printf("\n");
     }
     else
     {
         printf("Nilai ini tidak lulus\n");
         tidaklulus++;
         printf("\n");
     }
  }
  //Asumed that `kelulusan` was in place of `lulus` and corrected that.
  printf("Dari %d nilai, ada %d yang lulus,"
   "dan %d yang tidak lulus.",n, lulus,tidaklulus
  );
    
}

I corrected that code. Works as Lord desired. Has all mistakes marked with comments.
Anyway I recommend using -Wall flag for your compiler. It will turn on all warnings.

#include <stdio.h>

int main()
{
  int i; //"Initialized" by for(...) loop
  int n,nilai; //"Initialized" by scanf
  int lulus=0,tidaklulus=0;   //Definitly need initialization
  //You define `kelulusan` and than print it with out using it storage potential?
  /*Use
    #define kelulusan ⟦any value⟧
  if you need a compile-time constant*/
  
  printf("Berapa banyak nilai yang ingin dimasukkan?: ");
  scanf("%d",&n);
  for (i=1;i<=n;i++)
  {
     printf("Masukkan nilai: ");
     scanf("%d",&nilai);
     if(nilai>=60)
     {
         printf("Nilai ini lulus\n");
         lulus++;
         printf("\n");
     }
     else
     {
         printf("Nilai ini tidak lulus\n");
         tidaklulus++;
         printf("\n");
     }
  }
  //Asumed that `kelulusan` was in place of `lulus` and corrected that.
  printf("Dari %d nilai, ada %d yang lulus,"
   "dan %d yang tidak lulus.",n, lulus,tidaklulus
  );
    
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文