gpt4 book ai didi

c - 我的 IF 语句不起作用

转载 作者:行者123 更新时间:2023-11-30 20:13:56 25 4
gpt4 key购买 nike

我是 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 。原因是,因为 13100是整数,进行整数除法,因此结果也是整数。 13/100 将为 0.13,但会向下舍入为 0 以表示为整数。

解决方案是将数字设为 float ,如下所示:

13.0 / 100.0

现在进行浮点除法,结果为0.13 ,完全符合要求。

<小时/>

==比较

您正在使用=作为比较,什么时候应该使用 == 。例如:

if (q = 1)

以上行分配 1q 。它比较 q1 。要进行比较,请写:

if (q == 1)

并在您尝试与 = 进行比较的所有地方替换它.

<小时/>

printf格式说明符

printf("sub total: %.02f\n ", subtotal);

您已指定 printf格式说明符f用于输出 double值(value)观。 IE。您正在尝试打印 subtotal作为double值,但是subtotal被声明为int 。这就是为什么它只输出 0.0 .

要解决此问题,请替换 fd输出整数值(那么您也不需要 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com