精华内容
下载资源
问答
  • 如何用C语言递归、递归的实现斐波那契数列的编写 什么是斐波那契数列???? 记得高中数学课本封面上有这么一个数列:1 1 2 3 5 8 13 21 34 55 89 … 年轻的我们当时以为这只是一个简单的随机数列,从没想过这...

    如何用C语言递归、非递归的实现斐波那契数列的编写

    什么是斐波那契数列????

    记得高中数学课本封面上有这么一个数列:1 1 2 3 5 8 13 21 34 55 89 …
    年轻的我们当时以为这只是一个简单的随机数列,从没想过这就是著名的斐波那契数列!那么,什么是斐波那契数列?这个数列是怎么来的呢?
    著名的意大利数学家斐波那契曾提出过一个著名的数学问题“兔子繁殖问题”,简单来说就是一对兔子每个月能繁殖一对兔子,生下来的新兔子能在一个月后具有生殖能力,那么一年以后,我们能有多少对兔子?这就是斐波那契数列出现的原型。
    具体思考如下:第一个月是1对兔子;第二个月是2对兔子,一对最初的和新生的一对兔子;第三个月是3对兔子,最初的一对兔子,和本月他们新生的一对兔子,以及刚刚具有生殖能力的那一对兔子;第四个月是5对兔子,分别是最最开始的那一对兔子,以及他们本月新生的兔子,还有第二个月生下来的那一对兔子,以及这一对兔子本月新生的一对兔子,还有最后一对,是三月份新出生,这个月刚刚具有生殖能力的那一对兔子,一共是5对兔子;就这样一直繁殖下去,5对兔子变8对,8对兔子变13对…,直到世界被兔子占领 ( ̄▽ ̄)/。按照推理,假设兔子不老不死不被人吃,那么每个月的兔子对数,就组成了我们的兔子数列,在这个数列前面加上1之后,就变成了我们最初提到的“斐波那契数列” ——1 1 2 3 5 8 13 21 34 55 89 …

    那么怎么用C语言非递归的实现斐波那契数列的输出呢?

    1. 首先我们需要分析该数列的数学规律:最开始两个数为1、1,第三个数为1+1=2;第四个数为2+1=3;第五个数为3+2=5;第六个数为5+3=8…以此类推,也就是说,从第三个数开始后,当前数字值为前两个数字的和。
    2. 初始化生成一个数组,用来存储你将所生成的数列
    3. 初始化该数组的前两个数,将其赋值为1
    4. 根据公式 arr [ i ] = arr [ i - 1 ] + arr [ i - 2 ],利用for循环为剩下的数组元素赋值
    5. 输出你需要的那一位斐波那契数

    具体C代码如下:

    非递归代码如下

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    
    int fib(int num) {
    	int arr[100] = {0};//初始化我们的斐波那契数组,之后会按顺序存储我们的斐波那契数列
    	//可根据自身需求更改当前数组的大小,比如需要第666个斐波那契数,你可以将数组大小定义为arr[1000]
    	arr[0] = 1;//0号和1号按数列前两位赋值
    	arr[1] = 1;
    	for (int i = 2; i <= 99 ; i++) { //利用for循环生成前斐波那契数列的前100位
    		arr[i] = arr[i - 1] + arr[i - 2];
    	}
    	return arr[num - 1];
    }
    
    int main() {
    	int n=0;
    	printf("您需要斐波那契数列中的哪一位?\n");
    	scanf("%d",&n);
    	int result=fib(n);
    	printf("第%d个斐波那契数为:%d",n, result);
    	return 0;
    }
    
    

    说了非递归的写法,那么斐波那契数列的递归写法是什么呢???

    递归代码如下

    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    
    int fib(int num) {//递归
    	if (num > 2) {
    		return fib(num - 1) + fib(num-2);
    	}
    	return 1;
    }
    int main() {
    	int n=0;
    	printf("您需要斐波那契数列中的哪一位?\n");
    	scanf("%d",&n);
    	int result=fib(n);
    	printf("第%d个斐波那契数为:%d",n, result);
    	return 0;
    }
    
    

    递归和非递归算法的区别

    • 递归代码简单明了,但是调用成本大,耗费时间
    • 非递归代码行数较多,但运算速度更高,运行时间更短哦
    • 可以自己尝试一下求第99个斐波那契数是递归快还是非递归快_____手动_狗头  ̄▽ ̄
    展开全文
  • 怎么用C语言为文件夹添加只读属性

    千次阅读 2008-10-20 09:11:00
    C语言下使用system("attrib +r +h c://xxx.ext");来完成 文件应为隐藏 注意:修改除隐藏外的其他属性时 path时 省略drive: 其格式如下:ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [drive:][path]...
    在C语言下使用system("attrib +r +h c://xxx.ext");来完成 文件应为非隐藏  注意:修改除隐藏外的其他属性时 path时 省略drive: 其格式如下:ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [drive:][path][filename] [/S [/D]]参数说明:  +   设定属性;  -   清除属性;  R   只读;  A   存档;  S   系统文件;  H   隐藏;  [drive:][path][filename]指定欲改变属性的文件夹或文件的路径 
    attrib为dos下修改文件属性的命令  代码如下:#include<stdio.h>#include <stdlib.h>void main(){	system("attrib +r c://data.txt");}
    
    
     可以这样写:attrib +r +h c:/xxx.ext 去除改为-号就好了 比如:你想给文件c:/xxx.ext加上只读和隐藏属性 默认为当前路径;  /S  处理当前文件夹和子文件夹中所有的文件;  /D  处理的项目包括子文件夹 
    展开全文
  • 每条学生纪录由学号(6位数字,同组测试中没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩(闭区间[0, 100]内的整数)组成,每个项目间1个空格隔开。当读到 N=0 时,全部输入结束,相应的结果不要...
  • 请教各位大神:实现创建链表,输出链表两个函数怎么编程序。。。 输入两个降序列,转换成两个升序列,合并成一个升序列,链表实现
  • 比如 #define def(i) i=0 要传入 def(i)这样的才可以,,可是这样参数不就固定死了,或者要为Int 型 具体请看我代码,怎么把一个字符串变成int型呢,比如只有“ i”又想这个宏函数怎么写 ``` #include #...
  • 但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0为假,0为真。所以条件判断语句( if(…)、while(…) )非常灵活,甚至一个指针类型都可以是条件表达式。为了使程序更清晰,我们常常会给出如下的...

    浅谈C语言编程中的布尔bool数据类型

    我们知道在C++里有专门的bool类型,用来表示真或假。但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0为假,非0为真。所以条件判断语句( if(…)、while(…) )非常灵活,甚至一个指针类型都可以是条件表达式。

    为了使程序更清晰,我们常常会给出如下的宏定义:

    typedef int BOOL;

    #define TRUE 1

    #define FALSE 0

    这是最常见的写法,能被任何C语言编译器认可。

    今天我在一段程序里看见这么一行 #include ,这个陌生的头文件还以std打头而且还和bool有关,引起了我的警觉,立刻百度之。得知这是C99标准新增的头文件,意在引入bool类型,使之和C++兼容。随后我看了一下这个头文件的源代码,内容如下:

    /*

    * ISO C Standard: 7.16 Boolean type and values

    */

    #ifndef _STDBOOL_H

    #define _STDBOOL_H

    #ifndef __cplusplus

    #define bool _Bool

    #define true 1

    #define false 0

    #else /* __cplusplus */

    /* Supporting in C++ is a GCC extension. */

    #define _Bool bool

    #define bool bool

    #define false false

    #define true true

    #endif /* __cplusplus */

    /* Signal that all the definitions are present. */

    #define __bool_true_false_are_defined 1

    #endif /* stdbool.h */

    这个头文件很短,而且也很明了,不过我对_Bool这个类型产生的兴趣。又一翻百度,发现这是C99标准引入的新的关键字。对,是关键字,而不是宏定义,也不是typedef。通过sizeof(_Bool);得知这个类型占1个字节,而且无论给这个类型的变量赋任何非0整数值,其值都是1,这也说明了他不是其他整数类型的别名。

    好了,其实说白了,C语言不是没有布尔类型,只能说在C99标准之前没有。现在只要在源文件中包含stdbool.h这个头文件,就可以在C语言里像C++那样使用bool类型了。

    所以如果是C99之前的标准,需要我们自己定义bool,如

    typedef enum {false = 0, true = 1} bool;

    那么我们就来看一下C语言中的相关定义:

    1.FALSE/TRUE与false/true的区别:    false/true是标准C++语言里新增的关键字,而FALSE/TRUE是通过#define,这要用途

    是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:

    #ifndef FALSE

    #define FALSE 0

    #endif

    #ifndef TRUE

    #define TRUE 1

    #endif

    也就是说FALSE/TRUE是int类型,而false/true是bool类型;所以两者不一样的,只不过

    我们在使用中没有这种感觉,因为C++会帮你做隐式转换。

    2.bool的大小与BOOL的区别:bool在C++里是占用1字节,而BOOL是int类型,int类型的大小是视具体环境而定的;所以

    来说:false/true只占用1个字节,而TRUE/FALSE视具体环境而言,以下是BOOL在windef

    .h中的定义:typedef   int   BOOL;

    3.NULL与0的区别:    还是让我们看一下windef.h中NULL的定义:

    #ifndef NULL

    #ifdef __cplusplus//这个是指示是用C++来编译程序

    #define NULL 0

    #else

    #define NULL ((void *)0)

    #endif

    #endif

    所以说:它们没有区别,只不过在C里面会做一个强制类型转换。相关阅读:

    CSS实现背景透明文字不透明兼容各种浏览器有图有真相

    表单文件选择框样式自定义示例

    WordPress中缩略图的使用以及相关技巧

    日常收集JS邮箱验证正则表达式

    javascript实现window.print()去除页眉页脚

    JS实现带缓冲效果打开、关闭、移动一个层的方法

    PHP cdata 处理(详细介绍)

    Java常用的一些多媒体文件基本操作方法简介

    编写轻量ajax组件第三篇实现

    分享7款开源Java反编译工具

    Java使用synchronized修饰方法来同步线程的实例演示

    导致adb无法启动的5种情况和解决方法

    php中过滤非法字符的具体实现

    Excel导入oracle的几种方法

    展开全文
  • 难道在C语言中一个结构不能包含指向自己的指针吗? . . . . 3 1.7 怎样建立和理解非常复杂的声明?例如定义一个包含 N 个指向返 回指向字符的指针的函数的指针的数组? . . . . . . . . . . . . . . 3 1.8 函数只...
  • C语言编程要点

    2017-09-18 00:10:37
    第1章 C语言 8 1.1 什么是局部程序块(local block)? 8 1.2 可以把变量保存在局部程序块中吗? 9 1.3 什么时候一条switch语句比多条if语句更好? 9 1.4 switch语句必须包含default分支吗? 10 1.5 switch语句的...
  • C语言 | 动态内存分配

    2021-04-28 08:45:49
    C语言中,全局变量是分配在内存中的静态存储区的,静态的局部变量,包括形参是分配在内存中的动态存储区的,这个存储区是一个“栈”的区域。 C语言允许建立内存动态分配区域,以存放一些临时的数据,这些数据...

    C语言内存动态分配

    在C语言中,全局变量是分配在内存中的静态存储区的,非静态的局部变量,包括形参是分配在内存中的动态存储区的,这个存储区是一个“栈”的区域。

    C语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为“堆”。

    C语言怎么建立内存的动态分配

    malloc函数

    函数原型
    
    void *malloc(unsigned int size);
    

    其作用是在内存的动态存储区分配一个长度为size的连续空间。形参size的类型定为无符号整型。此函数是一个指针型函数,返回的指针指向该分配域的开头位置。

    calloc函数

    函数原型
    
    void *calloc(unsigned n,unsigned size);
    

    其作用是在内存的动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。

    free函数

    函数原型
    
    void free(void *p);
    

    其作用是释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。

    realloc函数

    函数原型
    
    void *realloc(void *p,unsigned int size);
    

    如果已经通过malloc函数或者calloc函数获得了动态空间,想改变其大小,可以用realloc函数重新分配。

    C99标准把意思malloc、calloc、realloc函数的基类型定为void类型,这种指针称为无类型指针。

    C语言void指针类型

    指向void类型应该理解为指向空类型或者不指向确定的类型的数据。

    把void指针赋值给不同基类型的指针变量时,编译系统会自动进行转换,不必用户自己进行强制转换。

    内存的动态分配主要应用于建立程序中的动态数据结构中。

    以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~

    100道C语言源码案例请去公众号:C语言入门到精通

    展开全文
  • 我看了一些博客,多线程网络编程的是堵塞,也就是 pthread_join函数,可是既然是监听接口怎么堵塞的。 我要做的东西是:监听80端口,然后接收请求,创建一个线程完成相应任务。 我遇到的问题是:阻塞(也...
  • 单片机c语言第讲.pptx

    2020-02-06 07:46:38
    第一讲学单片机需要什么基础 什么是单片机单片机能做什么怎么开始学习单片机 学单片机需要的一些预备知识 C51基础知识 了解单片机学习板系统结构 如何单片机学习板在短时间内掌握51单片机和C语言编程 KEIL工程建立...
  • 【Ref】Windows对文件的读写提供了很丰富的操作手段,如:1. FILE *fp, fstearm...; (C/C++)2. CFile, CStdioFile...;...然而在处理比较大的文件如几十M, 几百M, 甚至上G的文件, 这时再一般手段处理,系统就显的力...
  • 对二叉树几乎没怎么用过,先学下最简单的吧 // // main.cpp // test1 // // Created by lj on 13-4-1. // Copyright (c) 2013年 lj. All rights reserved. // #include #include #include using namespace std; //...
  • C语言实现简易扫雷

    2021-01-26 20:40:29
    1.什么来区分雷与雷; 使用某些特殊字符还是数字呢? 若字符表示,后面又怎么对雷来进行计数呢? 若数字0和1,那么在计数时也会产生1、2、3等数即会产生歧义 2.创建什么数组,字符型?整型? 3.在边界检查...
  • 这样明显有点穷举的意思,怎么确保自己罗列的就是目前所有的在的操作系统? 2.怎么判断当前是否需要引入不同的头文件来确保某些函数在任何系统下都能? 意思是所有用到标准头文件并且自定义函数的都要考虑...
  • C语言几道题目

    2021-05-01 22:28:02
    2)tcpdump等抓包工具是否会? 3)80211协议是否了解? 4)lora是否了解? 5)加解密有多少了解?常用的对称加密算法及对称加密算法 6)栈溢出是怎么回事?字节对齐是否了解? 7)常用的数据结构有哪些?举2个例子说明...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    用C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完备的系统。 综上所述,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。所以...
  • 前面我们知道了什么是递归以及递归是怎么实现的,现在我们就递归来解决一些小问题,本文题目来自PAT浙大版《C语言程序设计(第3版)》题目集 本题要求实现一个计算负整数阶乘的简单函数,并利用该函数求 1!+2!+3...
  • C语言将int类型存入char型

    万次阅读 2018-09-29 07:41:02
    最近在做算法题的时候遇到了一个问题,就是怎么将int类型的值变成当成字符串(字符数组)类型,...itoa是广泛使用的标准C语言和C++语言扩展功能。但因为它是一个标准的C / C++语言功能,因此不能好好的被所有编译器...
  • 你必须知道的495个C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    5.17 说真的,真有机器用非零空指针吗,或者不同类型不同的表示? 地址0上到底有什么? 5.18 运行时的整数值0转换为指针以后一定是空指针吗? 5.19 如何访问位于机器地址0处的中断向量?如果我将指针值设为0...
  • o 6.14 说真的, 真有机器用非零空指针吗, 或者不同类型不同的表达? o 6.15 运行时的 ``空指针赋值" 错误是什么意思? * 7. 数组和指针 o 7.1 我在一个源文件中定义了 char a[6], 在另一个中声明了 extern ...
  • 文章目录1、背景2、变量定义和声明1、局部变量和全局变量2、变量的存储类别3、例题4、内存泄漏 1、背景 2019秋招马上开始了,今天...本系列是针对以前学过C语言,但是后来就没怎么用了的,针对一点基础都没有的...
  • void main() { int i; for(i=1;i;i++) { if(i%5==0&&i%3!=0)//我只知道&&是一假必假,||是一真必真,但是实际中用的时候怎么判断&&还是||还是!呢 { printf("%d\n",i); } } }
  • ------SGISTL库的跨平台可移植版本,在以前有些编译器离符合标准比较远的情况下那时还是有用的,当然目前vc71已经比较接近标准了,故目前不怎么用它了。Boost---------准标准库,功能强大涉及能想的到的大部分特别...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看...里面的printdot函数为自己写的打点函数,C标准的,C标准函数代替一下。参数:transparency是否有背景色printword(intx,inty,char*string,unsignedcharcolor,unsignedc...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 128
精华内容 51
关键字:

c语言非怎么用

c语言 订阅