![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
文章平均质量分 63
赵铁蛋
这个作者很懒,什么都没留下…
展开
-
数据结构--给定一个链表,判断链表中是否有环
这个问题可以用我们小学时期奥数题里面的经典:相遇问题来解决。思路:,找两个指针,起始都指向头部,循环向后走。每一次循环,一个指针一次性走两步,另一个一次性走一步。如果两个指针能够相遇,则证明这个链表成环。如果直到两指针中的任意一个指向空了,就代表该链表无环。判断函数如下:SListNode *JugdeCircle(SListNode *head){ SListNode *fast = ...原创 2019-08-24 23:48:03 · 376 阅读 · 0 评论 -
C语言的操作符
今儿来做一个C语言操作符专栏。分类:C语言的操作符有如下这些:算术操作符移位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用、函数调用和结构成员1.算术操作符 + - * / %注意:%操作符的两个操作数必须为整数,得到的结果为整除之后的余数。其他几个可以用于整数和浮点数。/操作符的两个操作数都为整数时执行整数除法。只要有浮点数就执行...原创 2019-04-15 22:03:03 · 251 阅读 · 0 评论 -
C语言实现三子棋游戏
相信每个人都走过三子棋,上学时经常和同学在本子上随便画一个井字,模拟九宫格。用铅笔走,能玩无数把。那么,今天我们就通过C语言来实现这个小游戏。首先我们把我们要实现的棋盘的样子构想出来,再来构建代码框架。那么我想要实现的棋盘是这个样子:O代表电脑下的棋,X代表用户下的棋。 具体功能要求:1.第一次为电脑先下,随机位置。2.玩家通过输入坐标表示要下的地方。3.每下一步棋盘要形成可视化界面,...原创 2019-04-09 22:41:31 · 805 阅读 · 0 评论 -
Java和C的数组区别
存储结构区别:C数组:数组空间是一次性给定的,优先访问低地址,自底向上而放元素。在内存中是连续存储的,并且所有数组都是连续的,都可作为一维数组看待。如下图,一个二维数组就可以看成一个一维数组,只是里面存放的元素为一维数组。所以C中的数组是呈线性结构。而Java中的数组就不一样了,在Java中,数组都是引用实体变量,呈树形结构,每一个叶子节点之间毫无关系,只有引用关系,每一个引用变量只引用...原创 2019-04-08 00:01:22 · 6525 阅读 · 2 评论 -
C语言--打印一个属于自己的菱形
你们记忆中的菱形都是什么样子的?有没有想过可以自己通过代码做一个菱形?话不多说,上方法。方法一:循环我们需要将菱形分为两个部分来循环打印(所有的菱形行数都为奇数)。我们可以通过这个13行的菱形来观察到,如果能打印每一行所输入的空格数和*数,这个问题就解决了。第一部分包括上半个三角形和最中间的一行,即为7行。我们可以看到,第一行需要打印的空格数是6,*数是1。第二行空格数为5,*数为3。以此类...原创 2019-03-28 23:09:17 · 222 阅读 · 0 评论 -
字母图形
问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出ABCDEFGBABCDE...原创 2019-03-21 22:40:00 · 238 阅读 · 0 评论 -
关于一些小问题的优化
一、打印100~200之间的素数素数:除了1和本身之外无其他的因数。我们一开始的惯性思路一般都是这样:设i为除数,从101到200开始循坏,j为被除数,从2到200开始循环。#include<stdio.h>#include<stdlib.h>int main(){ int i = 0; for (i = 101; i <= 200; i++) {...原创 2019-03-19 20:59:08 · 164 阅读 · 0 评论 -
C语言--查找整数和数列特征
查找整数问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入61 9 4 8 3 99样例输出2数据规模与约定1...原创 2019-03-16 18:13:21 · 1563 阅读 · 0 评论 -
C语言--杨辉三角形
问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的前4行: 1 1 1 1 2 1 1 3 3 1 给出n,输出它的前n行。输入格式输入包含一个数n。输出格式输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔...原创 2019-03-14 20:56:43 · 1455 阅读 · 1 评论 -
C语言--回文数和特殊回文数
今天是第一次写博客,心情还有点小激动。那就写写今天做的练习,回文数和特殊回文数。回文数问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。输出格式 按从小到大的顺序输出满足条件的四位十进制数。C代码如下(我用的是codeblocks)#include &lt;stdio.h&gt;#include &lt;stdio.h&gt;...原创 2019-03-13 22:56:28 · 1534 阅读 · 4 评论 -
数据结构--找到两个单链表相交的起始节点
题目描述:如下面的两个链表:在节点 c1 开始相交。解题思路:首先需要考虑两个链表长度不一样的情况:这里就需要用到链表的右对齐思想,分别让两个指针指向两个链表,让长的链表的指针先走(长链表长度-短链表长度)步,这样就相当于跳过了较长链表的多余部分,则此时两指针遍历完链表所走长度应该是相同的,这就是右对齐思想。...原创 2019-08-16 13:48:21 · 815 阅读 · 0 评论 -
关于const的用法
我们知道,const是一个关键词,它所修饰的常变量是C语言常量中的一种。首先我们通过例子来了解const的用法。原创 2019-04-19 00:39:00 · 6206 阅读 · 2 评论 -
指针数组和数组指针
关于原创 2019-04-19 12:30:28 · 160 阅读 · 0 评论 -
C语言实现简易版扫雷
我和我的父亲都是扫雷的狂热粉,小时候我常常因为技术不好而被父亲嘲笑,那么今天我要来做一个简易版扫雷,回头也给他玩一玩。首先我们要原创 2019-04-21 20:41:08 · 382 阅读 · 5 评论 -
数据结构--逆序一个单链表
这个问题有两种解法。第一种方法我取名叫尾删头插法。第二种方法叫背过身法。我们先来看第一种:原创 2019-08-08 22:53:43 · 645 阅读 · 3 评论 -
数据结构--约瑟夫环问题
1.问题描述原创 2019-08-14 22:25:21 · 1407 阅读 · 0 评论 -
C语言的文件操作
什么是文件简单地说,磁盘上的文件就是文件。文件由两部分构成:文件内容+文件属性。在程序设计中我们一般谈的文件有两种:程序文件和数据文件。程序文件包括如下三类:源程序文件(后缀为.c)目标文件(windows环境后缀为.obj)如:Debug里面存在的临时文件。可执行程序(windows环境后缀为.exe)。存放于硬盘上,是给编译器看的,所以打开会是一些乱码。数据文件数据文件顾名思...原创 2019-06-21 21:14:16 · 227 阅读 · 0 评论 -
函数指针
函数指针定义我们都知道,指针变量用来存放地址,那函数有地址吗?当然有,那么用于访问函数地址的指针变量就是函数指针。我们首先来看一段代码:#include<stdio.h>#include<stdlib.h>void test(){ printf("hehe\n");}int main(){ printf("%p\n", test); printf(...原创 2019-05-27 21:00:55 · 158 阅读 · 0 评论 -
关于结构体内存对齐的剖析
关于结构体内存对齐的问题,最直观的体现便是在计算结构体大小的问题上。我们来看一个例子:#include<stdio.h>#include<stdlib.h>int main(){ struct s { char a; int b; double c; }s; printf("%d\n", sizeof(s)); system("pause"...原创 2019-05-23 23:53:42 · 157 阅读 · 0 评论 -
C语言中的指针专栏
一级指针指针是什么我们可以把宿舍楼里面的每一个同学看成一个个的变量,存放在一个个宿舍里,而为了方便找到每个同学,我们给每个宿舍标号,而指针就是每个宿舍的门牌号,它的值直接指向地址所对应的变量单元。为什么要有指针很明显我们找到一个个同学最快的方式就是通过宿舍门牌号,指针就是为了能找到以它为地址的内存单元。总结:指针就是地址,指针变量就是变量,用来存放地址的变量(存放在指针里的值都会被当成地...原创 2019-05-19 19:10:56 · 207 阅读 · 0 评论 -
字符串的逆置和旋转问题
第一题:有一个字符数组的内容为:“student a am i”,请将数组的内容改为:“i am a student”,要求:不能使用库函数,只能开辟有限个空间(空间个数和字符串的长度无关)提示: “student a am i”“i ma a tneduts”‘’i am a student”...原创 2019-05-14 23:57:36 · 239 阅读 · 0 评论 -
打印二维数组的三种方法
方法一:常规法老老实实传二维数组。void print1(int arr[3][5], int row, int col){ int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { printf("%d ", arr[i][j]); } printf(...原创 2019-04-27 17:23:11 · 37245 阅读 · 8 评论 -
杨氏矩阵问题
杨氏矩阵:一个二维数组,数组的每行从左至右是递增的,每列从上往下也是递增的。例如:数组:1 3 42 4 54 5 61 2 34 5 67 8 9问题:在这样的数组中查找一个数字是否存在,时间复杂度小于O(N)。显然,时间复杂度小于O(n)是指,充分利用杨氏矩阵的特征,而不能把整个矩阵遍历去寻找。我的第一想法看到这个题,我的第一个思路是把二维数组画成一个矩形,然后选定一个...原创 2019-04-25 16:05:39 · 382 阅读 · 0 评论 -
求平均数的三种方法
第一种:常规法先求两个数之和,再除以二(或者右移一位)。int a,b,c=0;scanf("%d%d",&a,&b);c=(a+b)/2;//c=(a+b)>>1;printf("%d",c);但是这种方法有可能会导致数据溢出。那么我们又会想到,将两个数分别右移一位再相加,这对于偶数是可行的,但是如果两个数都是奇数会导致错误,需要在 奇数的结果后面再加一...原创 2019-04-22 12:12:14 · 20170 阅读 · 0 评论 -
数据结构--给定一个链表,返回链表开始入环的第一个节点,无环返回NULL
这个题目我们需要考虑两种情况:1.入环点为头节结,这个就是上一篇博客的题目,在这里不再多说。2.入环点不是头结点,如下图。核心思路:多余部分到入环结点的长度=相遇点到入环结点的长度。1.先定义一个快指针一个慢指针,找到该链表的相遇点。2.快慢指针中的任意一个指针从相遇点出发,定义一个头指针从头结点出发,找到的公共节点就是头结点。代码实现#include<stdio.h>#...原创 2019-09-05 19:32:04 · 625 阅读 · 1 评论