C学习笔记
不会code的菜鸟
这个作者很懒,什么都没留下…
展开
-
assert() 断言函数,用于在调试过程中捕捉程序错误
转载:http://c.biancheng.net/ref/assert.htmlvoid assert (int expression);断言函数,用于在调试过程中捕捉程序的错误。“断言”在语文中的意思是“断定”、“十分肯定地说”,在编程中是指对某种假设条件进行检测,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序执行。assert() 会对表达...转载 2020-03-29 14:27:50 · 822 阅读 · 0 评论 -
使用qsort对结构体指针数组根据compare规则进行排序
有一个记录学生信息的文件,每一行记录一名学生的信息,格式如下:学号\t 姓名\t 性别\t 分数 1\t 分数 2\t 分数 3\n.要求:(1) 读取文件的内容, 串成一个链表。(2) 按照总分递减排序将结果保存到原文件(3)使用命令行参数读取文件#define _CRT_SECURE_NO_WARNINGS#define USR_NAME_LEN 20#define N 10...原创 2020-03-08 16:25:17 · 829 阅读 · 0 评论 -
动态内存分配和释放:malloc,realloc,calloc,free函数
以下三个内存分配函数的返回值都是void*,void*可以强制转化为其他类型的指针malloc函数#include <stdlib.h>void *malloc( size_t size );该函数在堆区分配一个size字节大小的连续空间,如果分配失败返回NULL。#include <stdio.h>#include <stdlib.h>#inc...原创 2020-03-08 16:16:33 · 273 阅读 · 1 评论 -
学生管理系统,链表的增删改查,C语言文件操作,动态内存的分配和使用
该系统管理学生的课程信息。系统提供账户的管理和学生信息的管理功能。系统提供的功能主要有学生信息的查询、修改、增加、删除,账户信息的查询、修改、增加、删除。刚进入系统有两个选择管理者(身份码为1)普通学生(身份码为2)初始化了两个登录身份管理者使用姓名和密码登录:admin 123学生使用姓名和学号登录:zhangsan 111学生的功能只有一种,查看自己的信息为了方便期间,学生...转载 2020-03-08 15:33:38 · 875 阅读 · 0 评论 -
setjmp函数的简单用途
需要在函数内部进行跳转可以使用goto,在函数之间进行跳转就需要使用setjmp函数#include <setjmp.h>int setjmp(jmp_buf envbuf);该函数将系统栈保存于envbuf中,以供以后调用longjmp()。当第一次调用setjmp(),它的返回值为0。之后调用longjmp(),longjmp()第二个参数即为setjmp()的返回值。#...原创 2020-02-23 00:31:54 · 3845 阅读 · 1 评论 -
红黑树的自旋转和结点插入操作的解析
红黑树可以实现自平衡,主要依靠于它的旋转和变色的特性//红黑树节点typedef struct RBTreeNode{ unsigned char color; Type key; struct RBTreeNode* left; struct RBTreeNode* right; struct RBTreeNode* parent;}Node, *RBTree;//红黑树的...原创 2020-02-16 00:51:14 · 277 阅读 · 0 评论 -
C语言习题:使用链表实现大整数加法(考虑存在负数的情况)
程序设计思路:首先需要采用尾插法建立两个链表在考虑大整数加法时,需要考虑数据正负的情况因此我们对数据取绝对值进行运算假设有两个链表List1和List2当List1和List2都为正数时,直接进行相加计算当List1和List2都为负数时,对绝对值进行相加计算,然后采用链表的头插法在顶端插入负号。当List1和List2一正一负时,需要考虑两个数绝对值的大小当List1为负数,Li...原创 2020-02-15 16:16:00 · 1374 阅读 · 0 评论 -
C语言习题:替换字符串中的空格为XXX,不借助辅助空间的实现
将字符串中的空格替换成“ %020”下面程序设计的优点在于可以不借助辅助空间,在原字符串数组中直接替换并输出#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ char str[100]; while (memset(str, 0, sizeof(str)), f...原创 2020-02-14 23:49:35 · 218 阅读 · 0 评论 -
C语言习题:反转字符串的实现,将字符串以单词为单位反转输出
输入一行字符串,把字符串翻转 。Input: I____am__a__studentOutput: student__a__am____I#include <stdio.h>#include <string.h>#include <stdlib.h>void reverse(char *str, int beg, int end){ for (i...原创 2020-02-14 23:37:58 · 633 阅读 · 0 评论 -
C语言习题:根据struct某一成员变量对struct进行排序,头插法和尾插法建立链表,找出链表中间结点,判断链表是否存在环
1、有一个学生结构体,其数据成员有:学号,姓名,3 门课程。从键盘上输入5 个学生的信息。要求输出:(1) 按照学号递增输出全部学生信息,每个学生的信息一行。(格式:学号姓名分数1 分数2 分数3 总分)(2) 输出每门课程最高分的学生的信息(3) 输出每门课程的平均分(4) 按照总分输出学生排名#define _CRT_SECURE_NO_WARNINGS#include <...原创 2020-02-12 19:12:00 · 401 阅读 · 0 评论 -
C语言习题:使用数组指针和二级指针分别实现字符串数组的排序
1、实现大整数加法(要考虑正负数的情况)//备注:负数的加法设计逻辑未实现#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>void reserve_str(int* str, int len);void add_big_int(int* a, int* b, int len1...原创 2020-02-11 23:39:20 · 967 阅读 · 0 评论 -
C语言习题:从 (0,0) 到(m,n)每次只走一步,只能向上或者向右走,有多少种路径走到(m,n)
从 (0,0) 到(m,n)每次只走一步,只能向上或者向右走,有多少种路径走到(m,n)//到达(m,n),可以从左或下两个方向,左边和下边单独进行递归求路径到下一个点。//这种归纳到最后,应该就成了(1,1)-(1,0 )或者(0,1),//然后(0,0)到这两个点都是1条路径,所以if(x == 0 || y == 0) return 1#define _CRT_SECURE_NO...原创 2020-02-11 23:18:00 · 1944 阅读 · 1 评论 -
C语言malloc指针转化和动态开辟二维数组(day_8)
//1、malloc指针转化#include <stdio.h>#include <string.h>int main() { char* p[5]; char arr[5][10] = { "hello", "abc", "world", "ab", "wangdao" }; int i, j, count; char* tmp; char** p2; ...原创 2020-02-11 19:01:19 · 316 阅读 · 0 评论 -
C语言习题:有关数组的练习操作
1.1、 求两个有序数组的公共元素#include <stdio.h>int main() { int a[] = { 1, 2, 3, 4, 5, 6, 7, 8 }; int b[] = { 2, 4, 6, 8, 10 }; int i = 0, j = 0; while (i < sizeof(a) / 4 && j < sizeof(b...原创 2020-02-10 23:52:34 · 934 阅读 · 0 评论 -
C语言习题:进制转化,打印日期,打印柱状图
1、从键盘上输入字符,将小写字母转换成大写字母。输入“ctl + z” 结束#include <stdio.h>int main() { char c; int ret; while (scanf("%c", &c) != EOF) { if (c != '\n') { printf("%c", c - 32); } else { printf...原创 2020-02-10 23:32:59 · 633 阅读 · 0 评论 -
C语言习题:实现 mystrcpy(), mystrcmp(), mystrcat(), mystrlen() and 输入一行字符串,将字符串反转输出
1、实现 mystrcpy(), mystrcmp(), mystrcat(), mystrlen() ;#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>size_t mystrlen(char c[]) { int i = 0; while (c[i]) { i++;...原创 2020-02-10 22:49:03 · 1271 阅读 · 0 评论 -
C语言习题:有10X个整数,其中有50个数出现了两次,X个数出现了一次, 找出出现了一次的那X个数。
(1)有101个整数,其中有50个数出现了两次,1个数出现了一次, 找出出现了一次的那个数。(2)有102个整数,其中有50个数出现了两次,2个数出现了一次, 找出出现了一次的那2个数。(3)有103个整数,其中有50个数出现了两次,3个数出现了一次, 找出出现了一次的那3个数。#include <stdio.h>#define MAX 20int case1(int arr...原创 2020-02-10 22:05:49 · 504 阅读 · 0 评论 -
C语言习题:字符串操作函数练习题目
1、将包含字符数字的字符串分开, 使得分开后的字符串前一部分是数字后一部分是字母。例如“h1ell2o3”->”123hello”#include <stdio.h>#include <string.h>#include <ctype.h>void divide_str(char* str1, char* str2);int main() { ...原创 2020-02-09 19:47:39 · 2207 阅读 · 0 评论 -
C语言习题:打印XX年XX月日历的程序
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int isleap(int year); //判断是否为闰年int month_day(int year, int month); //返回某月的天数int month_first_day_week(int year, int month); //返回某...原创 2020-02-08 12:48:32 · 746 阅读 · 0 评论