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

C语言条件判断异常导致任意输入均输出646TL的问题咨询

问题原因

你代码里的条件判断写法不符合C语言的语法规则:

  • C语言不支持1<=yas<=3这种连续区间判断的写法,这类表达式会从左到右依次计算:
    1. 先执行1 <= yas,得到的结果是布尔值(真为1,假为0)
    2. 再拿第一步得到的1/0和3做比较0<=3/1<=3,结果永远为真
    3. 所以第一个if的条件永远成立,程序始终输出646TL的结果

修正方案

把所有连续区间判断拆分为两个独立的判断,用逻辑与运算符&&连接即可,示例:
原错误写法1<=yas<=3 && 0<=hacim<=1300改为正确写法:
1<=yas && yas<=3 && 0<=hacim && hacim<=1300
其他判断条件按相同规则修改即可。

另外补充两个潜在问题:

  1. 代码缺少必要头文件,开头需要添加#include <stdio.h>(提供输入输出函数声明)和#include <string.h>(提供strcmp函数声明),否则编译会出现警告或错误。
  2. 第四个判断的排量区间存在逻辑漏洞:原写法和第三个判断的1300排量边界重复,建议改为1301<=hacim && hacim<=1600避免歧义。

修正后完整代码

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
    int hacim,yas;
    char ad[20]; //Kullanıcı adı 
    printf("Kullanici adinizi girin: \n");
    scanf("%s", ad);
    printf("Sifrenizi girin: \n");
    char sifre[20]; // Şifre
    scanf("%s", sifre);
    
    if (strcmp(ad,"ahmet")==0 && strcmp(sifre,"1234")==0){
        printf("Giris basarili. Hosgeldiniz\n\n");
    }
    else
    {
        printf("Hatali giris yaptiniz \n");
    }
    
    printf("Aracin motor hacmini giriniz:");
    scanf("%d",&hacim);
    printf("\nAracin model yilini giriniz:");
    scanf("%d",&yas);
    if(1<=yas && yas<=3 && 0<=hacim && hacim<=1300){
        printf("\nOdemeniz gereken tutar 646TL");
    }
    else if(1<=yas && yas<=3 && 1301<=hacim && hacim<=1600){
        printf("Odemeniz gereken tutar 1035TL");
    }
    else if(4<=yas && yas<=6 && 0<=hacim && hacim<=1300){
        printf("Odemeniz gereken tutar 450TL");
    }
    else if(4<=yas && yas<=6 && 1301<=hacim && hacim<=1600){
        printf("Odemeniz gereken tutar 776TL");
    }      
    else{
        printf("yanlis deger");
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:06:06