C++ 返回菜单C+时如何不更新开关语句+;
输入数字后,当我返回菜单并计算出正确的和时,它输出。但当我再次返回并再次输入case2时,输出值会加倍 示例:我输入1,2,3,4,5 cin>>返回//返回菜单//选择2。求和//求和为15//再次返回菜单选择2//现在的求和为4//同时也是平均值的两倍 我还没有完成其他部分的学习,因为我的教授希望我们使用函数。我如何解决这个问题,使返回时的值不加倍?还有一件事,我的教授想在我选择案例2-5时显示错误信息,而不是先选择案例1来输入数字C++ 返回菜单C+时如何不更新开关语句+;,c++,C++,输入数字后,当我返回菜单并计算出正确的和时,它输出。但当我再次返回并再次输入case2时,输出值会加倍 示例:我输入1,2,3,4,5 cin>>返回//返回菜单//选择2。求和//求和为15//再次返回菜单选择2//现在的求和为4//同时也是平均值的两倍 我还没有完成其他部分的学习,因为我的教授希望我们使用函数。我如何解决这个问题,使返回时的值不加倍?还有一件事,我的教授想在我选择案例2-5时显示错误信息,而不是先选择案例1来输入数字 #include<iostream> #inc
#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
int list(int *listinput);
int printSum(int array[],int a);
int printAverage(int array[],int inputSize);
int ave, sum = 0;
main(){
int input,menu,low,high;
int sum1;
char r;
int array[100];
cout << "Enter how many nos to be input: " << endl;
cin >> input;
do {
cout << "\nMENU" << endl;
cout << "1.Input a list" << endl;
cout << "2.Sum" << endl;
cout << "3.Average" << endl;
cout << "4.Lowest Number" << endl;
cout<<"5.Highest Number"<<endl;
cout<<"6.Exit"<<endl;
cout<<"Select from the menu:";
cin>>menu;
switch(menu){
case 1:
cout<<"\nEnter "<<input<<" nos: ";
for(int i=0;i<input;i++){
list(&array[i]);
}
cout<<" The inputted nos: ";
for(int i=0;i<input;i++){
cout<<" "<<array[i];
}
cout<<"\nEnter r/R to return to the menu";
cin>>r;
system("cls");
break;
case 2:
cout<<"The Sum is: "<<printSum(array,input);
cout<<"\nEnter r/R to return to the menu";
cin>>r;
system("cls");
break;
case 3:
cout<<"Average is: "<<printAverage(array,input);
cout<<"\nEnter r/R to return to the menu";
cin>>r;
system("cls");
break;
case 4:
low=array[0];
for(int i=0;i<input;i++){
if(low>array[i])
low=array[i];
}
cout<<"Lowest Number is: "<<low;
cout<<"\nEnter r/R to return to the menu";
cin>>r;
system("cls");
break;
case 5:
high=array[0];
for(int i=0;i<input;i++){
if(high<array[i])
high=array[i];
}
cout<<"Highest Number is: "<<high;
cout<<"\nEnter r/R to return to the menu";
cin>>r;
system("cls");
break;
case 6:
break;
default:
cout<<"Invalid input";
}}
while(r=='r'||r=='R');
getch();
}
int list(int *listinput){
cin>> *listinput;}
int printSum( int array[],int a )
{
for (int i = 0; i <a; i++)
{
sum += array[i];
}
return sum;
}
int printAverage( int array[],int inputSize )
{
for (int i = 0; i <inputSize; i++)
{
sum += array[i];
ave=sum/inputSize;
}
return ave;
}
#包括
#包括
#包括
使用名称空间std;
int list(int*listinput);
int printSum(int数组[],int a);
int printAverage(int数组[],int inputSize);
int ave,总和=0;
main(){
int输入,菜单,低,高;
int sum1;
字符r;
整数数组[100];
不能输入;
做{
cout您的基本问题是变量sum是全局的-这意味着在调用函数printsum后,它的值被保留
您应该在printsum函数中声明sum;然后它将是一个局部变量。这意味着您每次都会得到一个“新”变量。一般来说,如果可以的话,最好使用局部变量;全局变量几乎总是不好的样式或完全错误。此代码的格式或缩进不太好,这使得它很难阅读。我认为nk与“问题”相比,代码是一件轻而易举的事。我开始修复代码,但修复所有代码是一场噩梦。我建议现在结束这个问题。。。