You need to enable JavaScript to run this app. C语言如何验证字符串与double类型?员工奖金计算代码运行错误求助
优惠活动
大模型
产品
解决方案
定价
更多

C语言如何验证字符串与double类型?员工奖金计算代码运行错误求助

C语言奖金计算代码问题修正

以下是你的代码存在的问题及修正方案:

  • 字符串比较逻辑错误:C语言中不能直接用==比较两个字符串的内容,gender == 'male'写法实际是在比较字符数组首地址和字符常量地址,判断结果永远为假,因此所有分支都不会执行,未初始化的bonusSalary会输出随机值(你遇到的输出0属于随机情况)。需要引入<string.h>头文件,使用strcmp()函数对比字符串,两个字符串相等时strcmp()返回值为0。
  • 字符串语法错误:表示字符串需要使用双引号"",单引号''仅能表示单个字符,'male'属于非法写法,应改为"male"、"female"。
  • 输入语法错误:字符数组名本身就是首地址,使用scanf输入字符串不需要加取地址符&,应改为scanf("%s", gender);。
  • 奖金比例逻辑错误:女员工薪资低于10000卢比时,是10%基础奖金+2%额外奖励合计12%,原代码将低于和高于10000的比例写反。
  • 缺少必要头文件:代码使用printf、scanf函数,需要引入<stdio.h>头文件。

修正后的完整代码:

#include <stdio.h>
#include <string.h>
int main()
{
    char gender[6];
    double salary;
    double bonusSalary = 0.0; // 初始化避免未赋值警告
    printf("enter your gender here:");
    scanf("%s", gender);
    printf("enter your salary here:");
    scanf("%lf", &salary);
    if(strcmp(gender, "male") == 0 && salary < 10000)
    {
        bonusSalary = salary * (7.0 / 100.0);
    }
    else if(strcmp(gender, "male") == 0)
    {
        bonusSalary = salary * (5.0 / 100.0);
    }
    else if(strcmp(gender, "female") == 0 && salary < 10000)
    {
        bonusSalary = salary * (12.0 / 100.0);
    }
    else if(strcmp(gender, "female") == 0)
    {
        bonusSalary = salary * (10.0 / 100.0);
    }
    printf("bonus amount you will receive is:%lf", bonusSalary);
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 09:57:02