Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分区中声明的变量快疯了 编写一个代码来计算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 - Fatal编程技术网

分区中声明的变量快疯了 编写一个代码来计算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;
}