C Primer+Plus(九)编程练习
1、编写一个函数。函数的3个参数是一个字符和两个整数。字符参数是需要输出的字符,第一个整数说明在每行中该字符的个数,第二个整数说明需要输出的行数。
#include<stdio.h> void showchar(char c,int a,int b) { int i,j; for(i=0;i<b;i++) { for(j=0;j<a;j++) putch(c); putch(10); //为何这不能回车,只是换行? putch(13); } } int main(void) { void showchar(char,int,int); char x='J'; int y=12,z=5; showchar(x,y,z); getch(); return 0; }
2、编写并测试一个函数Fibonacci(),分别使用循环和递归算法完成斐波纳契数列的计算。
#include<stdio.h> long unsigned int Fibonacci1(int n) { if(n==1) return 0; if(n==2) return 1; else return (Fibonacci1(n-1)+Fibonacci1(n-2)); } //递归算法 long unsigned int Fibonacci2(int n) { long int i,a0,a1,ap; i=0; a0=0; a1=1; if(n==1) return 0; if(n==2) return 1; else { while(i<(n-3)) //更新(n-3)次 {ap=a1;a1=a0+a1;a0=ap;i++;} //每次循环,更新前两项的值 return(a0+a1); } } //循环算法 int main(void) { long unsigned int Fibonacci1(int); long unsigned int Fibonacci2(int); int x; int i; printf("input number[0,1000]:\n"); scanf("%d",&x); for(i=1;i<=x;i++) printf("%ld ",Fibonacci1(i)); printf("\n"); getch(); printf("\n"); for(i=1;i<=x;i++) printf("%ld ",Fibonacci2(i)); getch(); return 0; }