第16周报告2(任务3)
实验目的:学会利用指针解决问题
实验内容:求出一个数所有的奇数因子
* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 雷恒鑫
* 完成日期: 2011年 12 月 07 日
* 版本号:
* 对任务及求解方法的描述部分
* 输入描述:一个整数x
* 问题描述:输出x的所有奇数因子
* 程序输出:x的所有奇数因子及其个数
* 程序头部的注释结束
#include <iostream>
using namespace std;
int fun(int x, int *pp);
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;
}
int fun(int x, int *pp)
{
int i=1,j=0,n=0,t,k,m,z;
if(x==0)
{
cout<<"0无奇数因子";
cout<<endl;
exit (0);
}
if(x>0)
{
do
{
while(x%i==0)
{
while(i%2!=0)
{
*(pp+j)=i;
j=j+1;
n=n+1;
break;
}
break;
}
i=i+1;
}while(i<x);
for (k=0;k<n;k++)
for(m=0;m<n-1-k;m++)
if (*(pp+m)>*(pp+m+1))
{
t=*(pp+m);
*(pp+m)=*(pp+m+1);
*(pp+m+1)=t;
}
}
else
{
do
{
z=(-x);
while(z%i==0)
{
while(i%2!=0)
{
*(pp+j)=(-i);