第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;}
心得:感觉这次作业好难,拿到题目无从下手,做作业的过程中发现自己对这方面的知识掌握的还是不够好,导致作业完成的特别慢,最后还是借助了外界工具才得以完成。要掌握子函数的定义并调用,课下还得多加练习,对课上讲过的程序没有很好的消化。