![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 61
流年碎雨
与其仰望星空_不如脚踏实地
展开
-
函数的调用过程(栈帧)
试看下面的代码是如何进行函数调用的?测试环境:VC++ 6.0#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int Add(int x, int y){ int z = 0; z = x + y; return z;}int main(){ int a = 10; int b = 20; int ret =...原创 2018-04-19 11:07:12 · 163 阅读 · 0 评论 -
小白飞起的起点
Hello!简单自我介绍下,我是一名来自“双非”一本大学的学生,当年高考成绩不如人愿,但已成事实,无可避免。上大学后,前两年,还算踏踏实实的度过,没有得过什么奖,但是参加了很多公益活动,结交了许多朋友,大小证书也算获得了几个。突然之间,就大三了,看着我身边的同学已经开始找实习了,我突然意识到自己的落后,于是我打算重拾起自己的兴趣之所在——编程,我希望通过编程之路可以激发起曾经的那个梦少年,为梦想仗...原创 2018-03-18 23:00:24 · 146 阅读 · 0 评论 -
将三个数按从大到小输出
//4.将三个数按从大到小输出#include<stdio.h>int main(){ int i = 2; int j = 3; int k = 5; int temp = 0; if (i < j) { temp = i; i= j; j = temp; } if (i < k) { temp = i; i = k; k ...原创 2018-03-20 23:12:05 · 211 阅读 · 0 评论 -
使用c语言实现一个简易的通讯录
2.实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人 实现方法非常简单,只要按部就班的做,就一定可以实现,加油咯!Contact.h#ifndef __CO...原创 2018-05-09 14:21:25 · 2927 阅读 · 0 评论 -
自定义类型:结构体,枚举,联合的知识小结
结构体:我们通常所见数据大多成组出现,即它们的数据类型相同,但是如果数据类型不同怎么办?例如,描述一个学生的信息,包含姓名,年龄,性别等,它们数据类型不同,无法存储于同一个数组中,在C语言中,我们可以通过使用结构把不同类型的值存储在一起。结构体声明举例代码如下:struct Stu{ char name[20]; int age; char id[15];};//注意:分号不能丢结构体成...原创 2018-05-09 15:29:16 · 134 阅读 · 0 评论 -
动态内存分配
为什么使用动态内存分配?数据的元素存储于内存中连续的位置上,当一个数组被声明时,它所需要的内存在编译时就被分配,但是,我们可以使用动态内存分配在运行时为它分配内存。当我们声明数组时,必须用一个编译时常量指定数组的长度,但是,数组的长度常常在运行时我们知道,因为它所需要的内存空间取决于输入数据,说到这里,相信你已经明白了,如果内存在编译时就被分配的缺点了。因此,我们必须熟练使用动态内存分配来解决这个...原创 2018-05-09 19:43:30 · 155 阅读 · 0 评论 -
函数递归(总结)
什么是递归?程序调用自身的编程技巧称为递归。递归的主要思考方式在于:把大事化小递归的两个必要条件:(1)跳出条件:存在限制条件,当满足这个限制条件时,递归便不再继续(2)限制条件:每次递归调用之后越来越接近这个限制条件。来看几组练习,看看递归是如何实现的?----->1.//接受一个整形值(无符号),把它转换成字符并打印它//输入1234 输出 1 2 3 4 void print(in...原创 2018-05-10 10:39:53 · 242 阅读 · 0 评论 -
str系列字符串函数
int strlen(const char *str)--->求字符串长度的函数char *strcpy(char *dest,char *src)--->字符串拷贝char *strcat(char *dest,char *src)--->字符串连接char *strstr(const char *str1,const char *str2)--->字符串的查找(查...原创 2018-05-18 07:14:40 · 489 阅读 · 0 评论 -
mem系列函数
memcpy:void *memcpy(char *dest, const char *src, int count){ void *ret = dest; while (count--) { *(char *)dest = *(char *)src; ++(char *)dest; ++(char *)src; } return ret;}memmove:void *m...原创 2018-05-18 07:16:19 · 534 阅读 · 0 评论 -
三子棋小游戏的实现
game.h#ifndef __GAME_H__ #define __GAME_H__ #include <string.h> #include <stdlib.h> #include <time.h> #include <stdio.h> #define ROW 3 #define COL 3 void Init...原创 2018-04-10 16:59:18 · 267 阅读 · 0 评论 -
扫雷游戏的实现
game.h#define ROW (ROWS-2) #define MAX 10 //雷的个数 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<string.h>//memset头文件 void init_board(char mine[RO...原创 2018-04-10 16:51:22 · 678 阅读 · 0 评论 -
C语言操作符(总结)
操作符的分类:算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用/函数调用和结构成员。1.算术操作符:+ : 加法 - :减法* :乘法/ :除法 ——操作数中两个都为整型则为整数除法,只要有一个操作数为浮点数则为浮点数除法。%:取模 —— 操作数必须为整型,返回的是整除之后的余数。2.移位操作符<<:左移位---左边丢弃,右边...原创 2018-03-31 12:47:24 · 217 阅读 · 0 评论 -
可变参数列表源码的剖析
c语言有时会遇到一些参数可变的函数,如printf(),这些函数内部的参数列表是可变的。printf()函数原型:int printf(const char *format,...) printf()函数是以一个支持可变参数的函数,可以有多个参数,除了format以外,后面跟着的参数的个数和类型是可变的,用…作为一种占位符号。“…”称为可变参数列表,可以用来接受个数和类型不确定的参数。可变参数列表...原创 2018-04-19 09:07:40 · 138 阅读 · 0 评论 -
详解指针数组,数组指针,函数指针
指针和数组的对比:指针数组和数组指针:要理解这几个概念,就要明白:好孩子,首先他是个孩子。指针数组:就是指针的数组,也就是说它实质上是一个数组,只是数组的每个元素都是指针,至于数组占多少个字节由数组本身决定。它是存储指针的数组的简称。例如:int *p1[10];//指针数组解释上面代码:由于"[]"优先级要比''*''的优先级高,所以p1先和“[]"结合,构成数组的定义,数组名为p1,int*修...原创 2018-05-01 11:39:44 · 157 阅读 · 0 评论 -
函数指针数组和函数指针数组的指针
函数指针数组回顾一下:char *(*pf)(char *p);//函数指针上面代码表示定义的是一个函数指针pf,pf是一个指针变量,那么,pf就可以存储在以个数组里面。如下:char *(*pf[3])(char *p);//函数指针数组上述代码定义的是一个函数指针数组,它是 一个数组,数组名为pf,数组内存储了3个指向函数的指针。这些指针指向一些返回值类型为指向字符的指针,参数为一个指向字符的...原创 2018-05-01 11:45:53 · 371 阅读 · 0 评论 -
打印100~200 之间的素数
#include<stdio.h> #include<math.h> #include<stdlib.h> int main() { int i = 0; int count = 0; for (i = 101; i <= 200; i = i + 2) { int j = 0; for (j = 2; j &...原创 2018-03-20 08:35:21 · 118 阅读 · 0 评论 -
输出乘法口诀表
#include<stdio.h>#include<stdlib.h>int main(){ int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= i; j++) { printf("%d*%d=%2d ",i, j, i*j); } printf("\n"); } s...原创 2018-03-20 08:38:56 · 133 阅读 · 0 评论 -
判断1000年---2000年之间的闰年
#include<stdio.h>int main(){ int count = 0; int year = 0; for (year = 1000; year <= 2000; year++) { if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) { ...原创 2018-03-20 08:40:33 · 308 阅读 · 0 评论 -
给定两个整形变量的值,将两个值的内容进行交换。
//给定两个整形变量的值,将两个值的内容进行交换。//创建一个临时变量,将两个值进行交换#include<stdio.h>int main(){ int i = 10; int j = 20; int temp = 0; temp = i; i = j; j = temp; printf("%d,%d",i,j); printf("\n"); system("...原创 2018-03-20 22:22:32 · 144 阅读 · 0 评论 -
不允许创建临时变量,交换两个数的内容(附加题)
// 不允许创建临时变量,交换两个数的内容(附加题)//算法:利用基本赋值语句完成交换操作#include<stdio.h>int main(){ int i = 3; int j = 2; i = i + j;//i=3+2=5 j = i - j;//j=5-2=3 i = i - j;//i=5-3=2 printf("交换后i=%d,j=%d\n", i, ...原创 2018-03-20 22:44:08 · 353 阅读 · 0 评论 -
求10 个整数中最大值
//求10 个整数中最大值#include<stdio.h>int main(){ int arr[] = { 2, 5, 9, 6, 15, 24, 16, 35, 36, 66 }; int i = 0; int max = arr[0]; for (i = 0; i < 10; i++) { if (arr[i] > max) { max...原创 2018-03-20 22:57:25 · 171 阅读 · 0 评论 -
文件压缩
本篇文章主要包含4个方面: 1.哈夫曼算法实现压缩的原理 2.具体压缩及解压过程思路阐述 3.项目中遇到的问题 4.项目扩展一、原理简述: huffman算法实现文件压缩的主要原理是通过huffman编码来重新表示字符,使得出现频率高的字符编码短,出现少的字符编码长。当用编码表示原文件时,总体的bit位时相对减少的。但当大部分字符出现的频率都差不多时,huffman压缩的压缩效率会很...原创 2018-09-02 17:05:13 · 262 阅读 · 0 评论