如何在 C 中使用 IF 对数组进行 strcmp?

发布于 2025-01-11 06:05:12 字数 2225 浏览 0 评论 0原文

我是 C 编程新手。所以我想构建一个程序,只要用户输入“111”,就会显示“total”变量,只要用户输入“999”,输入/scanf就会停止。我已经成功解决了这个问题,但没有数组。现在我想用数组解决它,但我不知道如何解决。 (忽略一些未使用的变量,导致对此进行练习)。

 int i,j,k,o,n,nilai[100],nilaimnilai2,total=0;
    char nama[100][100],nim[100][100],nimif[100][2]={"111","999"},nim1[100],nim2[100];
    float rata2;
    printf("Berapa banyak data mahasiswa yang ingin diinput?: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("\nMahasiswa ke-%d\n",i);
        fflush(stdin);
        printf("Masukkan nama  : ");
        scanf("%[^\n]",&nama[i]);
        fflush(stdin);
        printf("Masukkan NIM   : ");
        scanf("%[^\n]",&nim[i]);
        fflush(stdin);
        printf("Masukkan Nilai : ");
        scanf("%d",&nilai[i]);
        fflush(stdin);
        printf("\n");
        o=strcmp(nim[1],"111");
        k=strcmp(nim[2],"999");

        if(o==0)
        {
            total+=nilai[i];
            printf("Total nilai : %d\n",total);
            printf("Berikut adalah data nilai dari %d mahasiswa:\n",j);
        }
        else if(k==0);
        {
            //fclose(stdin);
            //total+=nilai[i];
            printf("salah");
        }
    }

我面临的问题是如何将 strcmp 与字符串数组一起使用? 这是我运行该程序的示例:

Berapa banyak data mahasiswa yang ingin diinput?: 2

Mahasiswa ke-1
Masukkan nama  : test a
Masukkan NIM   : 89
Masukkan Nilai : 98

salah
Mahasiswa ke-2
Masukkan nama  : test b
Masukkan NIM   : 111
Masukkan Nilai : 90

salah

它给出了非常错误的输出并且是意外的。我对数组的了解很短,但我想弄清楚。

“111”输入的正确和预期输出:

Berapa banyak data mahasiswa yang ingin diinput?: 2

Mahasiswa ke-1
Masukkan nama  : test a
Masukkan NIM   : 89
Masukkan Nilai : 98

Mahasiswa ke-2
Masukkan nama  : test b
Masukkan NIM   : 111
Masukkan Nilai : 90

Total nilai : 179
Berikut adalah data nilai dari 2 mahasiswa: 

“999”输入的正确和预期输出:

Berapa banyak data mahasiswa yang ingin diinput?: 2

Mahasiswa ke-1
Masukkan nama  : test a
Masukkan NIM   : 999
Masukkan Nilai : 98

salah
(scan stop and exit)
Process returned 0 (0x0)   execution time : 16.813 s
Press any key to continue.

我该如何解决这个问题?如果我的问题不太详细,我很抱歉,因为我很难解释这个问题,所以我只是举一个例子。

Im new into C programming. So i want to build a program that whenever if the user give input "111" will display the 'total' variable and whenever if the user give input "999" the input/scanf will be stopped. I have succeed to solve this problem but without array. Now i want to solve it with array but i can't figure it how. (Ignore some unused variable cause im praticing on this).

 int i,j,k,o,n,nilai[100],nilaimnilai2,total=0;
    char nama[100][100],nim[100][100],nimif[100][2]={"111","999"},nim1[100],nim2[100];
    float rata2;
    printf("Berapa banyak data mahasiswa yang ingin diinput?: ");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("\nMahasiswa ke-%d\n",i);
        fflush(stdin);
        printf("Masukkan nama  : ");
        scanf("%[^\n]",&nama[i]);
        fflush(stdin);
        printf("Masukkan NIM   : ");
        scanf("%[^\n]",&nim[i]);
        fflush(stdin);
        printf("Masukkan Nilai : ");
        scanf("%d",&nilai[i]);
        fflush(stdin);
        printf("\n");
        o=strcmp(nim[1],"111");
        k=strcmp(nim[2],"999");

        if(o==0)
        {
            total+=nilai[i];
            printf("Total nilai : %d\n",total);
            printf("Berikut adalah data nilai dari %d mahasiswa:\n",j);
        }
        else if(k==0);
        {
            //fclose(stdin);
            //total+=nilai[i];
            printf("salah");
        }
    }

The problem that i faced is how to use strcmp with string array?
Here is the example if i run the program:

Berapa banyak data mahasiswa yang ingin diinput?: 2

Mahasiswa ke-1
Masukkan nama  : test a
Masukkan NIM   : 89
Masukkan Nilai : 98

salah
Mahasiswa ke-2
Masukkan nama  : test b
Masukkan NIM   : 111
Masukkan Nilai : 90

salah

It gives me very wrong output and unexpected. My knowledge for array is very short, but i want to figure it out.

The right and expected output for "111" input:

Berapa banyak data mahasiswa yang ingin diinput?: 2

Mahasiswa ke-1
Masukkan nama  : test a
Masukkan NIM   : 89
Masukkan Nilai : 98

Mahasiswa ke-2
Masukkan nama  : test b
Masukkan NIM   : 111
Masukkan Nilai : 90

Total nilai : 179
Berikut adalah data nilai dari 2 mahasiswa: 

The right and expected output for "999" input:

Berapa banyak data mahasiswa yang ingin diinput?: 2

Mahasiswa ke-1
Masukkan nama  : test a
Masukkan NIM   : 999
Masukkan Nilai : 98

salah
(scan stop and exit)
Process returned 0 (0x0)   execution time : 16.813 s
Press any key to continue.

How do i solve this? Im sorry if my question not too much detailed, because im having some difficulties to explain the problem, so i just give an example.

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文