C语言
C语言学习
流年玄月
初闻不知曲中意,再闻已是曲中人
展开
-
【进阶C语言】内存2函数造轮子--memcpy,memmove
memcpy -- 内存拷贝函数:void* my_memcpy(void* dest, const void* src, size_t num){ assert(dest && src); void* p = (char*)dest; while (num--) { *(char*)dest = *(char*)src; src = (char*)src + 1; dest = (char*)dest + 1; } return p;}int m.原创 2022-01-13 14:47:35 · 171 阅读 · 0 评论 -
【进阶C语言】通讯录--动态内存加强版
本次代码分成3个模块实现通讯录通讯录的功能有:1、增加信息:增加“姓名”、“性别”、“年龄”、“电话”、“地址”。2、删除信息:选择需要删除的信息的“姓名”,打印与“姓名”相同的相关信息,再选择对应的“序号”删除信息。 -- 可把我调试麻了,小白一枚3、查找信息:输入需要查找的信息的“姓名”,打印出所有与“姓名”相符合的信息。4、修改信息:输入需要修改的信息的“序号”,选择对应的元素进行修改。5、排序:按照“姓名”的ASCLL值进行排序。6、清空信息:清空所有的信息。7、打印原创 2022-01-15 16:19:23 · 819 阅读 · 0 评论 -
【进阶C语言】五人赛跑的真实排名
有A,B,C,D,E五位选手,他们在赛后各自说了一句真话和假话,那么真实排名是什么。代码如下:#include <stdio.h>#include <string.h>//他们五人中各一句真话,一句假话//A说:B NO.1,A NO.3;//B说:B NO.2,E NO.4;//C说:C NO.1,D NO.2;//D说:C NO.5,D NO.3;//E说:E NO.4,A NO.1;int main(){ int A = 0; int B =原创 2022-01-05 22:23:37 · 564 阅读 · 0 评论 -
【进阶C语言】宏的练习
1、写一个宏,可以将一个整数的二进制的奇数位和偶数位交换:#define CHANGE(x) (((x)&0xaaaaaaaa)>>1) + (((x)&0x55555555)<<1)int main(){ //10 int n = 11; //00000000000000000000000000001011 //10101010101010101010101010101010 求偶数位 0xaaaaaaaa //01010101010101.原创 2022-01-19 23:13:52 · 440 阅读 · 0 评论 -
【入门C语言】判断“水仙花数”
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI),自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。#include <math.h>int main(){ int i = 0; for (i = 0; i <= 1原创 2022-01-03 18:08:47 · 488 阅读 · 0 评论 -
【入门C语言】打印菱形
效果图:代码:#include <stdio.h>#include <string.h>int main(){ int n = 0; //高度 printf("多高:"); scanf("%d", &n); int i = 0; int j = 0; for (i = 1; i < n; i++) //打印上半部分 { for (j = 0; j < n - i; j++) { printf("原创 2022-01-04 00:12:37 · 174 阅读 · 0 评论 -
【进阶C语言】简易计算机--加减乘除(仅代码)
#include <stdio.h>#include <string.h>int Add(int x, int y){ return x + y;}int Sub(int x, int y){ return x - y;}int Mul(int x, int y){ return x * y;}int Div(int x, int y){ return x / y;}void menu(){ printf("************.原创 2022-01-06 22:30:05 · 2261 阅读 · 0 评论 -
【进阶C语言】指针类型练习--强化
第一题:int main(){ int a[4] = { 1, 2, 3, 4 }; int *ptr1 = (int *)(&a + 1); int *ptr2 = (int *)((int)a + 1); printf( "%x,%x", ptr1[-1], *ptr2); return 0;}解析:int main(){ int a[4] = { 1, 2, 3, 4 }; int* ptr1 = (in..原创 2022-01-10 14:49:44 · 353 阅读 · 0 评论 -
【进阶C语言】指针和数组的巩固练习(sizeof)和(strlen)
1、一维数组(sizeof)int a[] = { 1,2,3,4 }; 求下列问题的答案:printf("%d\n",sizeof(a));printf("%d\n",sizeof(a+0));printf("%d\n",sizeof(*a));printf("%d\n",sizeof(a+1));printf("%d\n",sizeof(a[1]));printf("%d\n",sizeof(&a));printf("%d\n",sizeof(*&a...原创 2022-01-09 23:25:38 · 471 阅读 · 0 评论 -
【进阶C语言】atoi函数的实现
atoi函数--字符串转换为整型int main(){ char *p= "1234"; int ret = atoi(p); printf("%d", ret); return 0;}输出结果为整型值:1234接下来我们自己来实现一个atoi函数:首先我们得考虑到: //my_atoi函数//1.非数字字符串//2.空格、空字符串//3.正负号//4.超出范围enum judgement //枚举便于区分是否错误{ incorrect, ..原创 2022-01-19 21:51:49 · 612 阅读 · 0 评论 -
【进阶C语言】杨氏矩阵找数值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言 一、pandas是什么? 二、使用步骤 总结前言指针是C语言中重要的部分,我们要多加练习才能够熟练地运用它,下面我们做一些练习题来巩固我们的指针。一、一维数组代码如下(示例):代码如下(示例):该处使用的url网络请求的数据。总结提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供..原创 2022-01-10 17:29:29 · 258 阅读 · 0 评论 -
【初阶数据结构】模拟顺序表的开辟
1、首先定义结构体:typedef int Seqdata;typedef struct SeqList{ Seqdata* data; int sz; int capacity;}SeqList; SeqList s; //定义结构体2、初始化结构体: SeqListInit(&s); //初始化结构体注意:这里为清晰,分为2个源文件,1个头文件操作//初始化结构体void SeqListInit(SeqList* pa){ .原创 2022-01-21 17:27:37 · 452 阅读 · 0 评论 -
【进阶C语言】一起来来造str轮子吧
strcpy函数char* my_copy(char* arr2, const char* arr1){ assert(arr1 && arr2); char* start = arr2; while (*arr2++ = *arr1++) { ; } return start;}int main(){ char arr1[] = "hello"; char arr2[20] = "##################"; printf(.原创 2022-01-12 12:28:17 · 341 阅读 · 0 评论 -
【入门C语言】数组中的奇数与偶数排序
如何对一个随机的数组进行奇偶数排序,我们要求奇数在后,偶数在前,无大小顺序要求。首先我们要自定义一个函数来进行整形之间的交换。int main(void){ int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; //移动奇偶数 int sz = sizeof(arr) / sizeof(arr[0]); move(arr, sz); int i = 0; for (i = 0; i < sz; i++) { printf("%d ", arr[i原创 2022-01-04 17:36:12 · 3621 阅读 · 0 评论 -
【进阶C语言】求一个数组中的两个不同数
一个数组中只有两个不相同的数,编写一个函数找出来// 1 2 3 4 5 6 1 2 3 4void Find_dif(const int* p, int sz, int* x, int* y){ int i = 0; int n = *p; for (i = 1; i < sz; i++) //全部异或上 { //假设数组是1 2 3 4 5 6 1 2 3 4 n = n ^ *(p + i); //那么n = 5^6 = 3; .原创 2022-01-19 22:37:51 · 772 阅读 · 0 评论 -
【进阶C语言】用strcat巧妙strstr判断子字符串
代码如下:#include <stdio.h>#include <string.h>#include <assert.h>int is_string_rotation(char* str1, char* str2){ assert(str1 && str2); //断言 int len = strlen(str1); strncat(str1, str1, len); //追加函数,让str1="ABCDEFABCD..原创 2022-01-11 22:15:15 · 286 阅读 · 0 评论 -
【进阶C语言】杨辉三角形--等腰三角形
杨辉三角形简单来说就是这个样子: 1 1 1 1 2 1 1 3 3 11 4 6 4 11 5 10 10 5 1第一个数是1,第二个数是上面的第1个和第2个数的和。我们要让它呈现等腰三角形的样子,就要和菱形一样每一行都留有空格。代码如下:#define N 100 //因为二维数组里必须是常量值,所以定义一个常量Nint main(){ int n = 0; int arr[N][N] = { 0 }; printf("输入行数:");...原创 2022-01-05 09:26:41 · 3873 阅读 · 5 评论 -
【C语言】扫雷小游戏,扩散,第一格不炸
扫雷小升级版原创 2021-12-23 23:14:20 · 2279 阅读 · 0 评论 -
【C语言】关于strcmp函数的理解
有时候我们用 if 或者while 来判断两个语句是否相等,会第一时间用到 ‘ == ’。例如: for (i = 1; i < 100; i++) { if (i % 3 == 1) break;在比较整型时,我们用的是 ‘ == ’,但是在比较字符串时,就不能用‘ == ’ 了,,因...原创 2021-12-16 20:12:43 · 1519 阅读 · 0 评论 -
【入门C语言】栈区的先后顺序
首先我们以下面代码为例:i <= 12,打印“hehe”int main(){ int i = 0; int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; for (i = 0; i <= 12; i++) { arr[i] = 0; printf("hehe\n"); } return 0;}run的结果是:一直打印“hehe” --(编译器是vs2019)arr数组只有10个整形,下标为0~9,i则要 >12,如原创 2021-12-29 18:26:15 · 666 阅读 · 0 评论 -
【入门C语言】求两个值的Max的两种方法
C语言--求两个值的Max原创 2021-12-13 19:55:43 · 1034 阅读 · 0 评论 -
【入门C语言】简单输入3个数从大到小排序练习
#define _CRT_SECURE_NO_WARNINGS 1#include <string.h>#include <stdio.h>int main(){ int a = 0; int b = 0; int c = 0; int tmp = 0; printf("输入3个数字:>"); scanf("%d%d%d",&a,&b,&c); //判断开始 if (a < b) { tmp = a; //设.原创 2021-12-16 20:21:56 · 994 阅读 · 0 评论 -
【入门C语言】assert 和 const 语法
断言函数:assert断言函数,用于在调试过程中捕捉程序的错误。首先得引用头文件#include <assert.h>void test(char* c){ //当test函数传来一个空指针时,用断言来判断 assert(c != NULL); printf("hi\n");}int main(){ char a[10] = { 0 }; test(NULL); return 0;}我们判断条件是 c 不是 NULL 值,条件不成立,就会报错,而且原创 2021-12-29 22:21:41 · 200 阅读 · 0 评论 -
【入门C语言】冒泡排序法
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void bublle_sort(int arr[], int sz){ int i = 0; int j = 0; for (i = 0; i < sz; i++) //重复i次 { int k = 1; //如果一次循环发现没有可调换的,就直接跳出 for (j = 0; j < sz - i; j++) { //本次循环最大的.原创 2021-12-20 20:22:50 · 550 阅读 · 0 评论 -
【进阶C语言】float浮点数的存储规则
我们知道,浮点型 printf 浮点型 = 浮点型,整型 printf 整型 = 整型,整型 printf 浮点型 = 整型那么 浮点型 printf 整形 是什么呢? 我们设置整形变量 a = 9,用浮点型的方式打印,结果为 0.000000。为什么会是这个结果呢?根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式: -----(-1)^S * M * 2^E-----(-1)^s表示符号位,当s=0,V为正数;当s=1,原创 2022-01-02 00:44:24 · 610 阅读 · 0 评论 -
【入门C语言】三子棋游戏
三子棋分为三个文件,一个是 三子棋.c / game.c / game.h三子棋.c:#define _CRT_SECURE_NO_WARNINGS 1#include "game.h"void menu(){ printf("***************************\n"); printf("******** 1.开始 ********\n"); printf("******** 0.结束 ********\n"); printf("*********原创 2021-12-21 23:56:44 · 1962 阅读 · 0 评论 -
【入门C语言】文字从两端逐渐出现
#include <windows.h>#include <string.h>#include <stdio.h>int main(){ char arr1[] = "Welcome to China!!!!!!"; char arr2[] = "######################"; int left = 0; int right = strlen(arr1) - 1; while (left <= right) {.原创 2021-12-17 13:37:59 · 401 阅读 · 0 评论 -
【C语言】从现在开始,养成排版习惯
原创 2021-12-13 19:45:17 · 364 阅读 · 0 评论 -
【C语言】关于随机数rand和srand
如果我们想在一个数组中随机抽取一个数,那我们就需要用到rand函数在MSDN中查询到翻译过来就是:rand 函数会返回一个介于 0 到 RAND_MAX 范围内的伪随机整数,在调用 rand 之前,使用 srand 函数为伪随机数生成器设定种子。什么意思呢?举个例子看看,我们将随机抽取100个值,把他printf出来首先我们得引用头文件<stdlib.h> --->RAND_MAX的值为32767,所以...原创 2021-12-15 21:38:45 · 769 阅读 · 0 评论 -
【入门C语言】学二分查找,你学废了吗
原创 2021-12-14 21:26:23 · 212 阅读 · 0 评论 -
【入门C语言】倒转字符串,简单‘女友’
快跨年了,有对象的都抱团取暖了,没有的也不要伤心,让我们创造一个建议对象把!输入'i love you',你的女朋友就会回复你'you love i'~咳咳。。虽然不是很人性化,但是,努力努力,以后会有的。void reverse(char* arr, char* end){ char tmp = 0; while (arr < end) //两个指针间的字符串调转 { tmp = *arr; *arr = *end; *end = tmp; arr++;原创 2021-12-30 23:45:06 · 312 阅读 · 0 评论