第3题 :使用函数输出指定范围内的完数:输入两个正整数m和n(1<=m,n<=1000),输出m~n之间的所有完数,完数就是因子和与它本身相等的数。要求定义并调用函数factorsum(number),它的功能是返回 number的因子和,例如,factorsum(12)的返回值是16(1+2+3+4+6)。试编写相应的程序。
#include<stdio.h>
#include<math.h>
int main(void)
{
int m,n,i;
int factorsum(int number);
printf("输入两个正整数m和n:");
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
if(i==factorsum(i))
printf("%d\n",i);
return 0;
}
int factorsum(int number)
{
int i,sum;
if(number==1)
return 1;
sum=0;
for(i=1;i<=number/2;i++)
if(number%i==0)
sum=sum+i;
return sum;
}
第6题:
使用函数输出一个整数的逆序数:输入一个整数,将它逆序输出。要求定义并调用函数reverse(number),它的功能是返回number的逆序数,例如,reverse(12345)的返回值是54321。试编写相应的程序。
//*使用函数输出一个整数的逆序数*//
#include<stdio.h>
int main(void)
{
int i,t;
int reverse(int number);
printf("输入一个整数:");
scanf("%d",&i);
t= reverse(i);
printf("%d\n",t);
return 0;
}
int reverse(int number)
{
int flag,t;
if(number>=0)
flag=1;
else
{
flag=-1;
number=-number;
}
t=0;
do{
t=t*10+number%10;
number=number/10;}
while
(number!=0);
return flag*t;
}
心得:感觉这次作业好难,拿到题目无从下手,做作业的过程中发现自己对这方面的知识掌握的还是不够好,导致作业完成的特别慢,最后还是借助了外界工具才得以完成。要掌握子函数的定义并调用,课下还得多加练习,对课上讲过的程序没有很好的消化。