我正在嘗試撰寫斐波那契生成器的代碼,到目前為止,我已經能夠計算并得到準確的結果,但我一直收到尾部逗號,我想在結果的末尾添加一個句號(.)。
#include <stdio.h>/span>
int f1=0,f2=1,i,sum=0, n, a;
printf("Please enter the number for Fibonacci numbers.
")。)
scanf("%d"/span>,&n)。
if(n==0){
printf("%d."/span>,n)。
}
else if(n==1){
a = n-1;
printf("%d, %d.",a,n)。
}
else{
for(i=0;i<=n;i ){
printf("%d, ",f1);
sum = f1 f2。
f1 = f2。
f2 = sum;
}
}
return 0;
}
例如,n = 6
我想要。 0, 1, 1, 2, 3, 5, 8.
我之前得到的是什么。 0, 1, 1, 2, 3, 5, 8,
uj5u.com熱心網友回復:
從評論中獲取想法:
// I'd prefer unsigned as negative numbers are meaningless anyway。
unsigned int f1 = 0,f2 = 1。
unsigned int n = 7;
printf("0"); //0被列印在*任何*情況下。
while(--n) //or with for loop from 0 as long as < (not <= any more!)
//注意第一個值*已經列印出來了。
{
printf(", %d", f2); //預設逗號,一個值已經在那里了。
//f2: 現在使用兩個中較大的那個,。
//由于小的*已經被列印出來了。
unsigned int sum = f1 f2; //(將范圍限制在它的地方
//實際需要)。
f1 = f2;
f2 = sum;
}
puts("。")。
獎勵:不再需要特殊情況了......
。uj5u.com熱心網友回復:
只要從第二個數字開始回圈就可以了 :-)
else{ else{
printf("0"); //此處為0。
for(i=0; i<=n; i ){ for(i=1;i<=n;i ){ //從1開始
printf("%d, ",f1); printf(", %d",f1); //change order
sum = f1 f2; sum = f1 f2;
f1 = f2; f1 = f2。
f2 = sum; f2 = sum。
} }
printf(" 。
"); //span>添加周期。
} }
uj5u.com熱心網友回復:
如果是我,我會保持代碼的簡單性,我不會使用負指數,也不會從位置1而不是0開始。
#include <stdio.h>/span>
int main(){
//總是初始化變數,整數不需要初始化。
//我們使用long,因為Fibonacci數可以很快變得很大。
long long int f1=0, f2=1, iterations=0;
printf("Please enter the number for Fibonacci numbers.
")。)
if(scanf("%lld",&iterations)! =1){
//這意味著我們未能讀取一個數字。
puts("輸入有問題,退出。"/span>)。
return -1。
}
// iterations; // uncomment if you want iterations 1 Fibonacci numbers.
for(long long int i=0; i< iterations; i){
printf("%lld"/span>,f1);
int f3=f1 f2。
f1=f2。
f2=f3。
if(i<iterations-1){
printf(", ") 。
}
}
if(iterations>0){
puts("。")。
}
return 0;
要編譯和運行:
martyn@Atlas:~$ gcc Deleteme.c
martyn@Atlas:~$ ./a.out
請輸入斐波那契數字的數量。
6
0, 1, 1, 2, 3, 5.
martyn@Atlas:~$
注意,你的原始程式輸出的是7個斐波那契數,而不是6個。如果你想比你輸入的數字多1個,那么就在回圈之前增加iterations,做法是 iterations;
uj5u.com熱心網友回復:
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char **argv)
{
int n = argc > 1 ? strtol(argv[1], NULL, 0) : 10;
int f[2] = {1,1}。
while( n-- ) {
printf("%d%s"/span>, f[0], n ? ", "/span> : ".
")。)
int t = f[0] f[1] 。
f[0] = f[1] 。
f[1] = t。
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/312041.html
標籤:
