一:求1—1000之间的完数;
1:了解完数,(因子之和等于数本身)
使用循环结构,得出可以被这个数之前的数都可以除干净的数,
切将其因子求和,后返回。
2:返回子函数,与本数比较是否相等。
//求完数
#include<stdio.h>
int factorsum(int number);
int main()
{
int i,m,n,number;
printf("Eentern m n(m>=1,n<=1000):");
scanf("%d%d",&m,&n);
printf("完数为:");
for(i=m;i<=n;i++) //对n m之间的数一一带入子函数
if(factorsum(i)==i)
printf("%d\t",i);
printf("\n");
return 0;
}
//求因子之和子函数
int factorsum(int number)
{
int q,sum,x;
sum=0;
for(q=1;q<number;q++){ //循环求因子和
x=number%q;
if(x==0)
sum=sum+q;}
return sum;
}
二:求一组数的逆数
1:开始解决时对逆序数的个数判断有说模糊。
在翻阅完书本后,可以用do while语句
设置结束点,比如给了一组数,number=number/10
这样子就可以在这组数循环时出现number=0的状态
样就可以用while语句结束。
2:在累加余数时,发现用原数*10后就解决了将余数排序输出。
# include <stdio.h>
int reserch(int number);
int main(void)
{
int n,p;
printf("Entern a number:");
scanf("%d",&n);
p=reserch(n); //调用子函数
printf("%d\n",p);
return 0;
}
/*写逆子函数*/
int reserch (int number)
{
int q,x;
if(number>0)
x=1;
else
x=-1;
q=0;
do{
q=q*10+number%10; //求逆序数
number=number/10;
}
while
(number!=0); //循环终止条件
return q*x;
}
发现在一些细节方面,总是模棱两可,如调用函数的函数名转换,
返回值的直接调用。number在函数表头中就是开了空间,但它的数字
可以任意赋值。
1求完数。2求逆。
原文:https://www.cnblogs.com/28183311141-/p/ju9j9j9.html