- 博客(36)
- 收藏
- 关注
原创 数据结构项目二:停车场管理
项目目的:为了深入理解队和栈的使用原理,利用一个栈两个队列简单实现停车场的管理。Parking.h 文件:#ifndef __PARKING_H__#define __PARKING_H__#define TRUE 1#define FALSE 0#define SIZE 20#define TIME 86400/*停车场管理问题描述:停车场
2017-10-25 15:57:06
4362
3
转载 知识点1:C语言中exit()与return的区别
exit函数和return函数:1、exit函数和return函数的主要区别是: 1)exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关
2017-08-17 19:36:12
642
原创 强化练习9:将不定长的字符串转化为一个16位的字符数组
题目:将不定长的字符串转化为一个16位的字符数组。程序如下:#include #include #define SIZE 100#define LEN 16// 多位数自加成一位数int Add_Str (int Num){ int sum = 0; while (Num) { sum += Num % 10; Num /= 10; }
2017-08-14 20:15:15
1131
原创 笔记11:进程控制编程
1、获取进程的id头文件:#include #include 函数原型:获取本进程IDpid_t getpid(void)获取父进程IDpid_t getppid(void)获取用户IDpid_t getuid(void)例:#include #include #include int main(){ pr
2017-08-11 19:44:52
297
原创 笔记10: 进程控制的基本概念
1、进程(1)进程狱程序的区别 程序是放到磁盘的可执行文件。 进程是指程序执行的实例。(2)进程的地址空间分配给每个进程的内存(memory)由一系列段(segments)组成: ①text segment(代码段) 包含机器语言指令。通常是只读的、共享的。 ②initialized data segment(初始化数据段
2017-08-09 19:45:53
416
原创 文件系统编程的应用
修改项目通讯录:利用文件读取数据,写入数据。头文件:AddressList.h#ifndef __ADDRESSLIST_H__#define __ADDRESSLIST_H__#define FALSE 0#define TRUE 1#define N 20typedef struct _information{ int id; char name[N]
2017-08-08 20:24:49
299
原创 笔记9:Linux 文件系统编程
1、什么是系统调用所有的操作系统都提供多种服务的入口点,程序由此向内核请求服务。这些可直接进入内核的入口点被称为系统调用。2、什么是文件文件是系统资源(内存、硬盘、一般设备、进程间通信的通道等)的一个抽象。对系统资源进行访问的一个通用接口。普通文件一般意义上的文件,作为数据存储在磁盘中,可以随机访问文件的内容。Linux系统中的文件是面向字节的,
2017-08-07 19:33:56
531
原创 强化练习8:将一个班级40位同学随机分成10组
#include #include void swap(int *a, int i, int j){ int tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void printA(int *a, int len){ int i; for (i = 0; i < len; i ++) { if (i % 4 == 0) prin
2017-08-07 09:03:08
1050
原创 笔记8:二叉树
二叉树的定义:二叉树是由 n ( n ≥0 ) 个结点组成的有限集 合,该集合或者为空,或者是由一个根结点加 上两棵分别称为左子树和右子树的、互不相交 的二叉树组成。程序如下:#ifndef __BTREE_H__#define __BTREE_H__#define BLEFT 0 // 表示插入二叉树的左边#define BRIGHT 1 // 表示插入二叉
2017-08-06 20:05:35
224
原创 笔记7:树
1、树的定义:树是一种非线性的数据结构树是由 n ( n ≥0 ) 个结点组成的有限集合如果 n = 0,称为空树;如果 n > 0,则:有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱。除根以外的其它结点划分为 m (m ≥0) 个互不相交的有限集合T0,T1,…,Tm-1,每个集合又是一棵树,并且称之为根的子树。2、
2017-08-06 20:01:59
217
原创 强化练习7:请编写一个c函数,该函数给出一个字节中被置为1的位的个数
题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数 程序如下:#include void num(char ch) { int count = 0; int i; for(i = 0;i < 8; i++) { if(ch & 1 == 1) {
2017-08-06 19:54:00
391
原创 强化练习6:判断一字符串是否为回文,是返回1,不是返回0,出错返回-1
题目:判断一字符串是否为回文,是返回1,不是返回0,出错返回-1 程序如下:#include int fun(char *p){ if (p == NULL) return -1; char *pstart = p; char *pend = p; while (*pend) { pend++; } pend--; while
2017-08-06 19:46:12
2465
1
原创 强化练习5:找合法帧
题目:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧。程序如下:#include #include char *findstr(char *str, char *sub)
2017-08-06 19:37:53
251
原创 强化练习4:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数), 凡报到3的人退出圈子,问最后留下的是原来第几号。
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号。程序如下:#include int main() { int a[100]; int i,n,q; int p = 0; printf("input number:"); scanf("%d",&n); q = n; for
2017-08-06 19:31:24
903
原创 强化练习3:判断闰年
题目:判某一年是否闰年。输入:年(year)计算:判是否闰年输出:闰年或非闰年(leap)闰年条件:能被4整除,但不能被100整除。能被4整除,又能被400整除。程序如下:#include int main(){ int year; int leap; scanf("%d", &year); if((year%4 == 0 && ye
2017-08-06 19:24:53
263
原创 强化练习2:编程实现统计某年某月份的天数
口诀:一三五七八十腊(1,3,5,7,8,10,12),31天永不差,平年二月28,闰年二月29,其他月份三十天。程序如下:#include int main(){ int year; int month; scanf("%d %d", &year, &month); switch (month) { case 1: case 3: c
2017-08-06 19:19:57
518
原创 强化练习1:通过编程实现,分别统计0~n有多少个0~9 提示:n通过参数传入
程序如下:#include int main(){ int c[10]; int i; for (i = 0; i<10; i++) { c[i] = 0; } int num; scanf("%d", &num); c[0] = 1; for (i = 1 ; i <= num; i++) { int num = i; while (num
2017-08-06 19:15:43
232
原创 几种常见的排序(二)
1、希尔排序#include void swap (int *a, int i, int j){ int tmp; tmp = a[i]; a[i] = a[j]; a[j] = tmp;}void printfA (int *a, int len){ int i; for (i = 0; i < len; i++) { printf ("%4d", a[i])
2017-08-06 19:08:35
183
原创 几种常见的排序(一)
1、冒泡排序:冒泡排序是一种极其简单的排序算法,也是我所学的第一个排序算法。它重复地走访过要排序的元素,依次比较相邻两个元素,如果他们的顺序错误就把他们调换过来,直到没有元素再需要交换,排序完成。这个算法的名字由来是因为越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: ①比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。②对每一对相邻元
2017-08-04 17:40:16
392
原创 笔记6:链表(三种:头指针、头结点、头结点循环)
1、头指针链表#include #include #define TRUE 1#define FALSE 0typedef int LinkData; // 链表的数据类型typedef struct _node{ LinkData data; // 链表的数据 struct _node *next; // 指向链表下一个结点的指针}N
2017-08-03 20:35:50
443
原创 笔记5:顺序表
#ifndef __SEQLIST_H__#define __SEQLIST_H__#define FALSE -1#define TRUE 0#define INIT_SIZE 100#define INCRESS_SIZE 20 typedef int SeqData;// 顺序表结构typedef struct _seqList{ SeqDa
2017-08-02 19:39:21
196
原创 笔记4:队列
1、顺序队列#ifndef __SQQUEUE_H__#define __SQQUEUE_H__#include "error.h"#define TRUE 1#define FALSE 0#define SIZE 10typedef int QueueData;typedef struct _queue{ QueueData data[SIZE]; int fron
2017-08-01 21:00:48
145
原创 笔记3:栈
栈的定义: 只允许在一端插入和删除的线性表; 允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)。栈的特点: 后进先出 (LIFO)。1、顺序栈#ifndef __SQSTACK_H__#define __SQSTACK_H__#include "error.h"#define TRUE 1#define FALSE 0#de
2017-07-28 20:41:44
186
原创 初次项目:电子通讯录
学C语言快一个月了,第一次做项目,中间出现了许多BUG,终于勉勉强强实现了预期的所以功能!其中还存在一些BUG(如:输入字符程序崩溃等等),后期完成阶段学习会回来完善代码。AddressList.c 文件:#include #include #include "AddressList.h"#include //主菜单int Interface_Display(
2017-07-26 20:07:55
378
2
原创 头结点链表的三种插入结点方式
1、头文件(.h)#ifndef __LINKLIST_H__#define __LINKLIST_H__#define FALSE 0#define TRUE 1typedef int LinkData;typedef struct _node{ LinkData data; struct _node * next;}Node;// 创建链表Node * Cre
2017-07-25 20:36:23
1394
原创 笔记2:结构体的概述与使用
1、结构体的声明声明一个结构体类型一般形式:struct 结构体名{结构体所包含的成员变量;};例: struct stu{char name[20];Int age; }; 2、定义结构体的类型变量例:struct stu s1,s2;struct stu{char name[20];Int age; }s1,s2;
2017-07-22 20:43:52
197
原创 笔记1:函数的概述与递归函数
1、函数的概述函数(Function)是一段可以重复使用的代码,除了C语言自带的函数,我们也可以编写自己的函数,称为自定义函数。函数三要素: ①返回值:由关键字 return 进行返回; ②函数名;由数字、字母、下划线组成,不能以数字开头; ③函数参数。放在括号 () 内,每一个参数之间用逗号
2017-07-21 20:02:37
263
原创 函数指针小结
题目:输入一个字符串,同时输入帧头和帧尾(可以是多个字符)。将该字符串中合法的帧识别出来。提示:帧头和帧尾分别是head和tail 。字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧。#include #include // 在字符串str中寻找字符串sub,如果找到返回从sub开始的字符串char *
2017-07-20 20:59:49
150
原创 C语言中指针的一些易错点!
1、字符数组与字符串的使用注意:数组名是指向数组首个元素的地址。先看个例子:#include int main(){ char *str = "hello"; int len = strlen(str); int i; //直接输出字符串 printf("%s\n", str); //使用*(str+i) for(i=0;
2017-07-19 17:56:13
2412
原创 趣味题:李白打酒
待续!#include int count = 0;void libaidajiu(int alco, int store, int flower){ if (store > 5 || flower > 10) return; if (store == 5 && flower == 9) { if (alco == 1) count++; return ;
2017-07-18 21:00:45
530
原创 利用指针对数组&句子进行逆序
最近开始学习指针,以前我们学过一些排序(冒泡、选择等等),这次给大家带来指针的一些用法!1、将数组a[10] = {1,2,3,4,5,6,7,8,9,10}逆序输出#include //利用指针将数组逆序int main1(){ int a[10] = {1,2,3,4,5,6,7,8,9,10}; int *p1 = a; int *p2 = a + si
2017-07-17 20:10:08
1682
原创 一些字符串处理函数的实现!
最近刚学完数组,把一些学了的字符串处理函数进行自己理解,写出了他们的一些转化程序。有出错的地方请大家指出,相互学习!1、strcat字符串追加size_t strcat(char * _Str1, const char * _Str2);将参数_Str2追加到_Str1后尾strcat字符串追加的实现:#include #include //strcat
2017-07-16 21:00:17
291
原创 敲黑板!break和continue的区别!
首先,我们分别了解break和continue的定义。1、break语句的功能是:在switch语句中使流程跳出switch结构。在循环语句中使流程跳出当前循环。举例:将从键盘上输入的若干个正整数求和,遇到负数则终止程序,并且输入的数不超过10个。 输入:正整数 计算:求累加和 输出:和#include #define MAX 10int m
2017-07-14 00:04:22
237
原创 分享一条趣味题:谁是凶手?
题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。以下为4个嫌疑犯的供词。A说:不是我。B说:是C。C说:是D。D说:C在胡说已知3个人说了真话,1个人说的是假话。现在请根据这些信息,写一个程序来确定到底谁是凶手?参考程序:#include int main(){ char killer; int i; for (i
2017-07-13 00:26:37
628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人