You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言实现计算次日星期功能运行异常 任意输入均返回Selasa如何解决

C语言星期转次日功能异常修复方案

问题根因

你遇到的所有输入都返回Selasa的问题以及功能异常主要由以下几个错误导致:

  • 输入存储类型错误:你定义的char Nama_Hari_Ini只能存储单个字符,无法存储完整的星期字符串,需要改为字符数组存储整段文本。
  • 输入格式错误:scanf使用%c仅能读取单个字符,应该用%s读取完整的字符串内容。
  • 字符串比较逻辑完全错误:
    • C语言不能直接用==判断两个字符串内容相等,也不能用逗号运算符做相等判断。你写的if(Nama_Hari_Ini, "Senin")里的逗号运算符会直接返回第二个操作数"Senin"的内存地址,永远为非0真值,所以第一个条件永远成立,不管输入什么都会输出Selasa,这是你当前问题的核心原因。
    • 后面的条件你还写成了=赋值运算符,不是相等判断逻辑,完全不符合需求。字符串比较必须使用标准库函数strcmp(),两个字符串内容相等时strcmp会返回0。
  • 缺少必要头文件:使用printf、scanf必须引入<stdio.h>头,使用strcmp必须引入<string.h>头。
  • 函数返回值设计冗余:当前函数不需要返回字符,原有返回逻辑没有实际作用。

修复后完整代码

#include <stdio.h>
#include <string.h>
#include <conio.h>

void nama_hari_besok(char* Nama_Hari_Ini);

int main(){
    // 定义长度足够的字符数组存储星期字符串
    char Nama_Hari_Ini[20];

    printf("FUNGSI NEXTDAY\n\n");
    printf("Masukkan nama hari ini= ");
    // 用%s读取完整字符串
    scanf("%s", Nama_Hari_Ini);
    nama_hari_besok(Nama_Hari_Ini);
    getch();
    return 0;
}

void nama_hari_besok(char* Nama_Hari_Ini){
    // 使用strcmp完成字符串相等判断
    if(strcmp(Nama_Hari_Ini, "Senin") == 0){
        printf("Besok adalah hari Selasa\n");
    }
    else if (strcmp(Nama_Hari_Ini, "Selasa") == 0){
        printf("Besok adalah hari Rabu\n");
    }
    else if (strcmp(Nama_Hari_Ini, "Rabu") == 0){
        printf("Besok adalah hari Kamis\n");
    }
    else if (strcmp(Nama_Hari_Ini, "Kamis") == 0){
        printf("Besok adalah hari Jumat\n");
    }
    else if (strcmp(Nama_Hari_Ini, "Jumat") == 0){
        printf("Besok adalah hari Sabtu\n");
    }
    else if (strcmp(Nama_Hari_Ini, "Sabtu") == 0){
        printf("Besok adalah hari Minggu\n");
    }
    else if (strcmp(Nama_Hari_Ini, "Minggu") == 0){
        printf("Besok adalah hari Senin\n");
    }
    else{
        printf("Error\n");
    }
}

验证说明

修复后输入Kamis会正确输出Besok adalah hari Jumat,所有星期匹配逻辑都可以正常运行。

内容的提问来源于stack exchange,提问作者Aida Arisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:36:03