![](https://img-blog.csdnimg.cn/20200703142641267.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言
C语言编程
北木.
交流分享,共同成长
展开
-
排序算法第六讲 --- 归并排序(Python、C++、C)
排序算法系列目录 排序算法第一讲 — 冒泡排序(Python、C++、C) 排序算法第二讲 — 选择排序(Python、C++、C) 排序算法第三讲 — 插入排序(Python、C++、C) 排序算法第四讲 — 快速排序(Python、C++、C) 排序算法第五讲 — 希尔排序(Python、C++、C) 题目描述: 给你一个整数数组 nums,请你将该数组采用归并排序方式进行升序排列。 解题思路: 分治算法: 将一个比较大规模的问题分解成为若干个规模较小的问题,.原创 2020-07-11 13:13:58 · 309 阅读 · 0 评论 -
排序算法第五讲 --- 希尔排序(Python、C++、C)
题目描述: 给你一个整数数组 nums,请你将该数组采用希尔排序方式进行升序排列。希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序. 解题思路: 让我们先来回顾一下插入排序: 插入排序顾名思义,就是在排序的过程中,把数组的每一个元素按照大小关系,插入到前面有序区的对应位置。怎样可以对插入排序算法做出优化呢?从以下两个方面入手:在大多数元素已经有序的情况下,插入排序的工作量较小.原创 2020-07-10 10:59:09 · 307 阅读 · 0 评论 -
排序算法第四讲 --- 快速排序(Python、C++、C)
题目描述: 给你一个整数数组 nums,请你将该数组采用快速排序方式进行升序排列。输入示例: [1,8,6,2,5,4,9,3,7]输出示例: [1,2,3,4,5,6,7,8,9] 解题思路: 快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数.原创 2020-07-06 21:51:40 · 400 阅读 · 0 评论 -
排序算法第三讲 --- 插入排序(Python、C++、C)
题目描述: 给你一个整数数组 nums,请你将该数组采用插入排序方式进行升序排列。 解题思路: 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 代码: Python写法:class Solution(object): def solution(self, nums): n = len(nums) for i in range(1, n): for j in range.原创 2020-07-06 15:57:14 · 256 阅读 · 0 评论 -
排序算法第二讲 --- 选择排序(Python、C++、C)
题目描述: 给你一个整数数组 nums,请你将该数组采用选择排序方式进行升序排列。 解题思路: 选择排序的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 代码: Python写法:class Solution(object): def solution(self, nums): n = len(nums) j .原创 2020-07-05 22:31:46 · 338 阅读 · 0 评论 -
排序算法第一讲 --- 冒泡排序(Python、C++、C、java)
题目描述: 给你一个整数数组 nums,请你将该数组采用冒泡方式进行升序排列。 解题思路: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 代码: Python写法:class Solution(object): def solution(.原创 2020-07-05 15:03:26 · 382 阅读 · 0 评论 -
C语言之结构体类型
C语言允许用户自己建立由不同类型数据组成的组合型数据结构,它称为结构体。1. 声明一个结构体类型的一般形式如下:struct 结构体类型名{成员表列};2. 结构体类型变量的定义一般形式为:struct 结构体类型名{成员表列}变量名表列;3. 结构体类型变量初始化和引用: struct TIME{ char date; char month; char year; char hour; char原创 2020-06-05 17:08:11 · 3004 阅读 · 0 评论 -
C语言之将外部变量的作用域扩展到其他文件(VC6.0处理多文件)
1. 在已经建立的工程目录下,点击 文件--新建 一个新的工程.2. 将工程按钮从ClassView 切换到 FileView栗子1给定b的值,输入a和m,求 a*b 和 a3a^{3}a3 的值。文件 file1.c:#include <stdio.h>#include <string.h>int A;int main(){ int power(int); int b=3,c,d,m; printf("enter the number a and i原创 2020-06-02 15:13:05 · 1284 阅读 · 0 评论 -
面试之C语言基础算法系列(一)
前沿 著名计算机科学家沃思(Nikiklaus Wirth)提出一个公式: 算法 + 数据结构 = 程序 基础算法是面试中必须要克服的障碍,因此,开始基础算法系列的旅程吧! 算法之旅 1. Fibonacci数列 [1]. 快乐的LeetCode — 面试题10- I. 斐波那契数列[2]. 剑指offer面试题09----斐波拉契数列 2. 回文检查 给出的数在逆序后可能超过int范围,可以赋值给long后再逆序。#include <stdio.h>int mai.原创 2020-06-01 16:54:07 · 382 阅读 · 0 评论 -
对文件的输入输出
1. 什么是文件 文件分为两种, 程序文件 和 数据文件 程序文件。包括源文件(后缀为.c)、目标文件(后缀为.obj)、可执行文件(后缀为.exe)等。这种文件的内容是可执行代码。数据文件。如一批学生的成绩数据等。 2. 打开与关闭文件 fopen函数打开数据文件,fclose函数关闭数据文件。通常将fopen函数的返回值赋给一个指向文件的指针变量FILE *fp ; /...原创 2020-01-21 16:46:16 · 588 阅读 · 0 评论 -
结构体基础知识点(七)--用 typedef 声明新类型名
前期回顾 结构体基础知识点(一)–建立自己的数据类型 结构体基础知识点(二)–使用结构体数组 结构体基础知识点(三)–结构体指针 结构体基础知识点(四)–用指针处理链表 结构体基础知识点(五)–共用体类型 结构体基础知识点(六)–使用枚举类型 用 typedef 声明新类型名 1. 用一个新类型名代替原有的类型名 这样有个好处,可以提高可移植性。typede...原创 2020-01-20 23:44:18 · 1362 阅读 · 0 评论 -
结构体基础知识点(六)--使用枚举类型
前期回顾 结构体基础知识点(一)–建立自己的数据类型 结构体基础知识点(二)–使用结构体数组 结构体基础知识点(三)–结构体指针 结构体基础知识点(四)–用指针处理链表 结构体基础知识点(五)–共用体类型 使用枚举类型 1. 什么是枚举类型 如果一个变量只有几种可能的值,则可以定义为枚举(enumeration)类型,所谓枚举,就是把可能的值一一列举出来,变量...原创 2020-01-20 20:57:05 · 1882 阅读 · 0 评论 -
结构体基础知识点(五)--共用体类型
前期回顾 结构体基础知识点(一)–建立自己的数据类型 结构体基础知识点(二)–使用结构体数组 结构体基础知识点(三)–结构体指针 结构体基础知识点(四)–用指针处理链表 共用体类型 1. 什么是共用体类型 用同一段内存单元存放不同类型的变量。而这种使几个不同的变量共享同一段内存的结构,称为 “共用体” 类型的结构。 2. 形式 union Data{ i...原创 2020-01-20 19:53:25 · 1424 阅读 · 0 评论 -
结构体基础知识点(四)--用指针处理链表
前期回顾 结构体基础知识点(一)–建立自己的数据类型 结构体基础知识点(二)–使用结构体数组 结构体基础知识点(三)–结构体指针 用指针处理链表 1. 链表 动态地进行存储和分配的一种结构。如果难以确定一个班的人数,必须把数组定义的足够大,以便能存放任何班级学生的数据,这会造成浪费内存,链表则没有这种缺点。 链表有一个"头指针"变量,图中以 head 表示,它存...原创 2020-01-20 18:41:33 · 912 阅读 · 0 评论 -
结构体基础知识点(三)--结构体指针
前期回顾 结构体基础知识点(一)–建立自己的数据类型 结构体基础知识点(二)–使用结构体数组 结构体指针 1. 指向结构体变量的指针 指向结构体对象的指针变量既可以指向结构体变量,也可以指向结构体数组中的元素。指针变量的基类型必须与结构体变量的类型相同。例如:struct Student *pt // pt 可以指向 struct Student 类型的变量或数组元素...原创 2020-01-12 17:43:59 · 1802 阅读 · 0 评论 -
结构体基础知识点(二)--使用结构体数组
前期回顾 结构体基础知识点(一)–建立自己的数据类型 使用结构体数组 1. 定义结构体数组 栗子1: 有三个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先输入被选人的名字,最后输出各人得票结果 #include<stdio.h>#include<string.h>struct Person{ char name[20]; in...原创 2020-01-12 16:39:39 · 1186 阅读 · 0 评论 -
结构体基础知识点(一)--建立自己的数据类型
定义结构体类型变量 1. 先声明结构体,再定义该类型的变量(常用) 声明结构体:struct Student{ int num; // 学号为整型 char name[20]; // 姓名为字符串 char sex; // 性别为字符型 int age; // 年龄为整型 float score; // 成绩为实型 ...原创 2020-01-12 16:07:56 · 924 阅读 · 0 评论 -
C语言指针知识点小结
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针引用数组 C语言指针基础知识点(五)–用数组名作函数参数 C语言指针基础知识点(六)–通过指针引用多维数组 C语言指针基础知识点(七)–通过指针引用字符串 C语言指针基础知识点(八...原创 2020-01-10 15:40:06 · 13241 阅读 · 0 评论 -
C语言指针基础知识点(十)--动态内存分配与指向它的指针变量
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针引用数组 C语言指针基础知识点(五)–用数组名作函数参数 C语言指针基础知识点(六)–通过指针引用多维数组 C语言指针基础知识点(七)–通过指针引用字符串 C语言指针基础知识点(八...原创 2020-01-10 11:08:09 · 2236 阅读 · 0 评论 -
C语言指针基础知识点(九)--指针数组和多重指针
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针引用数组 C语言指针基础知识点(五)–用数组名作函数参数 C语言指针基础知识点(六)–通过指针引用多维数组 C语言指针基础知识点(七)–通过指针引用字符串 C语言指针基础知识点(八...原创 2020-01-10 09:49:52 · 2121 阅读 · 0 评论 -
C语言指针基础知识点(八)--返回指针值的函数
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针引用数组 C语言指针基础知识点(五)–用数组名作函数参数 C语言指针基础知识点(六)–通过指针引用多维数组 C语言指针基础知识点(七)–通过指针引用字符串 返回指针值的函数 栗子...原创 2020-01-09 20:15:46 · 2378 阅读 · 0 评论 -
C语言指针基础知识点(七)--通过指针引用字符串
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针引用数组 C语言指针基础知识点(五)–用数组名作函数参数 C语言指针基础知识点(六)–通过指针引用多维数组 通过指针引用字符串 1. 字符串的引用方式 字符串是存放在字符数组中的,...原创 2020-01-07 15:30:55 · 4758 阅读 · 0 评论 -
C语言指针基础知识点(六)--通过指针引用多维数组
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针引用数组 C语言指针基础知识点(五)–用数组名作函数参数 通过指针引用多维数组 1. 多维数组元素的地址 请记住: *(a+i) 和 a[i] 是等价的如果 a 是一维数组名,a...原创 2020-01-06 21:55:01 · 5750 阅读 · 11 评论 -
C语言指针基础知识点(五)--用数组名作函数参数
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过指针引用数组 用数组名做函数参数 数组元素作实参时,参数传递具有单向性,即实参的改变可以影响形参,而形参的改变无法影响实参。例:假设已经定义了一个函数,其原型为:void swap(int x...原创 2020-01-06 16:44:23 · 6031 阅读 · 6 评论 -
C语言指针基础知识点(四)--通过指针引用数组
前期回顾 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 通过指针引用数组元素 引用一个数组元素,可以用以下两种方法:1.下标法,如 a[i] 形式;2.指针法,如 *(a+i)或 *(p+i)。其中 a 是数组名,p是指向数组元素的指针变量,其初值为 p=a;栗子: 有一个整...原创 2020-01-06 10:42:04 · 11730 阅读 · 8 评论 -
C语言指针基础知识点(三)--指针变量作为函数参数
前期回顾 C语言指针基础知识点(一)–指针及指针变量C语言指针基础知识点(二)–指针变量的引用 指针变量作为函数参数 函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。栗子: 对输入的两个整数按大小顺序输出。现用函数处理,而且用指针类型的数据作函数参数。 #include <stdio.h>int...原创 2019-12-01 23:01:20 · 23900 阅读 · 11 评论 -
C语言指针基础知识点(二)--指针变量的引用
前期回顾 C语言指针基础知识点(一)–指针及指针变量 指针变量的引用 引用指针变量时有以下三种情况:① 给指针变量赋值。 ② 引用指针变量指向的变量。 ③引用指针变量的值。int a, *p;p=&a; //把a的地址赋给指针变量pprintf("%d",*p); //以整数形式输出指针变量p所指向的变量的值,即a的值*p=1; //将整数1赋给p当前所指向的...原创 2019-12-01 21:36:15 · 8776 阅读 · 0 评论 -
C语言指针基础知识点(一)--指针及指针变量
指针基础点 1.一个变量的地址称为该变量的指针 例如,地址2000是变量 i 的指针 2.一个变量专门用来存放另一变量的地址(即指针),则它称为指针变量 指针变量的值是地址 正确区分: 例如,可以说变量 i 的指针是2000,而不能说 i 的指针变量是2000.指针是一个地址,而指针变量是存放地址的变量。 入门第一栗: 通过指针变量访问整型变量 # inclu...原创 2019-12-01 21:05:28 · 10307 阅读 · 0 评论 -
C语言学习基础知识点---谭浩强
在程序中如果用到标准函数库中的输入输出函数,应该在本文件模块的开头写上下面一行: # include<stdio.h>在常量一节中,有字符串常量,但是不能错写成 ‘CHINA’, ‘123’,‘boy’。在C语言里面,单撇号只能包含一个字符,双撇号可以包含一个字符串。符号常量。 用 # define 指令,指定用一个符号名称代表一个常量。如:# define PI 3.1415...原创 2019-11-27 20:01:27 · 1600 阅读 · 0 评论 -
C语言:函数的递归调用
问题引入: 后一位学生比前一位学生大2岁 # include<stdio.h>int main(){ int age(int n); printf("NO.5 age is: %d\n", age(5)); return 0;}int age(int n){ int c; if(n==1) c=10; else c=age(n-1)+2; ...原创 2019-11-13 22:07:30 · 446 阅读 · 0 评论 -
求四个数中的最大值
C实现:#include<stdio.h>int main(){ int max4(int a,int b,int c,int d); int a,b,c,d,max; printf("Please enter four interger numbers:\n"); scanf("%d%d%d%d",&a,&b,&c,&d); m...原创 2019-11-12 22:56:03 · 5645 阅读 · 0 评论 -
C声明被掉函数,求两个数之和,报错:error C2018('0xa3')('0xac')、error C2146、error C2059(')')
特简单的一个程序,竟然报错:error C2018: unknown character ‘0xa3’error C2018: unknown character ‘0xac’error C2146: syntax error : missing ‘)’ before identifier ‘sum’error C2059: syntax error : ‘)’报错程序:# inc...原创 2019-11-12 21:56:32 · 546 阅读 · 0 评论 -
C语言注释代码段
行注释: //块注释1.用 /* */ 注释/*int a=123,b=456;printf("sum is %d\n",a+b);*/2.用 #if 注释 (目前没有实现)如有一段不想要的代码,可以直接用 " #if 0 … #endif " 形式来注释,效果等同于"/* */"#if 0 ...code... #endif选择结构的条件编译。...原创 2019-11-12 21:47:36 · 2632 阅读 · 0 评论 -
有3个字符串,找出其中的最大者
有3个字符串,找出其中的最大者#include<stdio.h>#include<string.h>int main(){ char str[3][20]; // 定义二维字符数组 char string[20]; // 定义一维字符数组,作为交换字符串时的临时字符数组 int i; for(i=0;i<3;i++) gets(str[i...原创 2019-11-04 19:29:39 · 1076 阅读 · 0 评论 -
输入一行字符,统计其中有多少个单词
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开#include<stdio.h>int main(){ char str[81]; int number=0, i, word=0; gets(str); for(i=0;(str[i])!='\0';i++) if(str[i]=="") word=0; else if(word==0) ...原创 2019-11-04 19:15:49 · 12255 阅读 · 4 评论 -
C语言解决字符串之间的赋值以及连接操作
赋值操作:#include<stdio.h>#include<string.h>int main(){ char A[] = {"C program."}; char B[] = {"Hello"}; strcpy(B, A); printf("The A and B[] is : %s\n", B); return 0;}结果为...原创 2019-11-03 15:35:52 · 2030 阅读 · 1 评论 -
C语言中switch语句实现多分支选择结构
#include<stdio.h>int main(){ char a; a = getchar(); switch(a) { case 'A': printf("85~100\n");break; case 'B': printf("70~84\n"); break; case 'C': printf("60~69\n"); break; case ...原创 2019-10-29 09:17:12 · 4012 阅读 · 0 评论 -
C语言中的 语句--表达式
一个表达式的最后加上一个分号就成了一个语句。 栗子:赋值表达式 a = 3赋值语句 a = 3;i = i+1 (表达式)i = i+1;(语句) 任何表达式都可以加上分号成为语句: i++;x+y;...原创 2019-10-27 22:08:35 · 1648 阅读 · 0 评论 -
C语言中用printf()函数输出数据
f格式符。 用来输出实数(包括单、双精度,长双精度),以小数的形式输出,有以下几种用法:1.基本型,用%f。系统处理的一般方法是:实数中的整数部分全部输出,小数部分输出6位。栗子1:#include<stdio.h>int main(){ double a = 1; printf("%f\n", a/3); return 0;}结果为:2.指定数据宽度和...原创 2019-10-27 22:02:40 · 4570 阅读 · 0 评论