今天花了一天的时间在Linux 系统上完成了欧拉计划第13题的Larger Sum编程(花费的时间有点长啊)。既然耗了这么长的时间,那就要好好的总结一下,不然也对不起这一天的时间。这次主要是在ubantu 上编程,简单的设计到了编译、调试、链接和简单的编写Makefile。
Larger S
首先得说明一点,C 语言不是函数式编程语言,要想进行完全的函数式编程,还得先写个虚拟机,然后再写个解释器才行(相当于 CPython )。
下面我们提供一个例子,说明即便不写虚拟机, C 语言函数也是可以“适度地模仿” Python 函数。
我们有如下的 Python 程序:
1 def line
概述 - C语言老了
目前而言(2017年5月12日) C语言中有 32 + 5 + 7 = 44 个关键字. 具体如下 O(∩_∩)O哈哈~
-> C89关键字
char
short
int
unsigned
文本视图和二进制视图
二进制视图:文件每个字节都可以访问。
文本视图:文本+格式字符
fopen(file_path,mode)函数
模式:
"r" : 只读
"w" : 覆写,不存在则创建
"a" : 追加,不存在则创建
"r+" : 可读写
"w+" : 可读写,若存在则覆写,不存在则创建
"a
————————————————————————————————————————————
如果使用顺序表作为队列的话,当处于右图状态则不能继续插入新的队尾元素,否则会因为数组越界而导致程序代码被破坏。
由此产生了由链表实现的循环队列,只有队列未满时才可以插入新的队尾元素。
- - - -
在程序遇到问题调试时,有时候需要打印一些中间变量,观察完调试完又需要把这些打印注释掉,感觉很麻烦。所以写了一个小程序,可以设置打印日志等级。
在主程序设置要打印的日志等级debug,就把相应的等级的日志全部打出来观察。
程序用到了va_list(在C语言中解决变参问题的一组宏),相关知识可参考h
在c语言中,指针和数组名都表示地址,但两者却有很大的不同之处,对于初学者来说一定要弄清楚两者的区别。
首先,我举个简单的例子:
char *p1="hello!"; //定义字符型指针p1,并将指针p1指向字符串“hello!”的首地址。
char s[10]="hello!"; //定义数组s
在C语言中switch...case语句是经常用到的,下面我介绍一下在使用该语句时候需要注意的一个细节问题。话不多说,直接举例子:
例子1:
switch(fruit)
{
case 1:printf("apple"); break;
case 2:printf("banana"); break;
如下函数
char (*retCharWithInt(char, char))(int);
申明了函数指针retCharWithInt,该指针指向一个形参是(char,char),返回值是char(*)(int)的函数。
若是定义
char (*retCharWithInt(char c1
多线程计算整型数组数据总和:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#include<process.h>
#include <time.h>
#defin
一、基于事件的任务调度器
1.事件任务调度器数据结构
typedef unsigned char bit_t;
typedef unsigned char u1_t;
typedef signed char s1_t;
typedef unsigned short
1.编写一个程序。该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。
#include<stdio.h>
#include<ctype.h>
int main(void){
char ch;
int count
函数与指针
#include <stdio.h>
double min(double x, double y);
void chline(char ch[], int i, int j);
void to_binary(int i);
long fibonacci(int n);
v
大三上学期做的一个小项目
类C编译器
源代码和测试文件地址https://github.com/zxt1995/ttbox.git
总体框架: 读入待编译文件->语义分析并转换为指令->按照指令进行栈操作->得出结果
拓展部分(个人负责内容 其他内容在代码中有注释)
编写Makefile是一个苦乐交织的事情,快乐是因为从一堆需要手工逐个处理的编译过程,进步到一条命令完成,看着代码顺畅的在屏幕上滚动,编译为最终的产品,那个过程无比愉悦;而痛苦则是,写代码已经很累了,写完代码还要编写Makefile,这多出来的一点工作,很有点最后一根稻草的感觉。
最近整理手头的几
本文是写给Mac电脑开发新手的入门帖,诸神请退散。
C语言
C语言可说是电脑环境中的“镇国神器”,从发明至今,虽然C语言的使用者缓慢的减少,但从当前市场应用情况看,尚无一台电脑能够摆脱C语言的支撑而生存。
此外由于大多数主流操作系统都主要使用C语言编写,使得C语言跟操作系统结合最为紧密,从而更容易
BFS将近两年没练过题了,今天重新回忆下以前刷的蓝桥杯题:九宫格重排
样例输入
123456780 //初始状态
123046758 //终点状态
样例输出
3
一、运算符的优先级和结合性
1,优先级
运算符一览表中,运算符越靠上,优先级越高。
2,结合性
假如用O表示需要两个操作数的双目运算符,那么对于表达式aObOc:
左结合运算符会将表达式解释为 (aOb)Oc 【左结合性】&
typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; };
List 是一个对LNode类型重命名的 指针类型 。
使用: List L; 得到一个类型为LNode
求一维数组方法:
int a[] ={0,0,1,1};
int len= sizeof(a)/sizeof(a[0]);
注意:这是在定义数组后直接求长度;
在下面这种情况下这种方法不适用:
in