问题:编写函数 int fun(int x, int *pp)。其功能是,求出x的所有奇数因子,并按照从小到大的顺序放在pp指向的内存中,函数返回值为这些整数的个数。若x的值为30, 数组中的数为1,3,5,15,函数返回4。 详见 实验指导书
实验目的:学会利用指针解决问题
实验内容:求出一个数所有的奇数因子
/* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: factor.cpp
* 作 者: 贺利坚
* 完成日期: 2011 年 12 月 13 日
* 版 本 号: v1.0
* 对任务及求解方法的描述部分
* 输入描述:一个整数x
* 问题描述:输出x的所有奇数因子
* 程序输出:x的所有奇数因子及其个数
*/
#include <iostream>
using namespace std;
int fun(int x, int *pp) //这种风格不好,要象大家写的那样,将自定义函数放在main函数之后
{
int k=0;
for(int i=1;i<x;i++)
{
if(i%2!=0&&x%i==0)
{
*(pp++)=i; //p++和k++都做,一起往后走
k++;
}
}
return k;
}
int main(void)
{
int a[1000],x,n;
cin>>x;
n=fun(x,a);
cout<<x<<"的奇因子共有"<<n<<"个,分别是:";
for(int i=0;i<n;i++)
cout<<a[i]<<'';
cout<<endl;
return 0;
}
fun函数还可以有很多种写法:
int fun(int x, int *pp)
{
int k=0;
for(int i=1;i<x;i+=2) //i+=2,所有偶因子一下子全不考虑了
{
if(x%i==0)
{
*(pp+k)=i; //同学们大多是这样做的
k++;
}
}
return k;
}
指针也没有那么可怕。只要搞懂了,一切都是纸老虎。