Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基本C编程:运行时检查失败#3-变量';项目1';正在使用而未初始化_C_Initialization - Fatal编程技术网

基本C编程:运行时检查失败#3-变量';项目1';正在使用而未初始化

基本C编程:运行时检查失败#3-变量';项目1';正在使用而未初始化,c,initialization,C,Initialization,我是计算机科学的新手,目前正在大学读一年级。 今天我有一个问题。 问题是: 编写一个程序,允许用户输入3种产品的代码和销售数量(使用不同的变量存储这5种不同的产品代码)。您的程序需要计算每种产品的总金额(数量x单价)以及所有售出产品的总计 最后,您的程序将显示每个产品的产品代码、产品描述、单价和总金额,以及所有已销售产品的总金额。请参考下表中的信息: PS:您将被期望使用许多变量,并且在您的程序中出现许多相同代码的冗余,这很好,因为这里不需要应用循环 额外要求: 将价格设置为2个小数点 使用常

我是计算机科学的新手,目前正在大学读一年级。 今天我有一个问题。 问题是:

编写一个程序,允许用户输入3种产品的代码和销售数量(使用不同的变量存储这5种不同的产品代码)。您的程序需要计算每种产品的总金额(数量x单价)以及所有售出产品的总计

最后,您的程序将显示每个产品的产品代码、产品描述、单价和总金额,以及所有已销售产品的总金额。请参考下表中的信息:

PS:您将被期望使用许多变量,并且在您的程序中出现许多相同代码的冗余,这很好,因为这里不需要应用循环

