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