C代码
赵jc
这个作者很懒,什么都没留下…
展开
-
一些简单递归问题(c语言实现)
在程序中的递归,便是是函数自己直接或间接的调用自己。在面对一个大问题时我们很难去解决,但是我们可以将其分成一个个类似的小问题去解决,最终求出大问题。递归的关键:一.递归需要终止条件(出口)二.找出函数的等价关系式(相当于将一个大问题转换为类似的子问题,但运算结果不变)类似于第一题n的k次方等价于n*n的(k-1)次方下面是一些递归的例题:n的k次方//n的k次方double pow(int n, int k){ if (k == 0) { return 1; } else if原创 2020-09-17 22:50:11 · 669 阅读 · 0 评论 -
C语言实现打印杨辉三角形
首先我们先了解一下什么是杨辉三角形,下面是一张图片,我们可以从中发现一个规律,每一个数字都是它上方两个数字的和。问题分析:由上可知杨辉三角在每一个数字都是它上方两个数字的和,所以这个便是这道题的关键,我们可以用二维数组来解决这个问题。可以给第一列全赋值为1,其他的可以根据arr[i][j] = arr[i-1][j-1] + arr[i-1][j];来计算。代码如下://打印杨辉三角形#include <stdio.h>#define n 10int main(){ int i原创 2020-09-16 22:59:03 · 4355 阅读 · 1 评论 -
汉诺塔问题C语言实现
最近在学习递归,汉诺塔这道题可谓是非常经典了,有必要写一下。问题描述:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆:1.每次只能移动一个圆盘;2.大盘不能叠在小盘上面.可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。求移动的过程。图片来源于网络:问题分析:如上图A柱子上有n个圆环,假设我们A柱子上只有最下面那个最大的圆环,且C柱子为空,则可直接移动到C柱子上,(我们在倒推回去,这种情况原创 2020-09-16 16:49:43 · 1414 阅读 · 0 评论 -
最大公约数和最小公倍数
方法一:辗转相除法辗转相除法又称为欧几里德算法。具体的步骤就是:用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。最后的除数就是这两个数的最大公约数。例如7和57 / 5 = 1 (余2)5 / 2 = 2 (余1)2 / 1 = 2 (余0)至此,最大公约数为1而最小公倍数等于两数之积/最大公约数,求出最大公约数就知道了最小公倍数了代码如下:int main(){ int a, b, c, m, n; pr原创 2020-09-12 16:57:41 · 224 阅读 · 0 评论 -
交换变量a和变量b的值
题目描述:输入两个整数a和b,交换他两的值,然后输出方法一直接创建一个临时变量即可完成此功能代码如下int main(){ int a = 0; int b = 0; printf("请输入两个整数:"); scanf("%d %d", &a, &b); printf("交换前:%d%d\n", a, b); int tmp = a; a = b; b = tmp; printf("交换后:%d%d\n", a, b); return 0;}程序运行结果原创 2020-09-12 15:40:42 · 10349 阅读 · 1 评论 -
求一个整数存储在内存中的二进制中1的个数
这是一道经典的例题,众所周知数字在内存中以二进制的补码形式存储。二进制中只有1或0,所以我们就联想到了第一种方法。一.先%后/法**(错误的)思**路;对于一个整数,例如123我们先取模(%)便可以得到它的最低位为3,然后再取余便可以去除它的最低位,得到12,。如此循环下去我们便可以得到它的各个位上的数字。由此可以类比出我们的第一种方法。对于二进制而言只有0或1,所以我们可以先令n(所要求的整数)%2得到最低位数再与1进行对比,如果想等的话count++(计数);如果不相等的话n/=2(更新),再重复上原创 2020-09-12 10:41:50 · 279 阅读 · 0 评论 -
C语言结构体总结
一.什么是结构体我们知道数组,它是一组具有相同类型的数据的集合。但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为字符,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。在C语言中,我们可以使用结构体来存放一组不同类型的数据。结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每...原创 2019-12-19 22:54:39 · 1324 阅读 · 0 评论 -
C语言操作符总结
C----操作符总结1.算术操作符符号: + - * / %+: 加 分别用于整数和浮点数的加法-: 减 分别用于整数和浮点数的减法*: 乘 分别用于整数和浮点数的乘法/: 除 分别用于整数和浮点数的除法%:取模 用于两个整数之间相除取余数符号 + - * / 运算优先级符合数学中的运算优先级。注意:1.除了%操作符之外,其他的几个操作符都可以用于整数和浮点数。%...原创 2019-11-10 10:53:05 · 198 阅读 · 0 评论 -
扫雷(简易版) 10*10
扫雷的游戏规则:扫雷就是要把所有非地雷的格子揭开即胜利;踩到地雷格子就算失败。游戏主区域由很多个方格组成。使用鼠标左键随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷。逐一排除所有雷,找到所有非雷区即为胜利。我们用C语言实现一个简易的扫雷小游戏,其思路和具体代码如下:首先我用多文件来实现。一个头文件game.h 两个源文件game.c和main...原创 2019-11-03 23:58:25 · 1199 阅读 · 0 评论 -
C语言实现三子棋
使用C语言实现三子棋主要是运用到二维数组的知识,这里用一个头文件两个源文件来实现头文件:game.h //包含函数各种声明,宏定义源文件:main.c //主要负责测试整个代码源文件:game.c //包含各种函数的定义game.h#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<wind...原创 2019-10-31 20:54:54 · 218 阅读 · 0 评论