分区中声明的变量快疯了 编写一个代码来计算C++中的学生的CGPA。我决定使用3个科目,通过不同的功能为每个科目收集分数。我已经把代码看了好几遍,但我不明白为什么这个数字是如此错误 #include <iostream> using namespace std; void grade(int mark){ int gradepoint; if (mark >= 81) { gradepoint = 10; } if (mark >= 61 && mark <= 80) { gradepoint = 8; } if (mark >= 41 && mark<= 60) { gradepoint = 6; } if (mark <= 40){ gradepoint = 0; } } void grade1(int mark1){ int gradepoint1; if (mark1 >= 81) { gradepoint1 = 10; } if (mark1 >= 61 && mark1 <= 80) { gradepoint1 = 8; } if (mark1 >= 41 && mark1 <= 60) { gradepoint1 = 6; } if (mark1 <= 40){ gradepoint1 = 0; } } void grade2(int mark2){ int gradepoint2; if (mark2 >= 81) { gradepoint2 = 10; } if (mark2 >= 61 && mark2 <= 80) { gradepoint2 = 8; } if (mark2 >= 41 && mark2 <= 60) { gradepoint2 = 6; } if (mark2 <= 40){ gradepoint2 = 0; } } int main(){ int mark, mark1, mark2; int gradepoint, gradepoint1, gradepoint2; cout <<"Please enter your marks for English. "; cin >> mark; grade(mark); cout <<"Please enter your marks for Maths. "; cin >> mark1; grade1(mark1); cout <<"Please enter your marks for Science. "; cin >> mark2; grade2(mark2); cout << gradepoint + gradepoint1 + gradepoint2; return 0; } #包括 使用名称空间std; 空隙等级(整型标记){ 国际评分点; 如果(标记>=81){ 评分点=10; } 如果(mark>=61&&mark=41&&mark=61&&mark1=41&&mark1=61&&mark2=41&&mark2
,这里是代码的工作版本,只需最少的编辑:分区中声明的变量快疯了 编写一个代码来计算C++中的学生的CGPA。我决定使用3个科目,通过不同的功能为每个科目收集分数。我已经把代码看了好几遍,但我不明白为什么这个数字是如此错误 #include <iostream> using namespace std; void grade(int mark){ int gradepoint; if (mark >= 81) { gradepoint = 10; } if (mark >= 61 && mark <= 80) { gradepoint = 8; } if (mark >= 41 && mark<= 60) { gradepoint = 6; } if (mark <= 40){ gradepoint = 0; } } void grade1(int mark1){ int gradepoint1; if (mark1 >= 81) { gradepoint1 = 10; } if (mark1 >= 61 && mark1 <= 80) { gradepoint1 = 8; } if (mark1 >= 41 && mark1 <= 60) { gradepoint1 = 6; } if (mark1 <= 40){ gradepoint1 = 0; } } void grade2(int mark2){ int gradepoint2; if (mark2 >= 81) { gradepoint2 = 10; } if (mark2 >= 61 && mark2 <= 80) { gradepoint2 = 8; } if (mark2 >= 41 && mark2 <= 60) { gradepoint2 = 6; } if (mark2 <= 40){ gradepoint2 = 0; } } int main(){ int mark, mark1, mark2; int gradepoint, gradepoint1, gradepoint2; cout <<"Please enter your marks for English. "; cin >> mark; grade(mark); cout <<"Please enter your marks for Maths. "; cin >> mark1; grade1(mark1); cout <<"Please enter your marks for Science. "; cin >> mark2; grade2(mark2); cout << gradepoint + gradepoint1 + gradepoint2; return 0; } #包括 使用名称空间std; 空隙等级(整型标记){ 国际评分点; 如果(标记>=81){ 评分点=10; } 如果(mark>=61&&mark=41&&mark=61&&mark1=41&&mark1=61&&mark2=41&&mark2,c++,function,C++,Function,,这里是代码的工作版本,只需最少的编辑: #include <iostream> using namespace std; int grade(int mark){ int gradepoint; if (mark >= 81) { gradepoint = 10; } if (mark >= 61 && mark <= 80) { gradepoint = 8; } if (mark >= 41
#include <iostream>
using namespace std;
int grade(int mark){
int gradepoint;
if (mark >= 81) {
gradepoint = 10;
}
if (mark >= 61 && mark <= 80) {
gradepoint = 8;
}
if (mark >= 41 && mark<= 60) {
gradepoint = 6;
}
if (mark <= 40){
gradepoint = 0;
}
return gradepoint;
}
int grade1(int mark1){
int gradepoint1;
if (mark1 >= 81) {
gradepoint1 = 10;
}
if (mark1 >= 61 && mark1 <= 80) {
gradepoint1 = 8;
}
if (mark1 >= 41 && mark1 <= 60) {
gradepoint1 = 6;
}
if (mark1 <= 40){
gradepoint1 = 0;
}
return gradepoint1;
}
int grade2(int mark2){
int gradepoint2;
if (mark2 >= 81) {
gradepoint2 = 10;
}
if (mark2 >= 61 && mark2 <= 80) {
gradepoint2 = 8;
}
if (mark2 >= 41 && mark2 <= 60) {
gradepoint2 = 6;
}
if (mark2 <= 40){
gradepoint2 = 0;
}
return gradepoint2;
}
int main(){
int mark, mark1, mark2;
cout <<"Please enter your marks for English. ";
cin >> mark;
cout <<"Please enter your marks for Maths. ";
cin >> mark1;
cout <<"Please enter your marks for Science. ";
cin >> mark2;
cout << grade(mark1) + grade1(mark1) + grade2(mark2);
return 0;
}
您的函数
void grade 1(int mark1)
到void grade 3(int mark3)
不要返回gradepoint
。相反,他们会设置变量gradepoint
的值。如果gradepoint
是一个全局变量,但它不是全局变量,这将是很好的。这些变量在main
和grade1
到grade3
中本地共存,并且除了相同的名称外,没有任何其他内容(这很好,因为它们在不同的范围内定义)
结果错误的原因是这些grade
函数从未实际设置主函数中那些gradepoint
变量的值。因此这些数字仍然未定义,这意味着它们的位是随机设置的(实际上不是随机的,只是未定义的行为)因此,它们可能真的很大,总和可能只是看起来像一个随机的大数字
最好、最干净的解决方案是让函数返回等级点
。然后您只需要一个函数
#包括
使用名称空间std;
整数计算分数(整数分){
如果(标记>=81){
返回10;
}
如果(标记>=61){
返回8;
}
如果(标记>=41){
返回6;
}
返回0;
}
int main(){
int mark_英语、mark_数学、mark_科学;
不懂英语;
数学不及格;
无法标记科学;
int gradepoint_english=计算成绩点(mark_english);
int gradepoint_数学=计算分数(mark_数学);
int gradepoint_science=计算成绩(mark_science);
CUT给出相同的名称并不能使它们成为同一事物。请阅读你最喜欢的C++书籍中的词法范围,以及如何从函数中返回值。因为函数是相同的,所以可以只调用一个并调用它三次。应该阅读OOP。这可以帮助您清理代码。此外,还可以返回值。您的函数,因此更容易不使用void
作为函数的返回类型。
#include <iostream>
using namespace std;
int grade(int mark){
int gradepoint;
if (mark >= 81) {
gradepoint = 10;
}
if (mark >= 61 && mark <= 80) {
gradepoint = 8;
}
if (mark >= 41 && mark<= 60) {
gradepoint = 6;
}
if (mark <= 40){
gradepoint = 0;
}
return gradepoint;
}
int main(){
int mark, mark1, mark2;
cout <<"Please enter your marks for English. ";
cin >> mark;
cout <<"Please enter your marks for Maths. ";
cin >> mark1;
cout <<"Please enter your marks for Science. ";
cin >> mark2;
cout << grade(mark) + grade(mark1) + grade(mark2);
return 0;
}