额外要求:

  • 将价格设置为2个小数点
  • 使用常量方法修复产品代码
  • 使用switch语句获取产品价格
  • 总计包括6%的税收计算
  • 下面是我的答案,当我编译代码时,它运行时没有错误,但是当我尝试运行它时,它有一个问题:

    运行时检查失败#3-正在使用变量“pro1”,但未初始化

    我的答案代码:

    #include <stdio.h>
    int main()
    {
    float pro1, pro2, pro3, pro4, pro5;
    float subtotal, Tax, total;
    int unit;
    char code;
    int x, y, z, a, b;
    
    printf("Enter the quantity of the product.\n");
    scanf("%d", &unit);
    printf("Enter the product code.(x=12345,y=56789,z=45678,a=13579,b=34567)\n");
    scanf("%d", &code);
    
    switch (code)
    {
    case 'x':
        pro1 = unit*3.50;
        break;
    case 'y':
        pro2 = unit*3.50;
        break;
    case 'z':
        pro3 = unit*1.20;
        break;
    case 'a':
        pro4 = unit*4.50;
        break;
    case 'b':
        pro5 = unit*1.00;
        break;
    default:
        printf("Invalid code.\n");
        break;
    }
    
    printf("Enter the quantity of the product.\n");
    scanf("%d", &unit);
    printf("Enter the product code.(x=12345,y=56789,z=45678,a=13579,b=34567)\n");
    scanf("%d", &code);
    
    switch (code)
    {
    case 'x':
        pro1 = unit*3.50;
        break;
    case 'y':
        pro2 = unit*3.50;
        break;
    case 'z':
        pro3 = unit*1.20;
        break;
    case 'a':
        pro4 = unit*4.50;
        break;
    case 'b':
        pro5 = unit*1.00;
        break;
    default:
        printf("Invalid code.\n");
        break;
    }
    
    printf("Enter the quantity of the product.\n");
    scanf("%d", &unit);
    printf("Enter the product code.(x=12345,y=56789,z=45678,a=13579,b=34567)\n");
    scanf("%d", &code);
    
    switch (code)
    {
    case 'x':
        pro1 = unit*3.50;
        break;
    case 'y':
        pro2 = unit*3.50;
        break;
    case 'z':
        pro3 = unit*1.20;
        break;
    case 'a':
        pro4 = unit*4.50;
        break;
    case 'b':
        pro5 = unit*1.00;
        break;
    default:
        printf("Invalid code.\n");
        break;
    }
    
    printf("Enter the quantity of the product.\n");
    scanf("%d", &unit);
    printf("Enter the product code.(x=12345,y=56789,z=45678,a=13579,b=34567)\n");
    scanf("%d", &code);
    
    switch (code)
    {
    case 'x':
        pro1 = unit*3.50;
        break;
    case 'y':
        pro2 = unit*3.50;
        break;
    case 'z':
        pro3 = unit*1.20;
        break;
    case 'a':
        pro4 = unit*4.50;
        break;
    case 'b':
        pro5 = unit*1.00;
        break;
    default:
        printf("Invalid code.\n");
        break;
    }
    
    printf("Enter the quantity of the product.\n");
    scanf("%d", &unit);
    printf("Enter the product code.(x=12345,y=56789,z=45678,a=13579,b=34567)\n");
    scanf("%d", &code);
    
    switch (code)
    {
    case 'x':
        pro1 = unit*3.50;
        break;
    case 'y':
        pro2 = unit*3.50;
        break;
    case 'z':
        pro3 = unit*1.20;
        break;
    case 'a':
        pro4 = unit*4.50;
        break;
    case 'b':
        pro5 = unit*1.00;
        break;
    default:
        printf("Invalid code.\n");
        break;
    }
    
    printf("Artline 500A Black (Whiteboard Marker): %f", pro1);
    printf("Artline 500A Red (Whiteboard Marker): %f", pro2);
    printf("Pocket File (Yellow): %f", pro3);
    printf("Pencil Casing: RM %f", pro4);
    printf("A4 Exercise Book: %f", pro5);
    
    subtotal = pro1 + pro2 + pro3 + pro4 + pro5;
    Tax = subtotal*0.06;
    total = subtotal + Tax;
    
    printf("Subtotal : %f", subtotal);
    printf("Tax : %f", Tax);
    printf("Total : %f", total);
    
    system("pause");
    return 0;
    
    }
    
    #包括
    int main()
    {
    浮动pro1、pro2、pro3、pro4、pro5;
    浮动小计、税金、总计;
    整数单位;
    字符码;
    int x,y,z,a,b;
    printf(“输入产品的数量。\n”);
    扫描频率(“%d”和单位);
    printf(“输入产品代码。(x=12345,y=56789,z=45678,a=13579,b=34567)\n”);
    scanf(“%d”、&code);
    开关(代码)
    {
    案例“x”:
    pro1=单位*3.50;
    打破
    案例“y”:
    pro2=单位*3.50;
    打破
    案例“z”:
    pro3=单位*1.20;
    打破
    案例“a”:
    pro4=单位*4.50;
    打破
    案例“b”:
    pro5=单位*1.00;
    打破
    违约:
    printf(“无效代码。\n”);
    打破
    }
    printf(“输入产品的数量。\n”);
    扫描频率(“%d”和单位);
    printf(“输入产品代码。(x=12345,y=56789,z=45678,a=13579,b=34567)\n”);
    scanf(“%d”、&code);
    开关(代码)
    {
    案例“x”:
    pro1=单位*3.50;
    打破
    案例“y”:
    pro2=单位*3.50;
    打破
    案例“z”:
    pro3=单位*1.20;
    打破
    案例“a”:
    pro4=单位*4.50;
    打破
    案例“b”:
    pro5=单位*1.00;
    打破
    违约:
    printf(“无效代码。\n”);
    打破
    }
    printf(“输入产品的数量。\n”);
    扫描频率(“%d”和单位);
    printf(“输入产品代码。(x=12345,y=56789,z=45678,a=13579,b=34567)\n”);
    scanf(“%d”、&code);
    开关(代码)
    {
    案例“x”:
    pro1=单位*3.50;
    打破
    案例“y”:
    pro2=单位*3.50;
    打破
    案例“z”:
    pro3=单位*1.20;
    打破
    案例“a”:
    pro4=单位*4.50;
    打破
    案例“b”:
    pro5=单位*1.00;
    打破
    违约:
    printf(“无效代码。\n”);
    打破
    }
    printf(“输入产品的数量。\n”);
    扫描频率(“%d”和单位);
    printf(“输入产品代码。(x=12345,y=56789,z=45678,a=13579,b=34567)\n”);
    scanf(“%d”、&code);
    开关(代码)
    {
    案例“x”:
    pro1=单位*3.50;
    打破
    案例“y”:
    pro2=单位*3.50;
    打破
    案例“z”:
    pro3=单位*1.20;
    打破
    案例“a”:
    pro4=单位*4.50;
    打破
    案例“b”:
    pro5=单位*1.00;
    打破
    违约:
    printf(“无效代码。\n”);
    打破
    }
    printf(“输入产品的数量。\n”);
    扫描频率(“%d”和单位);
    printf(“输入产品代码。(x=12345,y=56789,z=45678,a=13579,b=34567)\n”);
    scanf(“%d”、&code);
    开关(代码)
    {
    案例“x”:
    pro1=单位*3.50;
    打破
    案例“y”:
    pro2=单位*3.50;
    打破
    案例“z”:
    pro3=单位*1.20;
    打破
    案例“a”:
    pro4=单位*4.50;
    打破
    案例“b”:
    pro5=单位*1.00;
    打破
    违约:
    printf(“无效代码。\n”);
    打破
    }
    printf(“Artline 500A黑色(白板标记):%f”,pro1);
    printf(“Artline 500A红色(白板标记):%f”,pro2);
    printf(“袖珍文件(黄色):%f”,pro3);
    printf(“铅笔盒:RM%f”,pro4);
    printf(“A4练习本:%f”,pro5);
    小计=项目1+2+3+4+5;
    税=小计*0.06;
    合计=小计+税金;
    printf(“小计:%f”,小计);
    printf(“税:%f”,税);
    printf(“总计:%f”,总计);
    系统(“暂停”);
    返回0;
    }
    

    到目前为止,我只学习了基本的I/O操作,if-else语句和switch-case语句。

    初始化变量

    float pro1=0, pro2=0, pro3=0, pro4=0, pro5=0;
    

    开关
    语句期间,如果这些变量属于
    默认情况,则可能会在未设置任何值的情况下使用这些变量。

    您的代码存在许多问题:

  • 你以一种实际上被夸大的方式违反了规则

  • 您从不检查来自
    scanf()
    的返回值,这可能会导致变量保留以前的值,或者在使用它时未初始化

  • 您可以打印
    probN
    变量的值,但用户可能从未为
    N
    th产品输入代码

    您应该将其初始化为
    0
    ,因为如果用户从未插入该值,则表示“未出售任何单位”

  • 您的
    开关
    语句将永远无法工作,如果您使用
    %d”
    说明符输入
    x
    ,这四点中的第二点将是一个问题,因为当您到达
    开关
    时,
    %c
    指定符,并检查
    scanf()返回的值以确保扫描了某些内容

    所以不是

    scanf("%d", &code);
    
    你需要

    if (scanf(" %c", &code) != 1)
        wow_this_is_really_unexpected_but_I_am_glad_to_be_careful();
    
    在使用
    %d”
    说明符时传递
    字符*
    也是错误的,实际上这是一个严重的错误


  • 假设所有的
    switch
    语句都经过
    default
    案例,然后用
    pro
    点击
    printf()

    C
    subtotal = pro1 + pro2 + pro3 + pro4 + pro5;
    
    float pro1 = 0, pro2 = 0, pro3 = 0, pro4 = 0, pro5 = 0;
    
    char code;
    scanf("%d", &code);
    
    if (scanf("%d", &code) != 1) {
        /* error: could not convert the input to a number. */
    }