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。
运行结果也正确!
相关文章推荐
- 2011年 下半年 C++程序设计(一)
- 2011年 下半年 C++程序设计(十五)
- 2011年 下半年 C++程序设计(二)
- 2011年 下半年 C++程序设计(十六)
- 2011年 下半年 C++程序设计(三)
- 2011年 下半年 C++程序设计(十七)
- 2011年 下半年 C++程序设计(十八)
- 2011年 下半年 C++程序设计(二十一)
- 2011年 下半年 C++程序设计(十九)
- 2011年 下半年 C++程序设计(二十二)
- 2011年 下半年 C++程序设计(五)
- 2011年 下半年 C++程序设计(二十三)
- 2011年 下半年 C++程序设计(六)
- 2011年 下半年 C++程序设计(二十)
- 2011年 下半年 C++程序设计(二十四)
- 2011年 下半年 C++程序设计(二十六)
- 2011年 下半年 C++程序设计(八)
- 2011年 下半年 C++程序设计(二十七)
- 2011年 下半年 C++程序设计(九)
- 2011年 下半年 C++程序设计(二十八)