问答题

改错题
【题目】
以下程序中,函数fun(int m, int fac[], int &p)的功能是:计算参数m(m>2)的所有因子,将这些因子按从小到大的顺序依次存放在数组fac中,将因子个数存放在参数p中,并返回所有因子之和。
正确程序的输入/输出结果如下(下划线部分为键盘输入):
输入一个整数:24
24的所有因子之和为:60
24的各因子为:1 2 3 4 6 8 12 24
含有错误的源程序如下:
1 #include
2 #include
3 int fun(int,int[],int);
4 void main(void)
5 {
6 int n,f[100],p;
7 cout<<"输入一个整数:";
8 cin>>n;
9 cout< 10 cout< 11 for(int i=0;i 12 cout< 13 cout< 14 }
15 int fun(int m,int fac[],int &p)
16 {
17 int i,s;
18 fac[0]=p=1;
19 for(s=1,i=2;i<=sqrt(m);i++){
20 if(m%i=0){
21 fac[p++]=i;
22 s+=i;
23 }
24 }
25 fac[p]=m;
26 s+=m;
27 return fac;
28 }
【要求】
1.打开T盘中myfa.txt文件,将其文本拷贝到文件myfa.cpp中(或将上述程序录入到文件myfa.cpp中),根据题目要求及程序中语句之间的逻辑关系对程序中的错误进行修改。程序中的注解可以不输入。
2.改错时,可以修改语句中的一部分内容,增加少量的变量说明、函数原型说明或编译预处理命令,但不能增加其他语句,也不能删除整条语句。
3.将改正后的源程序文件myfa.cpp必须放在T盘根目录下,供阅卷用。

【参考答案】

第3行 int fun(int,int[],int); 改为int &
第19行 for(s=......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)