斐波那契数列(循环)
#include <stdio.h>
int main(int argc, const char * argv[]) {
int c=0;
int d=0;
void A(int);
void S(int);
int out=0;
do{
printf("请输入模式:1:第n项;2.前n项和\n");
scanf("%d",&d);
while(d!=1&&d!=2){
printf("请输入正确模式1:第n项;2.前n项和\n");
scanf("%d",&d);
if(d==1||d==2){
break;
}else{
continue;
}
}
printf("请输入n=");
scanf("%d",&c);
while(c<=0){
printf("请输入正确的n=");
scanf("%d",&c);
}
switch(d)
{
case 1:A(c);break;
case 2:S(c);break;
}
printf("继续请按1,退出请按其他数字\n");
scanf("%d",&out);
c=0;
d=0;
}while(out==1);
return 0;
}
void A(int c){
int a=1;
int b=1;
int cnt=2;
int sum=0;
if(c<=2){
printf("第%d项是1",c);
}
else
{
do{
sum=a+b;
a=b;
b=sum;
cnt++;
}while(cnt<=c-1);
printf("第%d项是%d\n",c,sum);
}
}
void S(int c){
int a,b,d;
int sum=0;
int cnt=3;
if(c==1){
printf("前%d项和是1\n",c);
}else if(c==2){
printf("前%d项和是2\n",c);
}else{
for(a=1,b=1,sum=2;cnt<=c;cnt++){
d=a;
b=b+d;
sum=sum+b;
}
printf("前%d项和是%d\n",c,sum);
}
}