加法和赋值错误
Addition and Assigned Values Wrong
我的代码有问题。我的课程是一个招生系统,每次我选择切换案例时,它都应该显示总价,但在选择了最后一个报名科目后,总价添加似乎是错误的。请帮忙。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n, none, ntwo, nthree, Total;
float Algebra, Trigonometry, Calculus, Engiana, Physics;
char password[20], username[8];
Algebra = 100;
Trigonometry = 300;
Calculus = 500;
Engiana = 750;
Physics = 1500;
Total = (none + ntwo + nthree);
printf("Welcome to the Enrollment System n");
printf("Here is the list of Available Subjects n");
printf("n");
printf("Course Code Pricen");
printf("n");
printf("1. Algebra %.2f n",Algebra);
printf("2. Trigonometry %.2f n",Trigonometry);
printf("3. Calculus %.2f n",Calculus);
printf("4. Engiana %.2f n",Engiana);
printf("5. Physics %.2f n",Physics);
printf("You can only select three courses to enroll for the Term n");
printf("n Select First Course to Enroll n");
scanf("%d", &none);
switch(none)
{
case 1: printf(" You Enrolled Algebra %.2f n",Algebra); break; //if conditions met , immediately goes to system pause
case 2: printf(" You Enrolled Trigonometry %.2f n", Trigonometry); break; //if conditions not met goes to another case
case 3: printf(" You Enrolled Calculus %.2f n", Calculus); break;
case 4: printf(" You Enrolled Engiana %.2f n", Engiana); break;
case 5: printf(" You Enrolled Physics %.2f n", Physics); break;
default: printf(" The Course you entered is not valid n"); break;
}
printf("n Select Second Course to Enroll n");
scanf("%d", &ntwo);
switch(ntwo)
{
case 1: printf(" You Enrolled Algebra %.2f n",Algebra); break; //if conditions met , immediately goes to system pause
case 2: printf(" You Enrolled Trigonometry %.2fn", Trigonometry); break; //if conditions not met goes to another case
case 3: printf(" You Enrolled Calculus %.2fn", Calculus); break;
case 4: printf(" You Enrolled Engiana %.2fn", Engiana); break;
case 5: printf(" You Enrolled Physics %.2f n", Physics); break;
default: printf(" The Course you entered is not valid n"); break;
}
printf("n Select Third Course to Enroll n");
scanf("%d", &nthree);
switch(nthree)
{
case 1: printf(" You Enrolled Algebra %.2f n",Algebra); break; //if conditions met , immediately goes to system pause
case 2: printf(" You Enrolled Trigonometry %.2f n", Trigonometry); break; //if conditions not met goes to another case
case 3: printf(" You Enrolled Calculus %.2f n", Calculus); break;
case 4: printf(" You Enrolled Engiana %.2f n", Engiana); break;
case 5: printf(" You Enrolled Physics %.2f n", Physics); break;
default: printf(" The Course you entered is not valid n"); break;
}
printf("Total Tuition Price = %.2f n",Total);
system("PAUSE");
return 0;
}
Total = (none + ntwo + nthree);
这行应该排在最后。
即,代码的底部应该看起来像这个
Total = (none + ntwo + nthree);
printf("Total Tuition Price = %.2f n",Total);
system("PAUSE");
return 0;
}
请记住,这些指令是按照编写顺序执行的,在原始代码中,Total
是在用户有机会回答之前计算出来的。
顺便说一句,我知道你可能才刚刚开始学习,但这是我遵循的一句格言,如果你复制粘贴的代码不止一行,你可以做得更好。一旦你了解了函数、数组和结构,也许你会重新审视这一点,并尝试消除任何形式的代码重复。
另外两位回答者指出了一个同样有效的问题,你目前只是在添加用户输入,你可能想添加课程本身的成本。
您有一个逻辑错误。您需要在每次扫描后放置变量Total的赋值语句。但您必须在switch语句中使用正确的金额更新Total。
示例:
case 1: printf(" You Enrolled Algebra %.2f n",Algebra); Total += 100; break; //if conditions met , immediately goes to system pause
case 2: printf(" You Enrolled Trigonometry %.2f n", Trigonometry); Total += 300; break; //if conditions not met goes to another case
case 3: printf(" You Enrolled Calculus %.2f n", Calculus); Total += 500; break;
case 4: printf(" You Enrolled Engiana %.2f n", Engiana);Total += 750; break;
case 5: printf(" You Enrolled Physics %.2f n", Physics); Total += 1500; break;
default: printf(" The Course you entered is not valid n"); break;
}
printf("n Select Second Course to Enroll n");
scanf("%d", &ntwo);`
附言:你的代码可以使用循环来改进。。
主要有2个错误
您的Total
变量是int
数据类型。因此,打印时应使用%d
。对于使用%.2f
,您应该使Total
变量float
为了找到总学费,你应该在每种情况下添加学费,如
case 1:Total += Algebra; printf(" You Enrolled Algebra %.2f n",Algebra); break; //if conditions met , immediately goes to system pause
case 2:Total += Trigonometry; printf(" You Enrolled Trigonometry %.2f n", Trigonometry); break; //if conditions not met goes to another case
case 3:Total += Calculus; printf(" You Enrolled Calculus %.2f n", Calculus); break;
case 4:Total += Engiana; printf(" You Enrolled Engiana %.2f n", Engiana); break;
case 5:Total += Physics; printf(" You Enrolled Physics %.2f n", Physics); break;
default: printf(" The Course you entered is not valid n"); break;
此外,您应该使用0而不是(none + ntwo + nthree)
初始化Total
相关文章:
- 错误:在为指针赋值时,void值没有被忽略
- 使用 mat.at<uchar>(i,j) 的 opencv C++中的矩阵赋值错误
- 奇怪的 G++ 错误,带有关于左值和赋值的简单代码
- 重载赋值运算符函数和复制构造函数中的错误
- 当我尝试构建此程序时,出现此错误:需要左键作为赋值的左操作数
- 错误:无法在赋值中将"双 ()(双)抛出 ()"转换为"双倍"
- 错误消息:使用复制构造函数和重载赋值运算符
- 为什么在取消引用的指向接口的指针上使用赋值运算符不是编译器错误
- 如何重载 const 对象的 [],以便值赋值不会导致编译错误
- C++的新增功能:创建 2D 数组并具有正确的赋值运算符:分割错误
- C++:构造函数中的向量赋值错误
- 使用赋值运算符复制两个类中的数组时出现编译器错误
- 可以错误地使用赋值运算符而不是比较运算符的地方,= Vs ==
- 唯一指针中的赋值运算符错误
- 不断增加的指针数组 错误:赋值中的类型不兼容
- C++赋值构造函数瓦尔格林德错误
- { } 构造函数实现中的赋值运算符 => 错误
- 使用宏进行赋值和错误检查
- 两个向量赋值错误
- 错误:在 GEANY 中将"int"赋值为"char [1]"时类型不兼容