您的位置:首页 > 编程语言 > C语言/C++

2011年 下半年 C++程序设计(二十五)

2012-03-08 18:36 218 查看
 
实验目的:学会利用指针解决问题

实验内容:求出一个数所有的奇数因子

* 对任务及求解方法的描述部分

* 输入描述:一个整数x

* 问题描述:输出x的所有奇数因子

* 程序输出:x的所有奇数因子及其个数

* 程序头部的注释结束

 

 

#include <iostream>

using namespace std;

int fun(int x, int *p);

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 *p)

{

 int i=1,j=0,n=0,t,w,m,o;

    if(x==0)

 {

  cout<<"0无奇数因子";

  cout<<endl;

  exit (1);

 }

 else if(x>0)

 {

  while(i<x)

  {

   while(x%i==0)

   {

    while(i%2!=0)

    {

     *(p+j)=i;

     j++;

     n++;

     break;

    }

    break;

   }

   i++;

  }

  for (w=0;w<n;w++)

   for(m=0;m<n-w-1;m++)

    if (*(p+m)>*(p+m+1))

    {

     t=*(p+m);

     *(p+m)=*(p+m+1);

     *(p+m+1)=t;

    }

 }

 else

 {

  while(i<o)

  {

   o=(-x);

   while(o%i==0)

   {

    while(i%2!=0)

    {

     *(p+j)=(-i);

     j++;

     n++;

     break;

    }

    break;

   }

   i++;

  }

  for (w=0;w<n;w++)

   for(m=0;m<n-w-1;m++)

    if (*(p+m)>*(p+m+1))

    {

     t=*(p+m);

     *(p+m)=*(p+m+1);

     *(p+m+1)=t;

    }

 }

 return n;

}

 

 

运行结果

 





 

我输入36,口算奇数因子有三个1,3,9。

运行结果也正确!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ fun 任务 ini io