C语言
文章平均质量分 65
~|Bernard|
人在考研 有文章代码出错谨请见谅研后再与各位大佬进行指正交流
展开
-
数据结构课程设计之火车票订票系统实现(C语言/C++版本)
课题描述 编制一个程序,火车票订票的业务活动包括:车次查询、订票、退票、用户管理等。需求分析 用户信息包括用户姓名、身份证号、用户电话、用户所购列车号、订单号;列车信息包括:列车车站号、车票起点、车票终点、出发时间、到达时间、票价、票数等基本信息。 软件需要实现以下功能: (1)录入:可以录入车次(车次号、车站1、车站2...、余票)、客户等数据; (2)查询车次:车次及分段余票信息; (3)订票业务:根据客户提出的要求(车次、起点、终点、订票数额)查询票额情况,若尚有余额,则为客户.原创 2022-05-04 20:49:47 · 19778 阅读 · 24 评论 -
数据结构-算法的时间复杂度和空间复杂度-2022-3-3
1.算法效率1.1算法的复杂度2.时间复杂度2.1 时间复杂度的概念2.2 大O的渐进表示法3.空间复杂度4. 常见复杂度对比一般算法常见的复杂度如下:5. 复杂度的oj练习https://leetcode-cn.com/problems/missing-number-lcci力扣https://leetcode-cn.com...原创 2022-03-04 18:31:03 · 322 阅读 · 0 评论 -
C语言程序环境和预处理(程序执行流程,#define的使用详解,条件编译指令)
1. 程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是执行环境,它用于实际执行代码。2. 详解编译+链接2.1 翻译环境2.2 编译本身也分为几个阶段:2.3 运行环境1. 程序必须载入内存中。在有操作系统的环境中:一般这个由操作系统完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。2. ...原创 2022-03-02 23:50:34 · 537 阅读 · 0 评论 -
C语言的文件操作
1. 为什么使用文件我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做...原创 2022-03-01 22:06:54 · 73 阅读 · 0 评论 -
C语言的动态内存管理
1. 为什么存在动态内存分配2. 动态内存函数的介绍2.1 malloc和freemalloc和free使用例子:2.2 callocC语言还提供了一个函数叫 calloc , calloc 函数也用来动态内存分配。举个例子:2.3 realloc举个例子:3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问...原创 2022-02-25 00:35:00 · 830 阅读 · 0 评论 -
利用C语言实现一个通讯录程序(动态内存版本,文件版本)
在看动态建立通讯录的版本时,可以先看看上一篇文章,静态建立通讯录的思路:利用C语言实现一个通讯录程序(静态内存版本)(结构体的应用,枚举的应用,结构体指针的实用技巧)_YRedd22的博客-CSDN博客https://blog.csdn.net/weixin_56054625/article/details/123099029在建立动态内存时,我们需要了解到几个C语言关于动态内存的函数:malloc,realloc,free.可以参考动态开辟内存的文章。在动态开辟内存的过程中,我们只需要在静..原创 2022-02-24 20:58:58 · 1325 阅读 · 0 评论 -
利用C语言实现一个通讯录程序(静态内存版本)(结构体的应用,枚举的应用,结构体指针的实用技巧)
实现功能:大致设计框架:设计这个通讯录之前我们必须先来了解几个库函数:在我们写这个代码之前我们先来创建一个菜单:根据我们需要的功能,我们一个一个来实现:存放1000个人的信息很显然我们需要使用结构体来写:增加联系人功能代码:运行展示:打印所存放信息:删除联系人思路:删除联系人代码:运行结果:查找联系人代码:运行结果:修改联系人代码:运行结果:源代码展示...原创 2022-02-23 22:38:29 · 890 阅读 · 0 评论 -
C语言自定义类型:结构体,枚举,联合
结构体1 结构体的声明结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。特殊的声明:在声明结构的时候,可以不完全的声明警告:编译器会把上面的两个声明当成完全不同的两个类型。所以是非法的。2.结构的自引用在结构中包含一个类型为该结构本身的成员是否可以呢?注意:结构体的自引用是不能够省略结构体名字的3.结构体变量的定义和初始化...原创 2022-02-23 20:39:23 · 408 阅读 · 0 评论 -
C语言字符函数和字符串函数
求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数介绍strncpystrncatstrncmp字符串查找strstrstrtok错误信息报告strerror字符操作内存操作函数memcpymemmovememsetmemcmpC语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在常量字符串 中或者 字符数组 中。字符串常量 适用于那些对它不做修改的字符串函数1.1 strlen原创 2022-02-21 23:59:07 · 138 阅读 · 0 评论 -
C语言进阶指针详解完整版(数组指针,指针数组的辨析,函数指针)
指针的重要概念:指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(32位平台/64位平台)。指针是有类型,指针的类型决定了指针的+-整数的步长,指针解引用操作的时候的权限。指针的运算。1. 字符指针代码 char* pstr = "hello bit."; 特别容易让同学以为是把字符串 hello bit 放到字符指针 pstr 里了,但是/本质是把字符串 hello bit. 首字符的地址放到了pstr中。2. 指针数组...原创 2022-02-12 22:52:06 · 239 阅读 · 0 评论 -
C语言数据的存储(关于整型提升的方法,%d,%u的打印区别实例,整型在内存中的存储,浮点型在内存中的存储)
整型家族:其中的int是可省略的有符号和无符号怎么理解呢?浮点型家族:精度要求高时用double,相反则用float构造类型:指针类型:空类型:void 表示空类型(无类型)通常应用于函数的返回类型、函数的参数、指针类型。一.整形在内存中的存储在内存中一个f表示4个二进制的1原码、反码、补码计算机中的整数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用...原创 2022-01-18 18:12:09 · 744 阅读 · 0 评论 -
用C语言在屏幕上打印菱形(利用for内层循环规律)
用C语言在屏幕上输出以下图案:解题思路:首先是将其分为上下两块来循环处理。我们应该分为两部分来打印,先打印好我们前半部分的空格,然后再来打印我们的星星,这里后半部分的空格其实不需要考虑它。编写代码开始,我们应该把题目分为上下两个部分来分别找出其中的循环条件。源代码:#include<stdio.h>int main(){ int line = 0; scanf("%d", &line); int i = 0; fo...原创 2022-01-15 11:06:03 · 1323 阅读 · 5 评论 -
BC46 判断是元音还是辅音(内含getchar的实例使用和注意事项)
描述KiKi开始学习英文字母,BoBo老师告诉他,有五个字母A(a), E(e), I(i), O(o),U(u)称为元音,其他所有字母称为辅音,请帮他编写程序判断输入的字母是元音(Vowel)还是辅音(Consonant)。输入描述:多组输入,每行输入一个字母。输出描述:针对每组输入,输出为一行,如果输入字母是元音(包括大小写),输出“Vowel”,如果输入字母是非元音,输出“Consonant”。示例1输入:Ab复制输出:VowelConsonant方原创 2022-01-14 10:03:24 · 146 阅读 · 0 评论 -
如何利用C语言统计二进制中1的个数(关于C操作符的经典编程小练习题目)
练习一:写一个函数返回参数二进制中 1 的个数。比如: 15 0000 1111 4 个 1方法一:方法二:输入负数时,函数传参过去为unsigned int,把其看作无符号数方法三:练习二:编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?输入例子:1999 2299输出例子:7方法一:方法二:方法三:利用异或来找出练习三:获取一个整数二进制序列中所有的偶数位和奇数位,...原创 2022-01-14 00:18:56 · 158 阅读 · 0 评论 -
C语言的实用调试技巧(内含模拟strlen,strcpy库函数的实现,const,assert的使用实例)
1.什么是bug?第一次被发现的导致计算机错误的飞蛾,也是第一个计算机程序错误。2.调试是什么?调试(英语:Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序错误的一个过程拒绝-迷信式调试!!!!调试的基本步骤:1.发现程序错误的存在(程序员,调试人员,用户)2.以隔离、消除等方式对错误进行定位3.确定错误产生的原因4.提出纠正错误的解决办法5.对程序错误予以改正,重新测试Debug 通常称为调试版本,它包含调试信息,并且原创 2022-01-13 01:52:11 · 256 阅读 · 0 评论 -
2021-12-23-SWUSTOJ613 数字转换成字符 SWUSTOJ614 求圆柱体的体积
题目描述:题目描述本题目非常简单,请编写一个程序实现以下功能: 1、输出整型和字符型在内存中所占的字节数; 2、输入两个数字,输出其相对应的字符。输入输入两个整型数字(a,b).输出输出有两行 第一行输出整型和字符在内存中所占的字节数, 第二行输出两个整数(输入的两个整数)所对应的字符。详见下面的Sample Input和Sample Output。 每输出的两个数字或字符之间用一个空格隔开样例输入复制80 8097 98样例输出复制4 1P原创 2021-12-23 18:07:04 · 319 阅读 · 0 评论 -
C语言分离字符串中的不同字符单独成行输出SWUSTOJ1167
题目描述:原创 2021-12-23 17:47:50 · 1208 阅读 · 0 评论 -
2021-11-24-SWUSTOJ616-C语言的排序查找
个人认为这道题oj出得不太好,题目说明十分不清晰,难以让做题人琢磨,值得改进。思路:运行结果:源代码:#include<stdio.h>void sort(int n, int arr[]){ int i = 0; int j = 0; int tmp = 0; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i - 1; j++) ...原创 2021-12-23 16:59:23 · 1396 阅读 · 0 评论 -
2021-12-23-SWUSTOJ580: The World Population Explosion(结构体之间变量的交换方法,strcmp用法案列,利用for循环的复杂排序情况)
题目描述:In the past, when population grew, there was unexplored territory to inhabit. But now, almost all the habitable land has been explored. The world's population may reach 8.7 billion in 2033. It is clear that world population is a serious issue that n原创 2021-12-23 15:33:27 · 850 阅读 · 0 评论 -
2021-12-23SWUSTOJ72Optimal Services
题目:题目描述设有n 个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1<=i<=n 。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n 个顾客等待服务时间以及服务时间的总和除以n。对于给定的n个顾客需要的服务时间,编程计算最优服务次序。输入第一行是正整数n,表示有n 个顾客。接下来的1行中,有n个正整数,表示n个顾客需要的服务时间。输出最小平均等待时间样例输入复制1056 12 1 99 1000 234 .原创 2021-12-23 12:10:29 · 723 阅读 · 0 评论 -
2021-12-21 SWUSTOJ69偷菜时间表(解题思路详解)
题目描述随着“开心农场”等娱乐游戏风靡互联网,“偷菜”遂瞬间蹿红网络,席卷网民生活。于是,“你‘偷’了吗”便成为大家见面的招呼语。很快,数百万都市白领成为“偷菜”队伍中的主力军,每天在“偷”与防“偷”中乐此不疲,甚至定闹钟半夜起床“偷”菜。根据“农作物”生长规律而变化制定偷菜时间表。输入假设当前时间为13:15,第一行输入作物种类数n,从第二行开始输入n 种作物成熟需要的时间,格式为Hour:Minute。输出依次输出n 种作物成熟时间,每行输出一个样例输入原创 2021-12-21 23:46:55 · 645 阅读 · 0 评论 -
班级课程成绩计算(SWUSTOJ617)
题目描述:原创 2021-12-14 00:14:30 · 1133 阅读 · 0 评论 -
2021-12-9 C语言的结构体-初阶
结构体结构体类型的声明结构体初始化结构体成员访问结构体传参1. 结构体的声明结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构的成员可以是标量、数组、指针,甚至是其他结构体。2. 结构体成员的访问结构体变量访问成员结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数。例如:结构体指针访问指向变量的成员有时候我们得到的不是一个结构体变量,而是指向一个结构体的指针。那该如何访...原创 2021-12-09 22:44:29 · 550 阅读 · 0 评论 -
2021-12-7 C语言的指针-初阶
1.指针是什么?在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。笔者把指针理解为生活中我们每个人都拥有的身份证,身份证可以对应到每个人,身份证就好比是一个地址,我们通过这个地址去找寻里面的值在32位的机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的原创 2021-12-09 00:09:56 · 152 阅读 · 0 评论 -
2021-11-30-全站最全最细最易懂的C语言的操作符详解
一.算术操作符1. 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。2. 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。3. % 操作符的两个操作数必须为整数。返回的是整除之后的余数。二.移位操作符<<操作符:左边抛弃、右边补0要十分注意的一点:整数在内存中存储的是二进制的补码,而printf打印的是原码的值内存中存放的补码是用来进行数据操作处理的,而打印出来必须是原码用来...原创 2021-12-07 12:46:26 · 81 阅读 · 0 评论 -
2021-12-7 BC51 三角形判断
题目描述:代码和注释:源代码:#include<stdio.h>int main(){ int a = 0; int b = 0; int c = 0; while (scanf("%d %d %d", &a, &b, &c) != EOF) { if ((a + b > c) && (a + c > b) && (b + c > a))//...原创 2021-12-07 00:19:16 · 122 阅读 · 0 评论 -
2021-12-6 BC69 空心正方形图案 一个题深入理解二维数组,多重循环语句和条件语句
题目描述:代码及注释:调试结果:源代码:int main(){ int n = 0; char arr[40][40] = { 0 }; int i = 0;//定义行数 int j = 0;//定义列数 while (scanf("%d", &n) != EOF)//注意题目是多次输入,我们需要用while循环的形式来书写 { for (i = 0; i < n; i++)...原创 2021-12-06 22:56:24 · 143 阅读 · 0 评论 -
2021-12-6 BC35 判断字母 实现多组输入
题目描述:描述从键盘任意输入一个字符,编程判断是否是字母(包括大小写)。输入描述:多组输入,输入包括一个字符。输出描述:输出该字符是字母(YES)或不是(NO)。示例1输入:H复制输出:YES复制示例2输入:9复制输出:NO给出两种方法:源代码:#include<stdio.h>int main(){ //多组输入 char ch = 0; while ((ch = g...原创 2021-12-06 00:44:30 · 471 阅读 · 0 评论 -
2021-12-4 BC115 小乐乐与欧几里得
题目描述:分析:首先做这个题之前我们得清楚最大公约数与最小公倍数的概念最大公约数:原创 2021-12-06 00:31:39 · 379 阅读 · 0 评论 -
2021-12-5 BC111 小乐乐与进制转换
题目描述:输入的数字要求是十亿,而int类型的最大值是21亿,足够存放,所以使用int类型分析一下转换为六进制的计算过程:这里要注意,我们先求模计算出来的是地位,最后求模出来的是高位,所以我们打印的时候要倒着打印,倒着打印的时候要注意一点,i在每次循环的时候都加了一次,在最后一次的时候也自动加了一次,但是里面并没有存放数字,所以我们在打印之前要将i-1.代码:源代码:#include<stdio.h>int main(){ int ...原创 2021-12-05 23:37:02 · 299 阅读 · 0 评论 -
C语言二维数组的应用实例2:简易版扫雷
test.c-测试game.c-游戏函数的实现game.h-游戏函数的声明首先创建一个游戏菜单和说明设置游戏之前我们首先要清楚扫雷的规则:原创 2021-11-24 00:37:07 · 2819 阅读 · 0 评论 -
C语言数组的二维应用实例1:简易版三子棋
三子棋:test.c -测试游戏game.h - 游戏函数的声明game.c - 游戏函数的实现先在test.c里写上一个游戏可以反复完的游戏说明很明显三子棋应该放在case里面去执行,创建一个game().因为我们在这里要设计一个3*3的棋盘,很多时候函数之间的传参都会用到这两个3的数据,未来我们代码在后期如果需要进行优化或者更改的情况,如果更改会造成很多的麻烦,所以我们采用define的形式在game.h中定义出来在用户没有下棋之前,我们...原创 2021-11-18 22:34:14 · 96 阅读 · 0 评论 -
统计出现最多次的字母(SWUSTOJ288)(最详细讲解)
题目描述:源代码:#include<string.h>#include<stdio.h>int main(){ int n = 0;//统计字符的个数 int sz = 0;//用于计算字符串长度 int i = 0; int j = 0; int more = 0;//用来统计出现最多的一个数的字符位置 char a[101] = { 0 }; char b[30] = { 0 }; in...原创 2021-11-18 00:26:47 · 979 阅读 · 0 评论 -
用C语言实现简单的加密方法SWUSTOJ1178
题目描述:源代码:#include<stdio.h>#include<string.h>int main(){ int i = 0; int sz = 0; char a[81] = { 0 }; while(~scanf("%s", a)) { sz = strlen(a); for (i = 0; i < sz; i++) { if ((...原创 2021-11-17 23:55:28 · 1562 阅读 · 0 评论 -
C语言中进行大小写转换SWUSTOJ563
题目描述:这里需要知道:%c表示输出单个字符。这里的大小写转换实际就是ASCLL码值的转变源代码:#include<stdio.h>#include <string.h>int main(){ int i = 0; char a[20] = { 0 }; scanf("%s", a); int sz = sizeof(a)/sizeof(a[0]); //int sz = strlen(a);测量字符串长度这种...原创 2021-11-16 19:38:58 · 748 阅读 · 0 评论 -
C语言的数组
一.一维数组数组是一组相同类型元素的集合。数组的创建方式:type_t arr_name [const_n];//type_t 是指数组的元素类型//const_n 是一个常量表达式,用来指定数组的大小数组创建的实例://代码1int arr1[10];//代码2int count = 10;int arr2[count];//C99开始可以这样实使用//代码3char arr3[10];float arr4[1];double arr5[20];1..原创 2021-11-14 21:53:55 · 408 阅读 · 0 评论 -
C语言中scanf和getchar多次循环输入
首先;来看一段代码:这里的getchar达到了自动换行的效果。用ctrl+z来结束循环程序我们来看一段错误的代码:scanf和getchar并不是直接从键盘上拿数据,而是存在一个缓冲区域同时存在两个输入函数时,第一次输入的东西(adddd)被scanf拿走,我们会敲击回车键进入下一个语句,此时我们的缓冲区被scanf取走了adddd过后,由于我们输入了回车,则此时只剩下了\n存在于缓冲区,所以getchar读取到的是\n,故直接走了else语句,则直接确认失败了。此...原创 2021-11-09 22:34:27 · 7117 阅读 · 0 评论 -
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定如:输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。
源代码:int mutiple_(int a){ int x = 0; int y = 0; for (x = 1; x <= a; x++) { for (y = 1; y <= a; y++) { printf("y*x=%d ", y*x); }\\内部循环结束才会跳出外部循环 printf("\n");//此处的\n用来换行 }}int main...原创 2021-11-09 21:04:42 · 934 阅读 · 0 评论 -
C语言函数的递归
函数的声明1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用。3. 函数的声明一般要放在头文件中的。举个列子:首先我们来看一段正常的代码,然后我们来看两个错误的函数来说明以上两点函数声明的重要性。函数的定义是指函数的具体实现,交待函数的功能实现。在我们实际的工程中,一般都是将函数和main函数放在不同的板块来完成,采用这样分块书写的模式,可以有助于多人...原创 2021-10-31 15:24:23 · 133 阅读 · 0 评论 -
C语言的递归与迭代常见使用练习
练习:求n的阶乘。(不考虑溢出)运用之前循环(迭代)的方法来求的话就是如下代码那么如果我们用递归的话就应该如下:练习:求第n个斐波那契数。(不考虑溢出)首先我们要知道斐波那契数列:1 1 2 3 5 8 13 21 34 55.。。。。。前两个数字之和等于第三个数字这个代码有很大的缺点,效率非常慢,算n=55时就需要很长的时间,所以这里使用递归的方法不是很实用。提示:1. 许多问题是以递归的形式进行解释的,这只是因为它比非递归的形式...原创 2021-10-31 15:17:33 · 332 阅读 · 0 评论