问题:编写函数 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; }
指针也没有那么可怕。只要搞懂了,一切都是纸老虎。
时间: 2024-08-01 12:54:25