
C语言学习
文章平均质量分 75
学习C语言记录笔记
eeenkidu
喜欢开发
展开
-
数据结构-连续线段-C语言-[输入n条线段各个端点坐标,求包含最多线段的连续线段]
连续线段题目描述题目分析实现思路代码实现题目描述平面上两个点(一个点由(x,y)坐标组成)可构成一个线段,两个线段如果有一个端点相同,则可构成一个连续线段。假设构成线段的两个端点为v1(x1,y1)和v2(x2,y2),在此满足x1<x2,其中v1称为线段的起点,v2为线段的终点。同样,对于连续线段来说,在此满足xi<xi+1(i=1…n-1,n为连续线段中的端点数,xi为相应端点的X轴坐标)。输入一组线段(用两个端点的x、y坐标表示线段,线段个数大于等于2,小于等于100),编程计算出连续原创 2021-04-16 23:32:12 · 2958 阅读 · 1 评论 -
C语言-文件操作-练习
文件操作-练习从键盘输入一些字符,并逐个把它们送到键盘上去,直到用户输入一个“#”为止。将一个磁盘文件中的信息复制到另一个磁盘文件中。从键盘输入一些字符,并逐个把它们送到键盘上去,直到用户输入一个“#”为止。#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; //定义文件指针fp char ch,filename[10]; printf("请输入文件名:原创 2021-03-23 17:07:28 · 3207 阅读 · 1 评论 -
C语言-通讯录的实现(包括文件存储、增删改查、打印、排序等)
通讯录的实现通讯录Contacttest.c 测试contact.c 实现函数的功能contact.h 声明函数通讯录Contact存放1000个好友的信息 : 名字 电话 性别 住址 年龄增加好友信息AddContact删除指定名字的好友信息DelContact查找好友信息SearchContact修改好友信息ModifyContact打印好友信息ShowContact排序SortContacttest.c 测试#define _CRT_SECURE_NO_WARNINGS 1原创 2021-03-22 16:12:35 · 1255 阅读 · 0 评论 -
C语言-程序环境和预处理
程序环境和预处理程序的翻译环境和执行环境详解:C语言程序的编译+链接翻译环境编译本身也分为几个阶段运行环境预编译(预处理)详解预定义符号#define#define 定义标识符#define 定义宏#define 替换规则预处理操作符#和##的介绍#的作用##的作用带副作用的宏参数宏和函数对比命名约定#undef命令行定义条件编译文件包含头文件被包含的方式:嵌套文件包含其他预处理指令程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换原创 2021-03-22 16:04:06 · 547 阅读 · 3 评论 -
C语言-文件操作
什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。本章讨论的是数据文件。在以前各章所处理数据的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行结果显示到显示器上。其实有时候我们会把信息输出到磁盘上,当原创 2021-03-22 15:23:50 · 1228 阅读 · 0 评论 -
C语言-动态内存管理-练习
动态内存管理-练习1请问运行Test 函数会有什么样的结果?2请问运行Test 函数会有什么样的结果?3请问运行Test 函数会有什么样的结果?4请问运行Test 函数会有什么样的结果?1请问运行Test 函数会有什么样的结果?void GetMemory(char *p){ p = (char *)malloc(100);//没有free,存在内存泄露的可能}void Test(void){ char *str = NULL; GetMemory(str); s原创 2021-03-22 11:39:25 · 420 阅读 · 0 评论 -
C语言-动态内存管理
为什么存在动态内存分配当前已经知道的内存的使用方式:创建一个变量int a=10;//局部变量 - 栈区int g_a=10;//全局变量 - 静态区创建一个数组int arr[10];//局部/全局但是上述的开辟空间的方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。 这时候就只能试试动态存开辟原创 2021-03-22 10:42:36 · 341 阅读 · 0 评论 -
C语言-构造类型(结构体、枚举、联合)
结构体结构体类型的声明结构体的声明struct tag{ member-list;//成员列表}variable-list;//声明一个结构体类型//声明一个学生类型,是想过学生类型来创建学生变量(对象)//描述学生:属性-名字+电话+性别+年龄struct Stu{ char name[20];//名字 char tele[12];//电话 char sex[10];//性别 int age;} s4,s5,s6;//全局变量struct Stu s3;//全局变原创 2021-03-22 10:27:37 · 1244 阅读 · 1 评论 -
C语言-字符函数和字符串函数
字符函数和字符串函数函数介绍求字符串长度strlen-获取字符串长度strlen函数的模拟实现长度不受限制的字符串函数strcpy-复制字符串strcpy函数的模拟实现strcat-追加字符串strcat函数的模拟实现strcmp-比较两个字符串strcmp函数的模拟实现长度受限制的字符串函数介绍strncpy-拷贝n个字符strncat-追加n个字符strncmp-比较前n个字符的两个字符串字符串查找strstr-查找字符串strstr函数模拟实现strtok-分割字符串错误信息报告strerror-获取原创 2021-03-22 09:52:16 · 826 阅读 · 0 评论 -
C语言-数据存储-练习
数据存储-练习请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。判断程序输出(char\int)12.3.4.5.6.7.练习1练习2练习3打印杨辉三角猜凶手猜名次请简述大端字节序和小端字节序的概念,设计一个小程序来判断当前机器的字节序。#include <stdio.h>int check_sys(){ int a = 1; return *(char*)&a;}//指针类型的意义://1. 指针类型决定了指针解引用操作符能访问几个字节:cha原创 2021-03-21 20:26:07 · 212 阅读 · 0 评论 -
C语言-数据的存储
数据的存储数据类型类型的基本归类整形在内存中的存储 limit.h**原码****反码****补码**使用补码的主要原因大端存储与小端存储存在大小端的原因应用场景:浮点型在内存中的存储 float.h - float、double、long double 类型存入取出例子数据类型类型的基本归类意义确定类型开辟内存空间的大小(大小决定了使用范围)。如何看待内存空间的视角。整形在内存中的存储 limit.h原码最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。如原创 2021-03-21 17:39:47 · 507 阅读 · 0 评论 -
C语言-扫雷游戏
扫雷游戏的实现基本流程test.cgame.hgame.c基本流程test.c#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("*****************************\n"); printf("******* 1. play ******\n"); printf("******* 0. exit ******\n"); printf("**原创 2021-03-21 15:09:08 · 206 阅读 · 0 评论 -
C语言-三子棋
三子棋的实现基本流程test.cgame.hgame.c基本流程创建一个用户交互菜单;创建一个棋盘并初始化;打印一个棋盘;玩家落子(玩家通过输入行列坐标落子);判定胜负关系;电脑落子(电脑采用随机落子的方式落子);判定胜负关系;游戏结束。test.c#define _CRT_SECURE_NO_WARNINGS 1//测试三子棋游戏#include "game.h"//打印菜单:1.开始游戏 0.退出游戏void menu(){ printf("*******原创 2021-03-21 15:06:13 · 88 阅读 · 0 评论 -
C语言-实用调试技巧
实用调试技巧Debug和Release的介绍常用快捷键 windowF5F9F10F11CTRL + F5如何写出好(易于调试)的代码优秀的代码:常见的coding技巧:模拟实现库函数:strcpyconst的作用编程常见的错误常见的错误分类:编译型错误链接型错误运行时错误Debug和Release的介绍Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。原创 2021-03-21 15:00:37 · 345 阅读 · 1 评论 -
C语言-结构体
结构体结构体类型的声明结构的基础知识结构的声明结构成员的类型结构体变量的定义和初始化结构体成员的访问 结构体传参结构体类型的声明结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构的声明struct tag{ member-list;}variable-list;例如描述一个学生 :名字,年龄,电话,性别//定义结构体类型//struct 结构体关键字 Stu - 结构体标签 struct Stu - 结构体类型struct St原创 2021-03-21 14:08:41 · 548 阅读 · 0 评论 -
C语言-指针
指针是什么在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。int a = 10;//在内存中开辟一块空间int *p = &a;//这里我们对变量a,取出它的地址,可以使用&操作符。 //将a的地址存放在p变量中,p就是一个之指针变量原创 2021-03-20 22:42:25 · 187 阅读 · 0 评论 -
C语言-指针-练习
计算字符串长度[1.计数器的方式1; 2.递归的方式2 3.指针的方式3]int my_strlen(char* str){ char* start = str; char* end = str; while (*end != '\0') { end++; } return end - start;//}判断打印int arr[] = { 1, 2, 3, 4, 5 };short *p = (short*)arr;int i = 0;for (i = 0; i<原创 2021-03-20 22:42:05 · 4907 阅读 · 0 评论 -
C语言-操作符详解
操作符详解操作符分类算术操作符移位操作符 :移动是二进制位,只能作用于整形左移操作符 移位规则右移操作符 移位规则:[右移1位有除2的效果]位操作符 : 只能作用于整数赋值操作符复合赋值符单目操作符sizeof和数组~ 按位取反++和--运算符(类型)关系操作符逻辑操作符条件操作符逗号表达式下标引用、函数调用和结构成员表达式求值隐式类型转换算术转换操作符的属性操作符优先级【越靠前,优先级越高】练习题目1题目2统计二进制中1的个数【补码的二进制有几个1】求二进制中不同位的个数打印二进制的奇数位和偶数位交换两个原创 2021-03-20 20:42:29 · 766 阅读 · 0 评论 -
C语言-操作符详解-练习
判断(1)-(4)打印?【sizeof】void test1(int arr[]) { printf("%d\n", sizeof(arr)); //(2) 4/8}void test2(char ch[]){ printf("%d\n", sizeof(ch)); //(4) 4/8}int main(){ int arr[10] = {0}; char ch[10] = {0}; printf("%d\n", sizeof(arr)); //(原创 2021-03-20 18:15:22 · 237 阅读 · 0 评论 -
C语言-数组
数组一维数组的创建和初始化数组的创建数组的初始化一维数组的使用一维数组在内存中的存储二维数组的创建和初始化二维数组的使用二维数组在内存中的存储数组作为函数参数一维数组的创建和初始化数组的创建数组是一组相同类型元素的集合。 数组的创建方式type_t arr_name [const_n];//type_t 是指数组的元素类型//const_n 是一个常量表达式,用来指定数组的大小素组创建的实例注:数组创建, [] 中要给一个常量才可以,不能使用变量。//创建一个数组-存放整形-10原创 2021-03-20 11:08:41 · 212 阅读 · 0 评论 -
C语言-数组-练习
创建一个整形数组,完成数组的操作实现函数init()初始化数组为全0实现print()打印数组的每个元素实现reverse()完成数组元素的逆置void Init(int arr[], int sz){ int i = 0; for (i = 0; i < sz; i++) { arr[i] = 0; }}void Print(int arr[], int sz){ int i = 0; for (i = 0; i < sz; i++) { printf("原创 2021-03-20 11:06:46 · 317 阅读 · 0 评论 -
C语言-冒泡排序函数
冒泡排序函数比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。#include <stdio.h>void bubble_sort(int arr[], int sz)//int *arr{ int i = 0; // 确定冒泡排序的趟数 // int原创 2021-03-20 11:04:24 · 7558 阅读 · 1 评论 -
C语言-青蛙跳台阶问题【递归+非递归】
青蛙跳台阶问题【递归+非递归】问题描述分析递归实现非递归实现问题描述一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。分析n - 台阶数sum - 跳发nsum11223345586137218349551089…………n-2f(n-2)n-1f(n-1)nf(n-1)+f(n-2)可参考斐波那数递归实现//1 2原创 2021-03-19 15:06:54 · 656 阅读 · 0 评论 -
C语言-汉诺塔问题【递归图解】
C语言-汉诺塔问题简介思想C语言实现简介相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。思想C语言实现void hanoi(int n, char a, char b, char c)原创 2021-03-19 14:22:41 · 1469 阅读 · 2 评论 -
C语言-函数-练习
写一个函数,每调用一次这个函数,就会将num的值增加1。#include <stdio.h>void add(int *px){ *px = *px + 1; // *p++ err}int main(){ int num = 0; add(&num); printf("%d\n", num); return 0;}【递归】接受一个整型值(无符号),按照顺序打印它的每一位。 例如: 输入:1234,输出 1 2 3 4#incl原创 2021-03-16 15:07:27 · 279 阅读 · 0 评论 -
C语言-函数
函数函数是什么C语言中函数的分类库函数常见库函数自定义函数函数的组成例子:写一个函数可以找出两个整数中的最大值例子:写一个函数可以交换两个整形变量的内容函数参数实际参数(实参)形式参数(形参)函数调用传值调用传址调用函数的嵌套调用和链式访问嵌套调用链式访问函数的声明和定义函数声明函数定义函数递归什么是递归递归的两个必要条件递归与迭代问题为什么那如何解决上述的问题提示函数是什么维基百科中对函数的定义:子程序在计算机科学中,子程序(英语:Subroutine, procedure, function,原创 2021-03-16 14:49:10 · 623 阅读 · 0 评论 -
C语言-分支语句和循环语句-练习题
if练习判断一个数是否为奇数 int num; printf("输入一个数:"); scanf("%d", &num); if (0 == num % 2) // 判断这个数除以 2 的余数 printf("%d 是偶数。", num); else printf("%d 是奇数。", num);输出1-100之间的奇数 int i = 1; while (i <= 100) {原创 2021-03-15 15:33:13 · 2439 阅读 · 0 评论 -
C语言-分支语句和循环语句
C语言-分支语句和循环语句C语言是一门结构化的程序设计语言什么是语句分支语句(选择结构)ifif语句语法if语句示例悬空elseif书写形式的对比switchswitch语法switch示例循环语句whilewhile语法while语句执行的流程while示例for语法for执行流程for示例for语句的循环控制变量一些for循环的变种do whiledo while语句语法do while执行流程do while示例练习练习2从小到大输出三个数打印1-100之间所有3的倍数的数字给定两个数求最大公约数打印原创 2021-03-15 14:46:34 · 550 阅读 · 0 评论 -
C语言-初识
C语言-初初识什么是C语言?数据类型变量、常量变量分类如何使用作用域:(限定的这个名字的可用性的代码范围)生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段常量字符串、转义字符、注释字符串(%s\n)这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者建成字符串转义字符【\】注释作用形式选择语句循环语句函数:特点是简化代码,代码复用数组定义:一组相同类型元素的集合使用操作符关键字常见关键字typedef:类型定义static修饰变量原创 2021-03-15 10:33:42 · 278 阅读 · 1 评论 -
使用VSCode运行C语言
使用VSCode运行C语言VSCode安装Mingw-w64 下载安装VSCode 插件配置运行文件VSCode安装下载地址:https://code.visualstudio.com/DownloadMingw-w64 下载下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/下载并解压后配置PATH安装VSCode 插件配置运行文件新建一个工程,然后建一个原创 2021-02-17 23:43:44 · 6123 阅读 · 0 评论