簡體   English   中英

如何添加if-else語句?

[英]How to add statement if-else?

如何為“ kodeprodi ”添加if-else語句?

每當我添加if-else語句時,總是出現“需要Lvalue”消息。

#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

typedef struct {
    char bp[13];
    char nama[15];
    int kodeprodi;
    char namaprodi[10];
    float ipk;
} mahasiswa;

int main()
{
    char pil;

    do {
        mahasiswa mhs[10];
        int i, n;

        {
            printf("Data Nilai Mahasiswa\n");
            printf("Berapa banyak data = ");
            scanf("%d", &n);

            for(i = 0; i < n; i++) {
                printf("Data mahasiswa ke-%d\n", i+1);
                printf("Nomor BP: ");   scanf("%s", &mhs[i].bp);
                printf("Nama: ");       scanf("%s", &mhs[i].nama);
                printf("Kode Prodi: "); scanf("%d", &mhs[i].kodeprodi);
                printf("IPK: ");        scanf("%f", &mhs[i].ipk);

                if      (mhs[i].kodeprodi == 260) {mhs[i].namaprodi = "SI";}
                else if (mhs[i].kodeprodi == 261) {mhs[i].namaprodi = "TI";}
            }

            //output
            printf("No.     BP     Nama      Kode Prodi                 Nama Prodi      IPK    \n");

            for(i = 0; i < n; i++) {
                printf("\n%2d %-10s %-9s %3d %3s %3.f\n",
                       i+1, mhs[i].bp, mhs[i].nama, mhs[i].nama,
                       mhs[i].kodeprodi, mhs[i].namaprodi, mhs[i].ipk);
            }
        }

        printf("Repeat again? Y/N");
        scanf("%s", &pil);
        printf("\n\n");

    } while ((pil == 'Y') || (pil == 'y'));
}

即使在語句if-else中,我也這樣輸入

if(mhs[i].kodeprodi==260){namaprodi = "SI");

錯誤消息是“未定義的符號'namaprodi'

要快速修復,請使用:

if(mhs[i].kodeprodi==260){strncpy(mhs[i].namaprodi, "SI", 9);

需要strncpy()將內容復制到namaprodi

namaprodi是struct mahasiswa的成員,所以您不能直接訪問它。

但是最好使用std::string代替。

另外,正如@BoPersson所述, char kodeprodi; 不能容納260,因此最好將其轉換為int

我稍微調整了一下您的代碼。 擺脫了未使用的conio.h,將kodeprodi類型更改為int(因為char只能處理數字-127..127),從某些scanf調用中刪除了&(因為您應該將指針傳遞給%s格式化程序的第一個字符),並刪除了多余的內容mhs [i] .n用於printf的參數。

抱歉,我完全不理解您的代碼:-)我的調整是半自動的! 您應該更好地學習C編程。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>

typedef struct {
    char bp[13];
    char nama[15];
    int kodeprodi;
    char namaprodi[10];
    float ipk;
} mahasiswa;

int main() {
    char pil;

    do {
        mahasiswa mhs[10];
        int i, n;

        {
            printf("Data Nilai Mahasiswa\n");
            printf("Berapa banyak data = ");
            scanf("%d", &n);

            for(i=0;i<n;i++) {
            printf("Data mahasiswa ke-%d\n", i+1);
            printf("Nomor BP: "); scanf("%s", mhs[i].bp);
            printf("Nama: "); scanf("%s", mhs[i].nama);
            printf("Kode Prodi: "); scanf("%d", &mhs[i].kodeprodi);
            printf("IPK: "); scanf("%f", &mhs[i].ipk);

            if(mhs[i].kodeprodi==260)
                strcpy(mhs[i].namaprodi, "SI");
            else if(mhs[i].kodeprodi==261)
                strcpy(mhs[i].namaprodi, "TI");
        }

        //output
        printf("No.     BP     Nama      Kode Prodi                 Nama Prodi      IPK    \n");

        for(i=0;i<n;i++) {
            printf("\n%2d %-10s %-9s %3d %3s %3.f\n", i+1, mhs[i].bp, mhs[i].nama, mhs[i].kodeprodi, mhs[i].namaprodi, mhs[i].ipk);
        }

        }

        printf("Repeat again? Y/N");
        scanf("%s", &pil);
        printf("\n\n");

    } while ((pil == 'Y') || (pil == 'y'));

    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM