- 博客(21)
- 收藏
- 关注
原创 例题:求第n个斐波那契数(不考虑溢出)
首先我们要知道什么是斐波那契数列,斐波那契数列就是1,1,2,3,5,8,13,21......也就是后一个数是前两个数的和。迭代:迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。用迭代的方法解决这个问题,可以避免很多重复运算,减轻运算量。为了减少运算量,我用的是迭代的方法,什么是迭代呢?当我们要解决累加、累乘等问题的时候就可以用迭代法。
2024-10-23 10:56:51 244
原创 递归----例题
我们输入4,也就是此时n=4,然后进入我们自定义的factorial函数,n>1,所以进入n * factorial(n - 1);此时再次调用,也就是3 * factorial(2);再次调用,也就是2 * factorial(1);这个过程就是递推的过程,然后就要开始回归的过程了,之前调用过的函数并没有运行结束,全部在等待,回归过程就是2*1,然后3*2*1,然后4*3*2*1,最终回到最初的赋值给m,所以此时m=24,这也就算出了4的阶乘。题目:求n的阶乘(不考虑溢出)(用递归的方法)
2024-10-21 16:44:51 147
原创 例题:编辑函数不允许创建临时变量,求字符串长度
题目中说了,在编辑函数的时候不能创建临时变量,所以我们选择了多次调用函数来实现我们的目的。if (*str!= '\0'),当首元素不等于\0的时候说明字符串不为空,至少含有一个元素,然后指针一直往后+1,直到读取到\0,而这个过程一直在执行 return 1 + my_strlen(str + 1),这样就可以求字符串的长度,如果一开始就读取到了\0,说明字符串的长度为0,则return 0;最终len接收,然后打印出来。提醒:“自定义函数的括号里是形参”。
2024-10-17 17:25:32 178
原创 递归----例题
什么是递归呢,所谓递归就是递推和回归,就拿这个例子来讲,当我们输入1234这个数字时,进入我们自定义的Printf函数,然后受到限制条件,然后再进入我们自定义的Printf函数,num/10,也就是num=123,然后再进入我们自定义的函数,一步一步的,直到不受条件约束也就是num不大于9的时候,因为我们输入的是1234,所以也就是直到num=1,这时候就顺利往下进行到了printf("%d ", num % 10);题目:接受一个整型值(无符号),按照顺序打印它的每一位。输出:1 2 3 4。
2024-10-11 00:30:32 178
原创 链式访问——(用printf举例)
为什么上面打印结果是43321呢,首先printf("%d",43)会在屏幕上打印43这个数字,43是两个字符组成的,所以printf的返回值就是2,所以就变成了printf("%d",(printf("%d", 2)));然后呢printf("%d",2)就在屏幕上打印2,2是一个字符,所以printf的返回值就是,所以就变成了printf("%d", 1);然后就在屏幕上打印了1,所以最终的运行结果就是4321。当然这也是链式访问。首先链式访问的定义是:把一个函数的返回值作为另一个函数的参数。
2024-10-09 11:45:59 112
原创 自定义函数判断是否为闰年,把1000~2000的闰年打印出来
闰年:年份是4的倍数,且不是100的倍数的,或者,年份是400的倍数,是闰年。首先我们要知道什么是闰年?
2024-05-12 17:24:10 230
原创 写一个函数判断这个数是不是素数,把100~200之间的素数打印出来
这里我要说明一个小细节,就是看一下return 1所处的位置,为什么它不在for循环里,因为素数是只能被1和它本身整除的数,举个例子吧,假如说此时判断9是不是素数,如果当j=2的时候,m%j不等于0,如果return1在for循环里的话,这时候就判断为素数了,所以只有让j++一直加,加到等于它本身或者它本身的开方的时候,if语句里的条件一直不成立,才能判断这个数是素数。素数:一个大于1的整数,除了1和它本身之外,不能被其他正整数整除,就叫做素数。这个就是打印100~200直接的素数。
2024-05-12 16:16:35 352
原创 自定义一个函数,交换两个整型的值(定义指针变量)
因为调用函数后要对外面主函数的实参发生变化,所以要定义指针变量,int*就是定义指针变量,主函数里的Swap(&a,&b),这里面&a和&b传到自定义函数的形参里去,下面的*pa和*pb指的分别是主函数里定义的a和b,当需要形参的改变需要使实参发生变化时,就需要定义指针变量,这相当于远程调用实参,使得形参的地址和实参的地址相同,指针就相当于地址,否则因为地址不同,形参的改变并不会影响到实参。
2024-05-08 20:13:21 444
原创 自定义函数,比较两个数的大小
这里定义的a和b是实参,当调用自定义的函数时,a和b相当于自定义函数的x和y,这里的m所获取的值就是自定义函数所返回的值。这里定义的x和y是形参,因为要返回一个整数,定义这个函数是int类型。
2024-05-08 19:20:26 444
原创 goto语句
是定时关机命令,system("shutdown -a");strcmp(arr, "我是小狗") == 0是字符串比较,我前面介绍过,有疑惑的小伙伴可以点进我的主页看一看。当输入错误的走goto语句,到again的地方,这里就演绎了goto语句的用法和好处。给大家分享一个好玩的例子:一个定时关机程序,输入我是小狗,取消关机,输入错误,继续输入,直到时间结束,电脑关机。这两个中间可以写任意内容,标记名也可以在goto语句后面,位置随意。今天给大家分享一个小知识----goto语句。
2024-04-10 20:57:53 322 1
原创 system函数
system的功能是发出一个DOS命令,所谓DOS命令就是运行命令,它以命令行的形式,靠输入命令来进行人机对话,并通过命令的形式把指令传给计算机,以实现对计算机的操作。言简意赅就是发送一个命令给计算机,达到你想要的目的,命令行写在system()的括号里,用双引号括起来。system("shutdown -s -t")可以实现电脑定时关机,定时的时长写在-t加个空格后面,单位是秒;system("shutdown -a")可以实现取消关机命令,但必须在定时期限内有效;windows操作系统下。
2024-04-10 20:32:45 205 1
原创 字符串比较函数strcmp
strcmp的运用形式是:strcmp(字符串1,字符串2),括号里的两个字符串进行比较,若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。代码里定义的flag作为一个标记,如果flag等于1的话,就说明输入正确了,直接运行break,结束程序,如果等于0的话,就说明输错三次,也结束程序了。输入密码,三次机会,输入正确或者输入三次都错误结束程序。今天介绍一个字符串比较函数———strcmp。
2024-04-08 19:42:46 275
原创 关于getchar 和scanf
首先我们输入了密码是123,这是123已经被scanf读取存到了pass中,紧接着我们按下回车键等待着输入Y/N,可是代码直接运行结束了,这是因为当我们按下回车键时,因为按下回车键相当于输入了一个换行符,缓冲区里有了\n,scanf不会读取\n,所以紧接着往下运行,\n就被getchar读取了,所以此时ch的值是\n,自然走到else确认失败。加一个while循环,一直让getchar把缓冲区剩下的东西读取完,因为读取的元素不需要干什么用,所以循环里是空的,不需要加什么东西。老样子,以例子说明,上代码。
2024-04-01 19:37:19 145
原创 do while循环语句
do-while循环语句的执行流程:循环语句——>判断语句——>循环语句,一直按照这个流程走下去直至条件不成立,结束循环。这里有个do语句,就决定了语句刚开始执行必定要先执行循环语句,再进行判断。今天简单介绍do while 循环语句,还是以例子引入。举例:用do while循环打印1~10。不要忘了while括号后面的分号。}while(判断语句);
2024-03-27 19:52:50 233 1
原创 for循环
介绍:for后面的括号里有三个语句,用分号隔开,第一个语句为初始化语句,第二个语句为判断语句,第三个语句为调整语句。for循环的循环流程是这样的:初始化语句——>判断语句——>1循环语句——>调整语句——>判断语句——>循环语句,就这样一直循环运行,直至判断语句不成立,就跳出循环,初始化语句只刚开始走一次。为什么会这样呢,我们知道第二个语句为判断语句,而我们在这里写成了赋值语句,而0为假,非零为真,这样我们就知道为啥会是这样的结果了吧~for括号里的三个语句是都可以省略的,型如for(;
2024-03-26 20:19:00 191
原创 小知识分享——C语言语句结束符
看到这个,大家第一反应觉得运行结果是什么?我第一反应觉得是啥也没打印出来,因为我觉得刚开始i的值是0,执行到if语句不行的话就继续往下执行break,因为在我的印象里,if语句后面加个大括号,才为一个整体,但是结果打印出来的确实0 1 2 3 4,经过学习之后,我就知道在C语言里,分号是语句结束符,相当于在这里if后面只有break一个语句的情况下,它们就是一个整体,当if不执行时,break也就不执行。有一个容易疏忽的地方,分享给大家。
2024-03-25 18:11:28 278
原创 switch case 语句
如果我们想要输入一个数字就执行一个事件而不想让它完全执行到底时该如何做呢?以上我们可以看出,输入数字几就从事件几开始执行,一直执行到最后,由此可知,switch()括号里所输入的数字就是执行事件的入口。1.switch()这个括号里必须是整型表达式。(可以是字符,必须是常量字符,需用单引号括起来,比如case '+' :)看过这个,就已经明白break的用处啦,我们可以根据自己的需求添加break。今天我学了switch case 语句,把基本的语法和注意事项分享给大家。2.case后面跟的必须是整型。
2024-03-20 20:32:12 265
原创 容易犯的小错误
根据代码来看,我们输入的值赋值给了age,当我们输入50的时候,是这样的,18<=50,这个式子确实是成立的吧,50确实大于18,我们知道,成立即为真,真就是1,所以就变成了,1<=18<=30,这个式子是成立的,所以程序就成功的继续往下运行,所以还是会输出“青年”。今天我有一个小马虎, 分享给大家 ,希望大家不要跟我犯一样的错误~如上图所示这个代码,乍一看好像没什么错误,接下来我们运行一下。
2024-03-12 19:59:38 229
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人