如何添加语句if-else

How to add statement if-else?

本文关键字:语句 if-else 添加 何添加      更新时间:2023-10-16

如何为" kodeprodi"添加if-else语句?

每次我添加if-else语句时,总是会出现消息"需要左值"。

#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 Mahasiswan");
            printf("Berapa banyak data = ");
            scanf("%d", &n);
            for(i = 0; i < n; i++) {
                printf("Data mahasiswa ke-%dn", 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.fn",
                       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("nn");
    } while ((pil == 'Y') || (pil == 'y'));
}

即使在语句中 if-else,我也像这样输入

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

错误消息是"未定义的符号'namaprodi'

我稍微调整了一下你的代码。删除了未使用的conio.h,将kodeprodi类型更改为int(因为char只能处理数字-127..127),从某些scanf调用中删除和(因为您应该将指针传递给%s格式化程序的第一个字符),删除了printf的额外mhs[i].nama参数。

抱歉,我完全不理解您的代码:-)我的调整是半自动的!你应该更好地学习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 Mahasiswan");
            printf("Berapa banyak data = ");
            scanf("%d", &n);
            for(i=0;i<n;i++) {
            printf("Data mahasiswa ke-%dn", 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.fn", 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("nn");
    } while ((pil == 'Y') || (pil == 'y'));
    return 0;
}

要快速修复,请使用:

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

需要strncpy()才能将内容复制到 namaprodi 中。

namaprodi是结构mahasiswa的成员,因此您无法直接访问它。

但最好使用std::string

另外,正如@BoPersson提到的,char kodeprodi;不能容纳 260,所以你最好把它转换成 int .