问题描述
- 编译出错:“choice”: 未声明的标识符 ;“delete”: 不能删除不是指针的对象 1>
-
#include "stdafx.h"
#include
using namespace std;
double capital=0.0;/*将全额capital设置为全局变量,目的是在多次购买时,
下一次的全额不会覆盖上一次的全额值*/
double cal(int num,double quantity)
{
switch(num)
{
case 0 :
return quantity*1.50;//case中有return语句,所以不需要break语句
case 1 :
return quantity*1.70;
case 2 :
return quantity*4.60;
case 3 :
return quantity*0.90;
case 4 :
return quantity*2.50;
case 5 :
return quantity*3.70;
case 6 :
return quantity*7.60;
case 7 :
return quantity*3.90;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"提示:"<
cout
cout
int num_choice;//买了几种水果
while(1)
{
int Y_N;
cout
cin>>num_choice;
if(num_choice==0)//不买东西
{
cout<<"您确定只是看看吗?要不买点吧?继续请按1,退出请按0"<
cin>>Y_N;
if(Y_N==0)
{
cout<<"退出成功!"<
break;
}
else if(Y_N==1)
{}
else
{
cout
}
}
else
{
cout
int *choice=new int[num_choice];//事先不知道购买多少种水果,所以有new的方式申请内存
double *quantity_choice=new double[num_choice];
for(int i=0;i
cin>>choice[i];//输入购买水果的各类编号
cout<<"请输入对应各种水果的重量:"<
for(int j=0;j
cin>>quantity_choice[j];//输入购买水果的重量
for(int i=0;i
capital+=cal(choice[i],quantity_choice[i]);//计算金额
cout
cin>>Y_N;if(Y_N==0) { cout<<"开始结算,请付"<<capital<<endl; break; } else if(Y_N==1) {} else { cout<<"亲!请不要随便按,要按规定输入哦!"<<endl; } } } delete[] choice; choice=NULL; delete[] quantity_choice; quantity_choice=NULL; system("pause"); return 0;
}
解决方案
在你main开始的的地方加上
int *choice;
double *quantity_choice;
对应的
choice=new int[num_choice];//事先不知道购买多少种水果,所以有new的方式申请内存
quantity_choice=new double[num_choice];
不要定义。
另外cal函数应该给switch加上default分支,否则可能出现无返回值的情况
解决方案二:
choice被定义成局部变量了
int *choice = null; //可以定义在设置
if(num_choice==0)//不买东西
时间: 2024-10-31 06:51:04