- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 C 编程的初学者,我已经开始做我的第一个作业。在这个作业中,我应该向用户打印一些信息并询问他们的输出,根据他们的输出我应该做一些计算并打印出结果。我不太确定在哪里,但我的结果要么为零,要么是与用户输入无关的数字。有人可以帮我吗?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int c=0, f=0, q=0, w=0;
int memory = 0, monitor = 0, hard = 0, subtotal = 0, hst = 0, total = 0, a = 0;
printf("Welcome to the IPC company's computer System calculator\n");
printf("Enter the package desired \n");
printf("(1:basic, 2:professional, 3:game system)\n");
scanf("%d", &c);
switch (c){
// if the user chooses the basic option
case 1:
printf("Enter additional memory required\n");
printf("(0: 4 GB included, 1: 8 GB, 2: 12 GB)\n");
q = scanf("%d", &q);
// The additional amount that needs to be added to the package, based on user's choice
switch (q){
case 1:
memory = 99;
case 2:
memory = 189;
case 0:
memory = 0;
}
printf("Enter monitor required\n");
printf("(0: 21 inch LED included, 1: 27 inch LED )\n");
w = scanf("%d", &w);
switch (w){
case 0:
monitor = 0;
case 1:
monitor = 199;
}
printf("Enter Hard Drive required\n");
printf("(0: 512 GB included, 1: 128 GB SSD )\n");
f = scanf("%d", &f);
switch (f){
case 0:
hard = 0;
case 1:
hard = 119;
}
subtotal = memory + monitor + hard + 599;
hst = subtotal*(13 / 100);
total = hst + subtotal;
// invoices
printf("basic package: 599.00\n");
// price of memory based on user's choice
if (q = 1){
printf("8 GB Memory: 99.00\n");
}
else if (q = 2){
printf(" 12 GB Memory: 189.00\n");
}
else {
printf("4 GB Memory: 0.00\n");
}
// price of monitor base on user's choice
if (w = 1){
printf("27 inch LED Monitor : 199.00\n");
}
else
{
printf("21 inch LED Monitor: 0.00\n");
}
// price of hard drive based on user's choice
if (f = 1){
printf("128 GB Hard Drive: 119.00\n");
}
else{
printf("512 GB Hard Drive: 0.00\n");
}
printf("sub total: %.02f\n ", subtotal);
printf("HST: %.02f\n", hst);
printf("Total: %.02f\n", total);
break;
最佳答案
scanf
的使用您的第一个scanf("%d", &c)
是正确的。
但稍后当你这样做时:q = scanf("%d", &q)
分配给q
并没有按照你的想法去做。
只需使用 scanf("%d", &some_variable)
任何你有的地方 some_variable =
之前scanf
,这是正确的使用方法scanf
.
部门13 / 100
结果总是 0
。原因是,因为 13
和100
是整数,进行整数除法,因此结果也是整数。 13/100 将为 0.13,但会向下舍入为 0 以表示为整数。
解决方案是将数字设为 float ,如下所示:
13.0 / 100.0
现在进行浮点除法,结果为0.13
,完全符合要求。
==
比较您正在使用=
作为比较,什么时候应该使用 ==
。例如:
if (q = 1)
以上行分配 1
至q
。它不比较 q
至1
。要进行比较,请写:
if (q == 1)
并在您尝试与 =
进行比较的所有地方替换它.
printf
格式说明符printf("sub total: %.02f\n ", subtotal);
您已指定 printf
格式说明符f
用于输出 double
值(value)观。 IE。您正在尝试打印 subtotal
作为double
值,但是subtotal
被声明为int
。这就是为什么它只输出 0.0
.
要解决此问题,请替换 f
与 d
输出整数值(那么您也不需要 .02
来指定小数位):
printf("sub total: %d\n ", subtotal);
或者,声明 subtotal
作为double
如果你希望它是一个 float ,又名能够表示小数点后的数字:
double subtotal = 0.0;
对您尝试使用 %.02f
输出的所有值执行此操作.
我建议您分段编写代码,一点一点地编写。仅当您确定旧代码 100% 正确运行时才添加新内容。这样,就不会立即出现这么多错误。
关于c - 我的 IF 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28396498/
我是一名优秀的程序员,十分优秀!