现在的位置: 首页 > 综合 > 正文

第16周报告2:求奇因子

2013年12月03日 ⁄ 综合 ⁄ 共 794字 ⁄ 字号 评论关闭

问题:编写函数 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;
}

指针也没有那么可怕。只要搞懂了,一切都是纸老虎。

抱歉!评论已关闭.