//11、编写一个程序,求出一个给定数字的所有因子。如72=2*2*2*3*3(用函数调用) //这是书上的答案,感觉比我写的好,不过有点太多了,需要认真去看 /*#include<stdio.h> void factors(int number)//因为是直接在被调函数中输出,所以不需要返回值 { int i,factor; for(i=2;i<=number;i++) { if(number%i==0) { factor=i; break; } } printf("%d*",factor); if(number!=i)//判断此时的i值也就是因子是不是数本身,如果不是,就进行递归调用, number=number/i;//直到因子等于原来的数除以先前所有的因子所剩下的值 { //计算除以一个因子后所剩下的值 factors(number);//进行递归调用 } else { putchar(‘\b‘);//‘b‘表示退格,目的是去掉最后一个多余的* putchar(‘ ‘);//在最后输出空格,便于观察结果 } } int main() { int aa; printf("\nPlease enter a number \n"); scanf("%d",&aa); printf("%d=",aa); factors(aa);//将值直接传过去,在被调函数进行计算,此处是直接调用被调函数, return 0; //所以没有返回值,也就不需要再在主函数中进行接收 } */ //这是我写的 #include<stdio.h> void all(int x)//因为是直接在被调函数中输出,所以不需要返回值 { int i; for(i=2;i<=x;i++)//用一个for循环来进行穷举 { if(x%i==0)//如果i能被整数,说明i是它的一个因子 { printf("%d*",i);//输出这个因子的值 all(x/i);//进行递归调用 break;//跳出循环体,这个必须要写,如果不跳出循环体的话,结果就会出错 } } } int main(void) { int n; scanf("%d",&n); printf("%d=",n); all(n);//将值直接传过去,在被调函数进行计算,此处是直接调用被调函数,所以没有返回值, putchar(‘\b‘);//也就不需要再在主函数中进行接收,‘b‘表示退格,目的是去掉最后一个多余的* printf(" ");//在最后输出空格,便于观察结果 return 0; }
//12、Fibonacci数列的前两个数为1,1,以后每一个数都是其前两个数之和。 //求Fibonacci数列中的前20个数。用数组存放并按一行10个数的格式输出 /*#include<stdio.h> int main() { int fibo[20]={1,1}; int i; for(i=2;i<20;i++) fibo[i]=fibo[i-1]+fibo[i-2]; for(i=0;i<20;i++) {printf("%d ",fibo[i]); if((i+1)%10==0) printf("\n"); } return 0; } */
本文出自 “鹏哥的博客” 博客,谢绝转载!
原文:http://pengge666.blog.51cto.com/11766700/1892128