心得:这次作业好难哦,我问了好多人模糊的做了出来,可能是对调用函数理解的不够透彻。
/*使用函数输出指定范围内的完数:输入两个正整数m和n(1<=m,n<=1000),输出m~n之间的所有完数, 完数就是因子和它本身相等的数。 要求定义并调用函数factorsum(number),它的功能是返回number的因子和。 例如,factorsum(12)的返回值是16(1+2+3+4+5+6)。试编写相应程序。*/ #include<stdio.h> #include<math.h> int factorsum (int m); int main(void) { int m,n; printf("输入两个正整数m和n(1<=m,n<=1000):"); scanf("%d%d",&m,&n); for(m;m<=n;m++) if(m==factorsum(m)) printf("%d ",m); return 0; } int factorsum (int m) { int x,sum; for(x=1,sum=0;x<=m/2;x++) if(m%x==0) sum=sum+x; return sum; }
/*使用函数输出一个整数的逆序数:输入一个整数将它逆序输出,要求定义并调用函数reserve(number),它的功能是返回number的逆序数。 例如;reserve(12345)的返回值是54321.试编写相应程序。*/ #include<stdio.h> int main() { int m,n; int reverse(int number); printf("请输入m: "); scanf("%d",&m); n= reverse(m); printf("%d ",n); return 0; } int reverse(int number) { int n; n=0; do{ n=n*10+number%10; number/=10; }while(number!=0); return n; }