我的要求是:
您将编写一个C文件,其中包含main函数和下面描述的附加函数。您的程序将开始按顺序调用part1和part2。对于每个部分,你将接收用户的输入并将输出打印到控制台。2各部分的细节将在下面进一步讨论。3请注意输出格式。无论执行是否正确,任何与共享格式的偏差都将受到惩罚。编写一个函数,从命令提示符中读取一个整数作为斐波那契数列的项数。如果输入的数字不是正整数值,则程序将打印一条消息,说明不合格的原因。函数将继续执行,直到获得正确的输入。打印与输入的数字一样多的斐波纳奇数列元素。让函数继续工作,直到获得'*'输入。
在这里,当你输入一个正整数到程序中,它应该显示斐波那契数列的元素,如果它输入一个字符串,浮点数,或负数,我应该给一个警告,但程序应该继续,直到 * a被按下。
我为这个程序做了一些事情,但我正在努力保持程序运行。
下面是我代码:
void calculate_fibonacci_sequence()
{
int eleman;
printf("Enter how many elements of the fibonacci sequence you want to see : ");
scanf("%d", & eleman);
if (eleman <= 0) {
while (eleman <= 0) {
printf("Please enter positive term(s) number: a \n");
scanf("%d", & eleman);
if (eleman > 0) {
break;
}
}
}
if (eleman > 0) {
printf("\n\n");
int i, n, e1 = 1, e2 = 1;
for (i = 1; i <= eleman; i++) {
printf(" %d\n", e1);
n = e1 + e2;
e1 = e2;
e2 = n;
}
}
}
2条答案
按热度按时间z2acfund1#
最好把你的代码分成几个独立的功能块,首先编写一个函数,读取一行输入,然后解析它:
fgets()
从一个给定的文件(在这个例子中,stdin
,即默认的键盘)中读取一整行,并带有一点额外的'\n'
。如果失败,它返回NULL
,所以测试它的返回值是一个好主意。strtol()
将一个字符串解析为long int
,第二个参数给出了解析过程的详细信息,因此它用于检查错误。返回代码按如下方式分组在
enum
中:接下来,编写斐波那契算法:
现在,您的
main()
将非常简单:学分(&也很好看):A Beginners' Guide Away From
scanf()
suzh9iv82#
正在更新您的代码!!!
你一次又一次地使用了很多的if else条件,这使得代码很糟糕。我只是通过do while loop优化了它。
关键是你在打印消息后在你的for循环中执行迭代,所以它在第二次迭代时保留值1。
这里是你的代码的修订版本.........