C++:errorC2234::arraysillegal
#include<iostream>
using namespace std;
int money;int temp=money;
int remain=money;
int a[6]={0};int c[6]={0};
int b[6]={100,50,10,5,2,1};
void PrintArray(int a[],int b[]);//输出结果
void Algo(int &remain,int &c[],int b[]);//多种支付方式的递归算法
int main(){//求最大面值
for(int i=0;i<6;i++)
{
while(temp>=b[i])
{ temp-=b[i];
a[i]++; }
}PrintArray(a,b);
//多种支付方式的递归算法
while(remain>0)
Algo(remain,c,b);
return 0;
}void PrintArray(int a[],int b[])
{
for(int j=0;j<5;j++)
{ cout<<b[j]<<"元"<<a[j]<<"张"<<','; }
cout<<b[j]<<"元"<<a[j]<<"张"<<endl;
}
void Algo(int &remain,int &c[],int b[]){
for(int i=0;i<6;i++){
remain=remain-b[i];
c[i]++;
Algo(&remain,&c[],b[]);
}
}
--------------------Configuration: PayWays - Win32 Debug--------------------
PayWays.cpp(12) : error C2234: '<Unknown>' : arrays of references are illegal
(36)error C2664: 'Algo' : cannot convert parameter 2 from 'int [6]' to 'int *[]' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style
cpp(48) : error C2234: '<Unknown>' : arrays of references are illegal
cpp(52) : error C2059: syntax error : ']'执行 cl.exe 时出错.
PayWays.obj - 1 error(s), 0 warning(s)你的程序,有N多问题,主要是你对C++有很多基本概念不清楚,从语法上至少有两大问题
一,
void Algo(int &remain,int &c[],int b[]);//多种支付方式的递归算法
数组本身就是地址,它不能用引用的,也就是用
void Algo(int &remain,int c[],int b[]);//多种支付方式的递归算法
是可以的,但不能用int &c[]
二,
Algo(&remain,&c[],b[]);
你的调用参数完全不对,因为remain是引用,b,c是数组,所以只能直接
Algo(remain,c,b);
调用函数
三.
cout<<b[j]<<"元"<<a[j]<<"张"<<endl;
你的j作用域是for循环中的,循环退出i就不能用了
而逻辑上
一..
int money;int temp=money;
int remain=money;
这里的 temp=money;没有任何意义(括下面的=money)
对全局变量money,它初始值肯定为0,而temp无论你是否等于money,它也是0,且不影响它后面的值(不是数学表达式,可以作为公式)
二.
你Algo递归逻辑也完全不对,无法看明白你递归逻辑
因为既然用递归,一般就不会有循环了(递归本身就是循环调用)