
C
阳可不犯迷糊
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言 简易通讯录C语言实现
一、概述 通讯录的实现其中包括了指针、结构体、动态内存管理、文件的读写操作等知识点,是对这些知识点应用巩固的非常好的例子; 通讯录功能如下:添加联系人删除联系人查找联系人修改联系人显示所有联系人加载联系人保存联系人联系人排序二、代码如下 contact.h#ifndef CONTACT_H#define CONTACT_H#define NAME_MAX 20#define SEX_MAX 10#define TEL_MAX 12#define ADDR_MA原创 2020-05-15 00:36:14 · 2085 阅读 · 2 评论 -
C语言 C语言知识点总结(思维导图版)
一、C语言概述 C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。 当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于原创 2020-05-11 18:40:21 · 13571 阅读 · 3 评论 -
C语言 文件操作总结
一、基本概念 文件分类普通文件:存放在硬盘中的文件;设备文件:屏幕、键盘等特殊文件;文本文件:ASCII文件,每个字节存放一个字符的ASCII码,打开文件看到的是文本信息二进制文件:数据按其在内存中的存储形式原样存放,打开文件看到的是乱码文件缓冲区ANSI C(标准C语言库函数)标准采用“缓冲文件系统”处理数据文件。写文件(设备文件除外),并不会直接写到文件中,会先放在缓...原创 2020-05-09 00:16:40 · 266 阅读 · 0 评论 -
C语言 结构体内存对齐规则
在计算结构体类型变量的大小时,就涉及到了内存对齐问题。1. 结构体内存对齐规则 对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值 vs中的默认值为8;Linux中的默认值为4;原则1:数据成员的对齐规则(以最大的类型字节为单位)。 结构体(struct)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存放在offset为该数据成员大小的...原创 2020-05-05 01:14:51 · 707 阅读 · 0 评论 -
C语言 模拟实现strcpy()、strcat()、strstr()、strchr()、strcmp()、memcpy()、memmove()
1. 模拟实现strcpy()函数说明 strcpy()会将src字符串拷贝带dest所指的地址。返回值 返回参数dst的字符串起始地址。附加说明 如果参数dst所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况, 在编写程序时请特别留意, 或者用strncpy()来取代。//字符串拷贝char* strcpy(char *d...原创 2020-05-04 20:58:31 · 333 阅读 · 0 评论 -
C语言 喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水, 给20元,可以多少汽水。
代码如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,//给20元,可以多少汽水int main(void){ int num = 20; int total ...原创 2020-05-04 19:42:55 · 340 阅读 · 0 评论 -
C语言 一个数组中只有两个数字是出现一次, 其他所有数字都出现了两次, 找出这两个只出现一次的数字
这个问题类似于我之前遇到的,一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,请找出这个数字,参考这个过程解决此问题。 分析:只有两个数字出现了一次其他成对出现,可以首先将这个数组连续异或,得到的结果就是这两个只出现一次数异或后的结果。 目前数组arr{1, 2, 3, 3};3与3异或后为0,因此连续异或的结果就为1与2疑惑后的结果。接下来从左至右移位找为1的二进制位,用...原创 2019-11-13 21:51:33 · 355 阅读 · 0 评论 -
C语言 在杨氏矩阵中查找数字
一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。分析:数组的特点是从上至下从左至右递增,所以在查找某个数是否存在时首先选一个起始位置,如果当前位置的数比要查找的数大时当前位置列减一,比要查找的数小时当前位置行加一,避免遍历数组元素使时间复杂度为O(N)#define _CRT_SECURE_NO_WARNINGS#include <s...原创 2019-11-12 10:02:33 · 251 阅读 · 0 评论 -
C语言 字符串翻转(以空格为界限,只翻转单词位置)
字符串翻转,以空格为界限,只翻转单词位置。可以经过以下两个步来实现:将字符串整体先翻转一遍student a am i -> i ma a tneduts再以空格为界限翻转每个单词 i ma a tneduts -> i am a student代码如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#...原创 2019-11-12 00:10:06 · 737 阅读 · 0 评论 -
C语言 一组数据中只有一个数字出现了一次,其他所有数字都是成对出现的,请找出这个数字
分析:数组中只有一个数字出现了一次,其他成对出现,由异或运算的特性我们知道,两个相同的数异或结果为0;所以可以让这组数据连续异或,相同的异或后为0,最终的结果就是只出现一次的那个数字了;代码如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <stri...原创 2019-11-11 23:58:17 · 241 阅读 · 0 评论 -
C语言 将二进制位从左到右翻转并返回
在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h...原创 2019-11-11 23:47:32 · 451 阅读 · 0 评论 -
C语言 整形提升与整形截断总结
一、整形提升1、整形提升的定义 首先c语言在进行算数运算时总是按整形类型来运算的,char a = 1;char b = 2; 在执行a + b时实际上时int 型的1和2在相加。这其中涉及这样一种转换,表达式中的字符(32位一字节)和短整型(32位2字节)操作数在使用之前被转化为普通整形,这种转换称为整形提升。2、整形提升的意义 表达式的整形运算要在CPU的相应运算器件内执行,CPU...原创 2019-10-25 15:11:05 · 693 阅读 · 1 评论 -
C语言 二进制bit位操作练习(任意数二进制中1的个数、输出二进制数的奇偶位、输出一个整数的每一位、整数m和n的二进制表达中,有多少个位(bit)不同)
函数返回参数二进制中 1 的个数比如: 15 0000 1111 4 个 1#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(void){ int n = 0; int tmp = 0; while (scanf("%d", &n)) {...原创 2019-10-21 15:13:07 · 387 阅读 · 0 评论 -
C语言 扫雷游戏简易实现
简易实现扫雷游戏,并且第一次扫时不会被炸死,如果当前位置周围九宫格内没有雷时依次检测并展开周围位置。#define ROW 9#define COL 9#define ROWS ROW + 2#define COLS COL + 2#define EASY_COUNT 10ROW、COL为实际棋盘的大小,之所以定义ROWS、COLS是因为在实际布雷时只会不知棋盘中间9 * 9的位...原创 2019-10-19 22:23:34 · 187 阅读 · 0 评论 -
C语言 三子棋、五子棋与“n子棋”实现
C语言实现三子棋问题,解决诸如此类问题重点在于分析过程,将复杂问题模块化、简单化。使用宏定义 ROW、COL分别表示棋盘的行数与列数;MODE表示玩法(三子棋、五子棋、n子棋)。定义二维数组board[row][col]存放棋子。一、模块分析接下来分以下几个模块实现:1、棋盘打印;2、玩家操作;3、电脑操作;4、胜负判断;1、棋盘打印棋盘样式:初始化棋盘时board[row...原创 2019-10-11 22:28:24 · 439 阅读 · 0 评论 -
求两个数的最大公约数
创建一个变量n,使得n等于两个数a与b中较小的。从n开始依次递减到1,直到出现第一个同时满足能被a、b整除的数即为a与b的最大公约数。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int ...原创 2019-09-17 18:31:05 · 209 阅读 · 0 评论 -
C语言 函数 reverse_string(char * string),递归实现将参数字符串中的字符反向排列
函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。边界条件为字符串的左后一位’\0’,当前位不等于’\0’时地址加1继续调用函数自身,直到遇到结束符时从前一位开始依次打印。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>...原创 2019-10-08 11:43:21 · 323 阅读 · 0 评论 -
C语言 递归和非递归分别实现strlen();
边界条件:’\0’,为达到是字符串地址加1继续调用自身,遇到’\0’时开始返回编程思路如下;my_strlen(abc)1+my_strlen(bc)1+1+my_strlen©1+1+1#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//递归方式int my_str...原创 2019-10-08 11:51:09 · 250 阅读 · 0 评论 -
C语言 递归和非递归分别实现求n的阶乘
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式int factorial(int n){ if (n == 1) { return 1; } return n * factorial(n - 1);...原创 2019-10-08 12:07:27 · 252 阅读 · 0 评论 -
C语言 递归方式实现打印一个整数的每一位
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式void print(int n){ if (n > 9) { print(n/10); } printf("%d ", n % 10);}...原创 2019-10-08 12:09:46 · 262 阅读 · 0 评论 -
C语言 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
当满足边界条件n < 10是递归开始返回,并与当前n的末位相加,计算过程如下图所示:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式int DigitSum(int n){ if (n < 10...原创 2019-10-08 11:34:36 · 418 阅读 · 0 评论 -
C语言 编写一个函数实现n^k,使用递归实现
使用k作为边界条件,n * my_pow(n, k - 1)为运算式,直到k递减为1是递归开始返回,依次与前一个n相乘。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//递归方式int my_pow(int n, int ...原创 2019-10-08 11:15:04 · 361 阅读 · 0 评论 -
输入行数输出对应的菱形图案
图形分为上下两部分,分别进行输出:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int n = 0; int i = 0; int j = 0; printf("请输入行数(奇数):...原创 2019-09-22 22:49:26 · 3557 阅读 · 0 评论 -
C语言实现计算 1到 100 的所有整数中出现数字9的次数
1–100出现数组9的数字有个位为9和十位为9两种情况#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int i = 0; int sum = 0; for (i = 1; i <...原创 2019-09-22 20:56:25 · 908 阅读 · 0 评论 -
计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
两种形式按分母奇偶分为两类,分别做加分后将结果相减。需要注意的是结果变量为float类型,/ 两端有浮点数。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int i = 0; fl...原创 2019-09-22 20:42:43 · 214 阅读 · 0 评论 -
交换两个相同大小数组的内容
方法与之前写过的 交换两个整形变量的值 相同,在此列举第一种:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void main(void){ int A[10] = { 1, 5, 6, 4, 7, 58, 32, 64...原创 2019-09-22 20:31:43 · 171 阅读 · 0 评论 -
10个整数按从大到小输出
输入任意10个整数,运用选择法排序法按从大到小方式重排后输出#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int arr[10] = { 0 }; int tmp = 0; int i...原创 2019-09-17 18:18:58 · 3272 阅读 · 0 评论 -
判断1000年---2000年之间的闰年
//判断1000年—2000年之间的闰年#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int i = 1000; for (i = 1000; i <= 2000; i++) {...原创 2019-09-16 16:25:09 · 159 阅读 · 0 评论 -
输出乘法口诀表
//输出乘法口诀表#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(void){ int i = 1; int n = 0; for (i = 1; i <= 9; i++) { for (n = 1; n <= i; n++) {...原创 2019-09-16 16:20:26 · 328 阅读 · 0 评论 -
打印100~200之间的素数
//打印100~200之间的素数#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>int main(void){ int a = 0; int i = 0; float b = 0; for (a = 100; a <= 200; a++) { for (i...原创 2019-09-16 16:02:09 · 240 阅读 · 0 评论 -
C语言实现求0~999之间的所有“水仙花数”并输出
“水仙花数”是指一个三位数,其各位数字的立方和恰好等于该数本身,如153 = 1 + 5^3 + 3^3,则153是一个“水仙花数”。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int ...原创 2019-09-23 11:08:19 · 265 阅读 · 0 评论 -
C语言实现求Sn=a+aa+aaa+aaaa+aaaaa的和,a是一个数字
方式一:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>//计算整形数a的n次方int my_pow(int a, int b){ int i = 0; int tmp = 1; for (i = 1; i <= b; i++) { tmp = tmp *...原创 2019-09-23 11:28:11 · 2342 阅读 · 0 评论 -
C语言 递归和非递归分别实现求第n个斐波那契数
程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回...原创 2019-10-08 11:07:21 · 288 阅读 · 0 评论 -
C语言 创建一个数组, 实现函数init()初始化数组、 实现empty()清空数组、 实现reverse()函数完成数组元素的逆置
创建一个数组,实现函数init()初始化数组、实现empty()清空数组、实现reverse()函数完成数组元素的逆置。要求:自己设计函数的参数,返回值。#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>void init(int arr[], int sz){ in...原创 2019-10-08 10:58:33 · 605 阅读 · 0 评论 -
C语言 函数练习
1.使用函数实现两个数的交换。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void swap(int *p, int *q){ int tmp = *p; *p = *q; *q = tmp;}int mai...原创 2019-10-08 10:54:02 · 286 阅读 · 0 评论 -
C语言 函数实现打印乘法口诀表,口诀表的行数和列数自己指定
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,输入9,输出99口诀表,输入12,输出1212的乘法口诀表。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>void multiplication(int n){ int i = 0; int j = 0; fo...原创 2019-10-08 10:45:25 · 224 阅读 · 0 评论 -
C语言实现猜数字游戏
程序生成随机值后,输入1–100之间的数字,程序判断输入的值并提示相比较随机值偏大还是偏小,直至输入值与随机值相同时游戏结束。选项:1、开始游戏2、清屏3、退出游戏#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <time.h>void ...原创 2019-09-26 00:32:54 · 788 阅读 · 0 评论 -
C语言实现大小写转换
如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字或其他字符则不输出。方式一:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ char a =...原创 2019-09-26 01:41:11 · 1313 阅读 · 0 评论 -
C语言 模拟三次密码输入的场景
最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次,三次均错,则提示退出程序。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void){ int i = 0; cha...原创 2019-09-26 00:45:12 · 212 阅读 · 0 评论 -
C语言实现折半查找
可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>int my_search(int arr[], int sz, int target){ int lef...原创 2019-09-26 00:38:11 · 129 阅读 · 0 评论