10 2021 档案
摘要:在前4章中介绍了C语言的主要内容,已经足以应付许多算法竞赛的题目了,然而能写不代表好写,有些虽然能够用C语言实现,但是使用C写起来往往会更快,并且不容易出错 从c到c C语言是一门很有用的语言,但在算法竞赛中却不流行,原因在于它太底层,缺少一些实用的东西 C的精华与糟粕并存。本章介绍的C特性是算法竞
阅读全文
摘要:在C语言中函数的声明和定义一般是分开的,声明放在main函数的前面,而定义可以放在后面慢慢实现,当然这就是一个美观方便人阅读的功能,到后面我们可以将声明放到.h文件中,而将函数的实现放在另一个文件下,并且对其进行一定的保密处理,这样自己的产品就可以得到保护的同时,又可以放心的发布出去 当然笔者在编译
阅读全文
摘要:到目前为止,本书所需要介绍的C语言知识已经全部讲完了,本章涉及了指针和递归 头文件,副作用及其他 读者应该已经知道main函数也是一个普通的函数(甚至可以递归调用),其返回值将告知操作系统,在算法竞赛中应当总是等于0,唯一的谜团就是#include<stdio.h> 笔者尝试的代码如下 点击查看代码
阅读全文
摘要:1.循环数组一般不推荐通过建立相同的数组不断叠加来实现,虽然理论上是可行的,但是会浪费极大的空间,特别是对于大数据的情况下,程序一般会马上挂掉 2.循环数组的结构表示中的一种常用形式就是通过取余操作来实现这种伪循环 3.取余操作对负数取余其结果仍然是负数,对正数取余其结果是正数,对0取余其结果仍然是
阅读全文
摘要:1.笔者发现有时候自己的程序取名如果太长的话,每次使用gcc编译的时候自己手打的话会非常痛苦,在dos下有一个非常方便的方法,那就是打出相关程序的前几个字母,然后就可以通过tab键来切换相关程序名,非常方便,注意如果命名的时候有空格的出现,那么就需要加上双引号,不然计算机并不会读入第一个空格后面的东
阅读全文
摘要:在定义结构体变量之前,需要先申明该结构体类型。 错误样例: 点击查看代码 stu st1; struct stu { int age; char name[20]; };//error 正确样例: 点击查看代码 struct stu { int age; char name[20]; }; stu
阅读全文
摘要:从技术实现来说,不用函数和递归也可以写出所有程序,也就是说函数和递归均可以用其他内容替代 但是从实用的情况下来讲,递归能够帮我们大忙。 比如说,函数递归可以增加程序的可读性,可维护性 更好的调试技巧,不如先学习如何更好的写程序,如果方法得当,不仅能够更快的写出更短的程序,而且调试起来也更轻松,隐含的
阅读全文
摘要:终于到递归了,前面的函数指针数组的指针你掌握了吗?Let's go on! 递归的定义 递归: 参见“递归” 递归: 如果还是没明白递归是什么意思,参见“递归” 递归就是自己用到自己的意思 递归未必只是自己跟自己,扩大概念 A经理:这事不关我管,找B经理 B经理:这事不关我管,找A经理 两者之间会不
阅读全文
摘要:函数指针的类型一般这样定义 返回值类型 (*函数指针)(参数类型) 这边的参数类型有时候我们经常使用const void*因为这个void类型的指针的兼容性非常好,void类型的指针可以强制转化成其他类型的指针,非常方便 因为函数再编译的过程中函数名其实最后就是通过将其转化为函数的地址来实现的因此通
阅读全文
摘要:把函数作为函数的参数,有一个非常典型的应用--排序 C语言的stdlib.h中有一个叫qsort的库函数,实现了著名的快速排序算法,他的声明是这样的 void qsort(void* base, size_t num, size_t size, int (*comparator)(const voi
阅读全文
摘要:1.%d int 整型 4字节(但是有时候在某些编译器下仅仅给了2字节成为short数据类型,不是长整型,只是保证short和int类型的内存至少有16位) 2.%ld long 长整型 4字节 3.%lld long long 长长整型 8字节 4.%llu unsigned long long
阅读全文