代码中的某个逻辑错误,无法确定在哪里
Logic error somewhere in code, cannot figure out where
你好,我正在编写一个小程序,该程序允许用户为多个学生输入三个测试分数,然后计算学生平均值,一旦用户给出no(n)作为答案,则给出一个字母分数,然后给出每个测试的班级平均值。由于某种原因,我得到了一个非常大的总测试3(totest3)的数字。我已经看了将近一个半小时的代码,但我找不到错误。
总测试1到3的公式都是相同的,问题会在其他地方吗?
以下是我迄今为止尝试做的事情:
-改变平均变量
-将类别平均值更改为仅总平均
-将测试1或测试2的数字添加到总测试3而不是测试3。
这是命令提示符下的输出。
任务#13
你好,学生#1
请输入测试1一级
请输入测试2一级
请输入测试3一级
您的平均值为:1
你的成绩是F
你想给另一个学生打分吗?(y/n)n
以下是测试1-3 的平均值
测试1的平均值为:1
测试2的平均值为:1
测试3的平均值为:335796348684545909624128047159363492209569460693822234007169656776676343892388700682743994958250866930761698240071785044744499802983634115896048847444054604417096147799499822538367180374657350038129751972987645105499446376379659139781953069252608
进程退出,返回值为0
按任意键继续。
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main ()
{
cout<<"Jon Grezda CS 12 Wednesday 6-8pm"<<endl;
cout<<"Assignment #13"<<endl;
double test1, test2, test3, average; //test1/2/3, test scores, Average: average of test scores
double tottest1, tottest2, tottest3, avg1, avg2, avg3; //tottest1/2/3, avg# average for first second or third test
int student=0, avgvar; //average variable, Student number
char grade, ans; // Holds a letter grade, holds a response to a question
do{
student=student+1;
cout<<"Hello Student #"<<student<<endl;
cout<<"Please input test 1 Grade ";
cin>> test1;
cout<<"Please input test 2 Grade ";
cin>> test2;
cout<<"Please input test 3 Grade ";
cin>> test3;
average=(test1+test2+test3)/3.0;
cout<<setprecision(0)<<fixed;
cout<<"Your Average is: "<<average<<endl;
tottest1=tottest1+test1;
tottest2=tottest2+test2;
tottest3=tottest3+test3;
// Determine the letter grade. What grade will be assigned?
if (average > 0 && average < 60)
grade = 'F';
else if (average >= 61 && average < 70)
grade = 'D';
else if (average >= 70 && average < 80)
grade = 'C';
else if (average >= 80 && average < 90)
grade = 'B';
else if(average >= 90 && average <101)
grade = 'A';
else
{
cout << "We do not give scores higher than 100 or lower than 0.n"; // Is the score valid?
grade = '-';
}
cout << "Your grade is " << grade << endl;
cout<<"Do you want to grade another student? (y/n)";
cin>>ans;
cout<<"n";
} while(ans=='y');
if (ans=='n')
{
avgvar=student;
avg1=tottest1/avgvar;
avg2=tottest2/avgvar;
avg3=tottest3/avgvar;
cout<<setprecision(0)<<fixed;
cout<<"here are the averages for tests 1-3n";
cout<<"average for test 1 is: "<<avg1<<endl;
cout<<"average for test 2 is: "<<avg2<<endl;
cout<<"average for test 3 is: "<<avg3<<endl;
}
}
/*
*/
您的问题发生在这些行中;
tottest1=tottest1+test1;
tottest2=tottest2+test2;
tottest3=tottest3+test3;
您声明了变量totest1、totest2和totest3,但没有给它们赋值。您的程序为这些变量留出了一些内存,但它没有在这些内存点中放置值,所以它们只是被垃圾填满了。当您尝试通过向变量添加test1/2/3来为其赋值时,您会向那些未初始化的内存插槽中存储的任何垃圾添加一些有意义的内容。结果是毫无意义的。
解决方案:当您声明一个变量时,请确保使用一些值对其进行初始化,例如0。
看起来并不是在初始化变量。这样做,你会得到更可预测的结果。最初可能将它们设置为0。
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 无法在我的堆排序代码中找到错误.无法正确执行.C++
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 错误:无法解析对重载函数的引用;你的意思是调用它吗?
- VI工作室代码错误无法打开输出文件主.exe
- 为什么即使我声明了朋友类,我也会收到错误"无法访问类中声明的私人成员"
- JavaCPP 错误:无法将参数"1"的"char*"转换为"Abc*
- 构建失败错误:无法使用 qibuild 构建C++ SDK Helloworld
- v8::HandleScope::CreateHandle() # 中的致命错误无法在没有 HandleScope 的情
- CMake 错误:无法确定目标的链接语言
- 无法确定未解决的外部错误来自何处
- Xalanc转换错误:无法确定文件的基本路径名(,第0,第0列)
- 运行时错误,无法确定原因
- 类定义中的分段错误无法确定在哪里
- std::bind() 错误:无法确定重载函数"boost::asio::io_service::run"的哪个实例
- 代码中的某个逻辑错误,无法确定在哪里
- 类声明错误:上下文信息不足,无法确定类型
- CMake CLion 问题 - 错误:无法确定目标"XYZ"的链接语言
- 逻辑错误:无法确定分割错误的原因
- CMake错误:CMake无法确定目标myapp的链接器语言