c语言学习记录
文章平均质量分 50
在于不说
这个作者很懒,什么都没留下…
展开
-
用C语言实现通讯录(初阶)
包括三个文件。test.c——用于测试功能Contact.c——用于写各种功能函数实现代码Contact.h——用于声明函数或者结构的代码如下:1、Contact.h#define _CRT_SECURE_NO_WARNINGS 1#define MAX 1000#define MAX_NAME 20#define MAX_SEX 5#define MAX_TEL 12#define MAX_ADDR 30#include <stdio.h>#include <原创 2021-03-31 09:24:44 · 212 阅读 · 0 评论 -
结构体实现位段
结构体实现位段**(1)什么是位段?位段的声明和结构是类似的,有两个不同:位段的成员必须是int 、unsigned int 或signed int位段的成员名后边有一个冒号和一个数字例如:struct s{ int _a:1; int _b:5; };s就是一个位段类型。(2)位段的内存分配位段的成员可以是int 、unsigned int 、signed int或者是char(属于整形家族)类型位段的空间上是按照需要以4个字节(int)或者1个字节(char)的方式开辟原创 2021-03-30 23:59:39 · 188 阅读 · 0 评论 -
枚举
枚举**枚举顾名思义就是一一列举。把可能的取值一一列举。1、枚举类型的定义enum Sex{ MALE, FEMALE, SECRET};上面的enum Sex是枚举类型,{}中的内容是枚举类型的可能取值。也叫枚举常量。这些可能取值都是有值的,默认从零开开始,依次递增1,当然在定义的时候也可以赋初值。enum Sex{ MALE = 1, FEMALE = 7, SECRET }; 2、枚举的优点我们可以用#define来定义常量,那为什么要用枚举呢?枚举的优点增加原创 2021-03-30 23:58:19 · 138 阅读 · 0 评论 -
联合(共用体)
联合(共用体)**1、联合类型的定义联合也是一种特殊的自定义类型,这种类型定义的变量也包括一系列的成员,特别是这些成员共用同一块空间(所以联合也叫共用体)例如://联合体声明union U{ char c; int i; };//联合变量的定义union U u;上面代码中的u联合体变量的大小为4。2、联合的特点联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是最大成员的大小(因为联合至少得有能力保存那个最大的成员)面试题:判断当前计算机的大小端存储#defin原创 2021-03-30 23:57:25 · 259 阅读 · 0 评论 -
内存函数的使用与剖析
一、memcpy函数void* memcpy(char dest,const char src,size_t num);规定:函数memcpy 从source的位置开始向后复制num个字节的数据到dest的位置。这个函数在遇到’\0’的时候并不会停下来如果source和dest有任何重叠,复制的内容都是未定义的。c语言规定,memcpy函数处理的是内存不重叠的复制,内存重叠的复制由memmove函数来完成。1、memcpy函数实现#define _CRT_SECURE_NO_WARNIN原创 2021-03-30 00:39:17 · 88 阅读 · 0 评论 -
字符串函数使用与剖析——长度受限的字符串函数
长度受限的字符串函数一、strncpy函数char* strncpy(char *dest,const char *src,size_t num);功能:拷贝num个字符从源字符串到目标空间规定:如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后面追加0,直到num个。1、strncpy函数模拟实现#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <Windows.h>#incl原创 2021-03-29 17:01:20 · 343 阅读 · 0 评论 -
字符串函数的使用和剖析——长度不受限的字符串函数
模拟实现函数函数介绍:1、strlensize_t strlen(const char* str);字符串是以‘\0’结尾的。strlen返回的是‘\0’前出现的字符的个数,不包括‘\0’的长度。参数指向的字符要以‘\0’结尾注意函数的返回值是size_t,是无符号的**(易错)**strlen模拟实现int my_strlen(const char *p){ assert(*p); int count=0; while (*p){//遇到'\0'结束 count++;原创 2021-03-28 16:23:32 · 281 阅读 · 1 评论 -
C语言指针进阶学习
指针类型:1、字符指针char* a能够指向字符数据的指针2、整型指针int *a能够指向整型数据的指针3、浮点型指针float *a能够指向浮点型数据的指针4、数组指针int a[7] = {1,2,3,4,5,6,7};int (*p)[7] = &a;能够指向数组的指针5、函数指针注:!!!1、sizeof(数组名) ------>数组名表示整个数组2、&数组名 ----------> 数组名表示整个数组3、其余情况下数组名原创 2021-03-25 10:17:39 · 258 阅读 · 0 评论 -
指针作业
#define _CRT_SECURE_NO_WARNINGS 1#include <Windows.h>#include <stdio.h>test(){ char arr[] = "abcdefg"; printf("逆序前的数组\n"); printf("%s", arr); printf("\n"); int sz = strlen(arr); int i = 0; for (i = 0; i < sz / 2; i++){ char tmp .原创 2021-03-21 13:27:30 · 188 阅读 · 2 评论 -
数据存储以及初阶指针应用
任意类型冒泡排序练习//任意类型冒泡排序#include <stdio.h>#include <Windows.h>struct stu{ char name[5]; int age;};//结构体中的年龄int cmp_age(const void* e1, const void *e2){ return ((struct stu*)e1)->age - ((struct stu*)e2)->age;}//结构体中的年龄int cmp_n..原创 2021-03-20 14:50:01 · 92 阅读 · 0 评论 -
2021-03-17作业完成情况
void Init(int arr[NUM], int num){ int i = 0; for (i = 0; i < num; i++){ arr[i] = 0; }}void print(int arr[NUM], int num){ int i = 0; for (i = 0; i < NUM; i++){ printf(" %d", arr[i]); } printf("\n");}void reverse(int arr[NUM], int num){.原创 2021-03-17 18:29:57 · 68 阅读 · 0 评论 -
冒泡排序
昨天晚上听课的时候老师提到了冒泡排序,本来以为自己已经掌握了。结果私下学习的时候发现自己虽然知道冒泡排序的过程,但是对呀编码一塌糊涂,所以来总结一下。这是冒泡排序的普通写法:void Bubble(int arr[NUM], int num){ int i = 0; int j = 0; int tmp = 0; for (i = 0; i < num; i++){//排序的趟数 for (j = 0; j < num - 1 - i; j++){//每趟排序的个数 if原创 2021-03-17 09:10:30 · 61 阅读 · 0 评论 -
c语言扫雷游戏
本游戏由三个文件构成分别是game.h(头文件)game.c和test.cgame.h内容为:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define T_COUNT 10 //雷的个数voi原创 2021-03-15 22:06:55 · 68 阅读 · 0 评论 -
C语言学习——递归
递归:调用本身的编程就叫递归递归的两个必要条件:1、递归一定要存在能够结束递归的条件2、每次递归都要越来越接近递归结束的条件。注:递归的次数太多了也不行,可能会出现栈溢出的问题。递归习题练习:1、汉诺塔问题第一步:分析问题,确定问题思路。汉诺塔代码:void move(char x,char z){printf("%c->%c移动了一个盘子\n",x,z);}void hanoi(int num,char x,char y,char z){if(num==1)print原创 2021-03-15 17:55:05 · 432 阅读 · 0 评论 -
2021.3.12 c语言学习——分支和循环的练习
2021.3.12 c语言学习——分支和循环的练习今日练习练习效果:练习一:代码:int main(){int num = 0;int fac = 1;int sum = 1;printf(“请输入你要求得阶乘数\n”);scanf("%d", &num);for(fac=1;fac<=num;fac++){sum = sum*fac;}printf("%d的阶乘数值为%d",num,sum);}显示结果:练习2:练习3:int binsearch(原创 2021-03-14 17:22:00 · 375 阅读 · 0 评论