我的代码给出错误:[Error] invalid conversion from 'int' to 'int*' [-fpermissive] 违规行是
tao_mang(a[50], 10, kq);
为什么会出现错误呢?有人能帮我吗?
下面是我的代码:
//07_Nguyen Quan Bao
//
#include <iostream>
#include <cmath>
using namespace std;
bool so_nguyen_to(int n){
if (n < 2) return false;
for (int i = 2; i <= sqrt(n); i++){
if (n%i==0){
return false;
} else return true;
}
}
void tao_mang (int x[50],int n, int sum){
sum = 0;
for (int i = 0; i < n; i++){
cout <<"Moi nhap so nguyen to thu "<<i<<":\n";
cin >> x[i];
}
for (int i =0; i < n; i++){
if (so_nguyen_to(x[i])){
sum = sum + x[i];
}
}
}
int main(){
int kq, a[50];
tao_mang(a[50], 10, kq);
cout <<"ket qua la: "<< kq << endl;
return 0;
}
我尝试将数组留空,但程序结果仍然错误
代码中的错误出现在函数调用
tao_mang(a[50], 10, kq)
; 中。第一个参数应该是一个数组,但您传递的是 a[50]
,它是数组的元素,而不是数组本身。
这是更正后的代码:
//07_Nguyen Quan Bao
//
#include <iostream>
#include <cmath>
using namespace std;
bool so_nguyen_to(int n)
{
if (n < 2) return false;
for (int i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
return false;
}
}
return true; // Move this line outside of the loop
}
void tao_mang(int x[50], int n, int& sum)
{
sum = 0;
for (int i = 0; i < n; i++)
{
cout << "Moi nhap so nguyen to thu " << i << ":\n";
cin >> x[I];
}
for (int i = 0; i < n; i++)
{
if (so_nguyen_to(x[I]))
{
sum = sum + x[I];
}
}
}
int main()
{
int kq, a[50];
tao_mang(a, 10, kq); // Remove [50] from the first argument
cout << "ket qua la: " << kq << endl;
return 0;
}
所做的更改:
在函数调用
tao_mang(a[50], 10, kq)
; 中,我删除了 [50]
以传递数组本身。
更改了函数签名以通过引用获取 sum 参数 (int& sum),以便对函数内部 sum 所做的更改反映在外部。
现在,您的代码应该可以正常工作了。