问题描述
- 不能运行,什么地方出错了
-
#include
int val1898(int [],int);
main(){
int i,j,r=0;
bool flag;
int *a=new int [r];
for(i=2;i<=2000;i++){
for(j=i/2;j>=2;j--){
if(i%j==0)
flag=false;
else{
flag=true;
a[r++]=i;
}} } val1898(a,r); return 0;
}
int val1898(int b[],int r){
int x[r-1],i,s=0,j;
for(i=0;i<r-1;i++)
x[i]=b[i+1]-b[i];
for(i=0;i<r-1;i++){
for(j=0;j<r-1;j++){
s=x[i]+x[j];
if(s==1898)
printf("%d---%d",i,j);
}
}
return 0;
}
解决方案
重载定义产生了二义性,以至于无法编译。
两个函数的返回类型一样、形参类型和形参数量都一样。编译时认为两个函数是重复定义的错误。
编译时,重载函数的形参的名称是忽略不计的。
解决方案二:
根本就不能编译。你的代码基本不能在任何一个现代的C++编译器上编译,像main函数不指定返回值,以及定义变量不初始化等等,这些都是30年以前遗留下来的陋习。
当然这不是你的责任,我只能说你的老师很坑。
解决方案三:
粗略一看,第一行include没有写引入哪些库函数啊
二。int main(){
return 0;
}
这样写比较好
解决方案四:
还有printf是C语言的专用
时间: 2024-09-08 15:25:40