请大佬帮忙对我这道题做出改正
我的代码是:#include<stdio.h>
int main()
{
int n;
printf("你想知道斐波那契数列前几项?(1<= n <=46)");
scanf("%d", &n);
int i,j;
int num, sum = 0;
num = 1;
int flag = 0;
for (i = 1;i <= ((n % 5) + 1);i++)
{
for(j = 1;j <= 5;j++)
{
sum += num;
num = sum;
printf("%d", num);
flag++;
}
putchar('\n');
}
return 0;
}
"exm1.c" 42L, 392C 18,1-8 顶端
#include <stdio.h>
int main() {
printf("你想知道斐波那契数列前几项?(1<= n <=46): ");
int n;
scanf("%d", &n);
int num;
num = 1;
num = 1;
for(size_t i = 2; i < n; ++i) {
num = num + num;
}
for(size_t i = 0; i < n; ++i) {
if(i != 0 && i % 5 == 0) puts("");
printf("%d ", num);
}
puts("");
return 0;
}
本帖最后由 jackz007 于 2022-9-28 22:58 编辑
#include <stdio.h>
int fib(int n)
{
return (n < 3) ? 1 : fib(n - 1) + fib(n - 2) ;
}
int main(void)
{
int d , i , n ;
printf("你想知道斐波那契数列前几项 (1 <= n <= 46) : ") ;
scanf("%d" , & n) ;
for(i = 1 ; i < n + 1 ; i ++) d = fib(i) ;
for(i = 0 ; i < n ; i ++) {
if(i % 5) printf(" , " , d) ;
if(i && ! (i % 5)) printf("\n") ;
printf("%10d" , d) ;
}
printf("\n") ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
你想知道斐波那契数列前几项 (1 <= n <= 46) : 35
1 , 1 , 2 , 3 , 5
8 , 13 , 21 , 34 , 55
89 , 144 , 233 , 377 , 610
987 , 1597 , 2584 , 4181 , 6765
10946 , 17711 , 28657 , 46368 , 75025
121393 , 196418 , 317811 , 514229 , 832040
1346269 , 2178309 , 3524578 , 5702887 , 9227465
D:\\C> 人造人 发表于 2022-9-28 22:51
大佬,还得是你 折折星 发表于 2022-9-28 23:05
大佬,还得是你
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main() {
printf("你想知道斐波那契数列前几项?(1<= n <=46): ");
size_t n;
scanf("%lu", &n);
if(n < 1 || n > 46) {fputs("输入错误!\n", stderr); exit(-EINVAL);}
size_t num = {0, 1, 1};
for(size_t i = 0; i < n; ++i) {
num = num;
num = num;
num = num + num;
if(i != 0 && i % 5 == 0) puts("");
printf("%lu ", num);
}
puts("");
return 0;
}
人造人 发表于 2022-9-28 23:07
雾草这个也得劲{:10_257:} 人造人 发表于 2022-9-28 23:07
大佬为什么习惯用++i不用i++呀 折折星 发表于 2022-9-28 23:09
雾草这个也得劲
改一改,我查了一下,size_t 对应的是 %zu
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main() {
printf("你想知道斐波那契数列前几项?(1<= n <=46): ");
size_t n;
scanf("%zu", &n);
if(n < 1 || n > 46) {fputs("输入错误!\n", stderr); exit(-EINVAL);}
size_t num = {0, 1, 1};
for(size_t i = 0; i < n; ++i) {
num = num;
num = num;
num = num + num;
if(i != 0 && i % 5 == 0) puts("");
printf("%zu ", num);
}
puts("");
return 0;
}
折折星 发表于 2022-9-28 23:10
大佬为什么习惯用++i不用i++呀
这个习惯来自于C++
在C语言中 i++ 和 ++i 没有区别
在C++中,如果 i 是一个 class 的话,一般来说 ++i 的效率要高于 i++,如果 i 不是 class 的话,和C语言中的一样
人造人 发表于 2022-9-28 23:16
这个习惯来自于C++
在C语言中 i++ 和 ++i 没有区别
在C++中,如果 i 是一个 class 的话,一般来说 ++i...
哦哦哦好,我明白了!
页:
[1]