VC疑问:程序运行结果
发布网友
发布时间:2022-12-30 06:36
我来回答
共1个回答
热心网友
时间:2023-07-15 21:03
你犯了个初学者经典的错误,就是错误地认为函数参数是指针就是指针传递了.
错误发生在input函数,
int input(int *po,int *p,int j)
{ int loop=0,pp;
po=&k[j];
pp=*po;
while(pp>=1)
{*p=pp%10;
p++;
pp=pp/10;
loop++; }
return loop;
}
你这里的po对应的实参是main里面的&number,错误就在这里,你想做的事是让number=k[j], 但你写的却是po=&k[j]; 请注意,这里的po需要是个指针变量,但它仍然是值传递,即input函数里的形参po,实际上只是一个值为number地址的副本,你对它的修改,又怎么会影响到number的值呢?
正确的做法是将po改为int &,即引用传递,程序其他地方也要做相应修改:
int input(int &po,int *p,int j)
{ int loop=0,pp;
po=k[j];
pp=po;
while(pp>=1)
{*p=pp%10;
p++;
pp=pp/10;
loop++; }
return loop;
}
main里面
for(i=0;i<N;i++) /*小写转大写*/
{ver=input(number,array,i); //改成number
inv(array,ver);
exchange(name,ver,array,mname,number);
}
另外load函数里fscanf(fp,"%ld\n",k[i]);
改成fscanf(fp,"%ld\n",&k[i]);