
C语言
文章平均质量分 88
ZM970307
学习中.
展开
-
二叉树的层序遍历(附完整C++代码)
原理介绍层序遍历所要解决的问题很好理解,就是按二叉树从上到下,从左到右依次打印每个节点中存储的数据。如下图: 按层序遍历的原则,打印顺序依次应该是:A->B->C->D->E->F->G。 看完是不是感触非常深,这不就是队列数据结构最拿手的绝活吗,FIFO,先进先出!我从上到下,从左到右依次将每个数放入到队列中,然后按顺序依次打印就是想要的...原创 2018-04-13 20:28:21 · 6595 阅读 · 1 评论 -
进程与进程描述符
一、 进程进程(Process) 计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。—————...转载 2018-03-20 22:12:29 · 1345 阅读 · 0 评论 -
C/C++ 字符数组的输入输出
字符数组就是char数组,当维度是一维是可以当做“字符串”,当维度是二维时可以当成是字符串数组,即若干字符串。字符数组的输入除了使用scanf外,还可以使用getchar或者gets;其输出除了使用printf外,还可以使用putchar或者puts。(1)scanf输入,printf输出scanf对字符串的输入有%s和%c两种格式。%c格式用来输入单个字符,它能够识别空格和换行符并将其保存到字原创 2018-01-30 14:20:56 · 1564 阅读 · 0 评论 -
txt矩阵
最近在写一个程序, 要求如下: 1.txt文件中有一个m*n的数字矩阵, 2.txt文件中也有一个m*n的数字矩阵, 编写程序, 创建3.txt文件, 使得其中存储一个m*n的矩阵, 矩阵的元素为对应的1.txt与2.txt中元素的和。目前, 写了一段程序, 只能实现1*1的矩阵相加, 正在努力完善程序。 程序如下:#include<stdio.h>#include<string原创 2017-06-10 00:36:02 · 1085 阅读 · 0 评论 -
printf的输出条件
语法哦转义字符”\n”时, 会输出;、遇到scanf时, 会输出, 因为scanf刷新了缓冲区;遇到fflash时, 会输出, 因为fflash刷新了缓冲区;缓冲区满是, 会输出。原创 2017-06-03 23:48:35 · 676 阅读 · 0 评论 -
链表相关程序练习
链表相关程练习源程序#include <stdio.h>#include <stdlib.h>#define T 1#define F -1typedef int Type;typedef int Status;struct Node{ Type value; struct Node *next;};Status init(struct Node **h);Status insert_原创 2017-05-21 01:45:27 · 303 阅读 · 0 评论 -
常用头文件和函数
Linux常用头文件如下:POSIX标准定义的头文件 目录项 文件控制 文件名匹配类型 路径名模式匹配类型 组文件 网络数据库操作 口令文件 正则表达式 TAR归档值 终端I/O 符号常量 文件时间 字符扩展类型----转载 2017-05-31 22:56:27 · 685 阅读 · 0 评论 -
计算机软件编程英语词汇集锦
————————————————————Access Control List(ACL) 访问控制列表 access token 访问令牌 account lockout 帐号封锁 account policies 记帐策略 accounts 帐号 adapter 适配器 adaptive speed leveling 自适应速率等级调整 Address Resolution Pro转载 2017-06-15 21:20:52 · 5094 阅读 · 0 评论 -
希尔排序
原文地址: http://www.cnblogs.com/fzhe/archive/2013/01/25/2871699.html希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在转载 2017-06-15 21:14:39 · 299 阅读 · 0 评论 -
九大排序算法-C语言实现及详解
(转载自http://blog.youkuaiyun.com/zhangjikuan/article/details/49095533)概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度转载 2017-05-30 23:41:52 · 556 阅读 · 0 评论 -
动态数组
动态数组的优点:传统数组(静态数组)是需要在程序运行前,就指定大小,比如说int i = 10;int a[i];这种就是不合法的。 因为函数栈的要求,就是在函数运行前,分配好所有变量的空间,i是不定的,所以不能再运行前,就分配好空间。但是大多数情况,我们并不能预先知道数组的大小的。 所以我们使用动态数组int *a = new int[i];这个语句就可以在...原创 2018-04-08 21:06:56 · 477 阅读 · 0 评论 -
C++中new和delete来创建和释放动态数组
在C++编程中,使用new创建数组然后用delete来释放。 一、创建并释放一维数组#include<iostream>using namespace std;int main(){ int n; cin>>n; //分配动态一维数组 int *arr=new int[n]; for(int i=0;i<n;...原创 2018-04-14 21:54:25 · 4065 阅读 · 0 评论 -
二叉树相关代码(从数组生成二叉树、中序线索化、层序遍历)
最近,我把二叉树树的几个相关代码敲了一遍,均运行成功,在此上传博客,与大家分享。代码主要包含: - 从键盘生成二叉树 - 从数组(vector)生成二叉树 - 二叉树的中序遍历 - 二叉树的中序线索化 - 线索二叉树的中序遍历 - 二叉树的层序遍历树图: 附上代码:#define _CRT_SECURE_NO_WARNINGS#include <stdio...原创 2018-04-12 22:54:07 · 619 阅读 · 0 评论 -
归并排序(分治法+简洁易懂)
归并排序是一种高效的排序算法(时间复杂度(O(nlogn))),按照分治三步法,对归并排序算法介绍如下: 划分问题: 把序列分成元素个数尽量相等的两半 递归求解:把两半元素分别排序。 合并问题:把两个有序表合并成一个 (我之前看都没有看过归并排序这么简洁的代码,包括在书上) 归并好处:高效(思想也很重要) 缺点:需要辅助存储空间。#include"stdio.h" #inc...转载 2018-04-17 19:10:35 · 747 阅读 · 0 评论 -
去除数组中重复的元素,并返回去重后数组的长度
#include <iostream>using namespace std;void insertSort(int a[], int n) //插入排序{ for(int i = 1; i < n; i++) { int j = i - 1; int key = a[i]; while (a[j] >...原创 2018-04-16 21:53:53 · 1701 阅读 · 0 评论 -
程序员必须知道的10大基础实用算法及其讲解:排序、查找、搜索和分类等
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(i...转载 2018-04-16 20:53:28 · 446 阅读 · 0 评论 -
几种排序算法的特性总结
昨天做腾讯的笔试题中有一道选择题,问几种排序的最坏情况,快排,冒泡大家肯定都知道是n^2,当时选项中有一个堆排序,不是很确定,下来就把这些收集了一下表格转自http://www.cnblogs.com/xiaochun126/p/5086037.html之后就重点说一下堆排序和快排的选择问题各种常用排序算法类别排...转载 2018-04-03 20:57:31 · 579 阅读 · 0 评论 -
建立二叉树时使用scanf读取输入时出现的错误
构建二叉树的函数代码如下,运行的时候发现第一次输入一个字符A,然后按回车,发现下次等待用户输入前打印了两条“please input the data”语句。因为输入A以后再调用这个函数,scanf直接在输入流里面读取了10(回车),所以这次没有让用户输入,所以需要用户输入的时候,发现已经打印了两条语句。void createBiThrTree(BiThrTree *T){ prin...原创 2018-04-10 22:29:28 · 574 阅读 · 0 评论 -
scanf()和getchar() 使用
问题描述一:(分析scanf()和getchar()读取字符)scanf(), getchar()等都是标准输入函数,一般人都会觉得这几个函数非常简单,没什么特殊的。但是有时候却就是因为使用这些函数除了问题,却找不出其中的原因。 下面先看一个很简单的程序:#include <stdio.h>int main(){ char ch1, ch2; scan...原创 2018-04-10 22:26:31 · 429 阅读 · 0 评论 -
再次学习快速排序——优化
今天,我学习了一些优化快速排序的方法。 附上代码: (优化前的代码为被注释掉的代码,优化后的代码我也用中文注释加以说明了)#include <stdio.h>void swap(int *a, int *b);void QuickSort(int *a, int low, int high){ //if(low < high) while(lo...原创 2018-03-27 23:14:38 · 212 阅读 · 0 评论 -
1~9 分为 1:2:3 的三个三位数
将1~9 这九个数字分成三个3位数,分求第一个3位数,正好是第二个3位数的二倍,是第三个3位数的三倍。问应当怎样分法。问题分析与算法设计问题中的三个数之间是有数学关系的,实际上只要确定第一个三位数就可以解决问题。 试探第一个三位数之后,计算出另外两个数,将其分别分解成三位数字,进行判断后确定所试探的数是否就是答案。 需要提醒的是:试探的初值可以是123,最大值是333。因为不可能超出该范围。程序原创 2017-05-18 23:29:52 · 2088 阅读 · 0 评论 -
关于C语言中随机函数的使用详解
C语言中大家都知道的随机函数为random,但是random函数并不是ANSI C标准,所以random函数不能在gcc或者vc等编译器下编译通过。c语言中,rand()函数可以产生随机数,但其产生的随机数是固定的。#include #include int main(){ int x; for (x = 0; x 5; x++) {转载 2017-05-29 21:22:37 · 4071 阅读 · 3 评论 -
诚实族与说谎族
问题: 说谎族和诚实族是两个不同的民族。说谎族永远说谎话,诚实族永远说实话。谜语博士是个聪明人他要发现谁是说谎族谁是诚实族。谜语博士问了三个人。第一个人说:我们中有两个来自诚实族。 第二个人说:我们中有一个来自诚实族。 第三个说:我们中有一个来自诚实族。问:他们三个到底来自什么族?分析原创 2017-05-09 23:14:56 · 1865 阅读 · 0 评论 -
需要进行数据类型转换的常用语句
在编写程序时,有些特殊的语句需要进行强制数据类型转换,这里拿sqrt语句比个例子。以下是在之前的博客中截取出来的一个素数判定子程序:int fflag(int i){ int j; if(i return(0); if(i == 2) return(1); if(!(i%2)) return原创 2017-05-04 23:01:28 · 603 阅读 · 0 评论 -
素数判定子程序
子程序:int fflag(int i) //待判定的整数i{ int j; if(i return(0); if(i == 2) return(1); if(!(i%2)) //除了2,偶数一定不是素数 return(0); for(j = 3; j //对“2开始到该整原创 2017-05-01 22:21:09 · 745 阅读 · 0 评论 -
结构体的三种 定义&访问 方式
#include <stdio.h>#include <string.h>struct Student{ int id; char name[20]; int age;} s3; //定义方式3,不常用的一种方式int main(){ struct Student s1; //定义方式1 s1.id = 0; strcpy(s1.n原创 2017-05-22 23:35:04 · 1277 阅读 · 0 评论 -
初窥Linux 之 文件权限
(http://blog.youkuaiyun.com/ljianhui/article/details/9269173)一、用户与用户组为了更好地理解文件权限,我们需要先有用户和用户组的概念。因为在Linux里面,任何一个文件都具有“User(用户)、Group(用户组)及Others(其他用户)”3种身份的个别权限。1、用户和文件所有者的概念你用来登陆Linux主机的那个用户名就是转载 2017-05-10 23:10:04 · 331 阅读 · 0 评论 -
子程序执行return语句,之后未执行的语句将不再执行
在函数定义的函数体中,只要遇到return语句就立即返回,该return语句后面即使有未执行的语句,也不再执行。原创 2017-05-01 22:40:32 · 2286 阅读 · 0 评论 -
利用C语言实现sin(x)曲线与cos(x)曲线图形的同时显示
在前面两天的博客中,我们学会了如何用C语言分别绘制sin(x)和cos(x)在0°~360°的曲线。 今天我们来试试将两条曲线同时绘制出来。要求: 在屏幕上显示0°~360°的cos(x)曲线与sin(x)曲线的叠加图形。其中cos(x)图形用“*”表示,sin(x)图形用“+”表示,在两个图形的交点处则用“*”表示。问题分析与算法设计: 图形原创 2017-04-26 23:36:29 · 8750 阅读 · 1 评论 -
利用C语言绘制余弦函数
绘制余弦曲线 要求:在屏幕上用“*”(星号)显示0°~360°的余弦函数cos(x)曲线。(不使用数组)问题分析与算法设计 对一般的显示器来说,只能按行输出,即:输出第一行信息后,想能向下一行输出,不能再返回到上一行。为了获得一个周期(0°~360°)的余弦函数图形,j就必须在一行中一次输出两个“*”。 为了同时得到余弦函数cos(x)图形在一行上的两个点,考虑利原创 2017-04-24 23:09:16 · 7027 阅读 · 11 评论 -
利用C语言绘制正弦函数
在已经会利用C语言绘制余弦函数的基础上,我们来进一步探索如何利用C语言绘制正弦函数。问题分析: 很自然的,我们想到将acos(y)换成asin(y),不就可以把画余弦函数换成画正弦函数了吗。可是,事实并没有那么简单。首先,0°~360°的正弦函数并不是一个简单的左右对称的图形;其次,反三角函数x=asin(y)的值域为(-π/2,π/2),所以并不能通过简单的求反三角函原创 2017-04-25 23:00:35 · 29377 阅读 · 1 评论 -
从条件语句和循环语句的条件入手,优化程序
今天编程的时候遇到一个题目,题目很简单,有多种处理方法,于是我对每种处理方法进行了比较,发现其中有一种解法运算量明显小于其余解法,想要这里晒出来和大家分享。题目本身也很有趣,是一个生活中的数学问题。___________________________________________________________________________________________________原创 2017-04-27 22:19:26 · 644 阅读 · 0 评论 -
调用子程序时参数含有指针该如何处理
有这样一个程序,在main函数中通过调用子程序min,求出一数组中的最小元素值:#inlude int main(){ int a[7] = {-1, 9, 7, 3, -100, 0, 8}; int minvalue; minvalue = min(a, 7); printf("minvalue = %d", minvalue); return 0;}原创 2017-05-12 23:45:55 · 2745 阅读 · 0 评论 -
字符数组和字符串的区别
我们先来直观地感受下字符串数组与字符串指针变量: char s1[] = "helloworld"; char *s2 = "helloworld";(第一行是字符串数组,第二行是字符串指针变量) 区别1:字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若原创 2017-05-13 22:55:22 · 15058 阅读 · 1 评论 -
用程序解决生活中的“选择困难症”
今天和大家分享一个有趣的程序,博主编写这个程序是为了用程序帮我们做出生活中的那些困难的选择。某参观团按以下条件限制从A、B、C、D、E五个地方中选定若干参观点:如去A则必须去B;D、E两地只能去一地;B、C两地只能去一地;C、D两地都去或都不去;若去E地,A、D也必去。问该团最多能去几个地方?是哪几个地方?分析:用变量a, b原创 2017-05-08 22:39:17 · 933 阅读 · 0 评论 -
基于 链表 实现通讯录的功能
简介最近, 我编写了一个程序,用于实现手机通讯录的功能。 该程序基于 单向循环链表 , 实现了 新建联系人、(按编号、姓名、号码)删除联系人、(按编号、姓名、号码)修改联系人、(按编号、姓名、号码)查询联系人、(按姓名、号码排序)遍历显示联系人的功能, 并且在主程序中为其加入了操作界面的设计。程序:#include <stdio.h>#include <stdlib.h>#include <s原创 2017-05-28 23:05:29 · 1601 阅读 · 0 评论 -
1~9组成三个3位的平方数
要求1-9分成三组,每个数只能用一次,每组中的三位数都能组成数一个平方数。源程序#include <stdio.h>int main(){ int a[20], num[20][3], b[10]; int i, j, k, m, n, t, flag; printf("The 3 squares with 3 different digits each are:\n");原创 2017-05-21 23:29:16 · 3158 阅读 · 0 评论 -
快速排序算法
算法介绍设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)原创 2017-05-28 01:22:45 · 487 阅读 · 0 评论 -
字符串的输入与访问
今天在编写程序时,遇到了一个问题。我忘记了如何输入一个字符串并打印,经过反复的尝试,我找到了输入字符串的方法,在这里利用这篇博客进行记录。程序:#include <stdio.h>int main(){ char a[20]; scanf("%s", &a); printf("%s\n", a); char b[4]={'a', 'b'}; printf("%原创 2017-05-27 00:50:42 · 406 阅读 · 0 评论 -
快速排序算法
(转载自http://blog.youkuaiyun.com/v_july_v/article/details/6116297)一、快速排序算法的基本特性时间复杂度:O(n*lgn)最坏:O(n^2)空间复杂度:O(n*lgn)不稳定。快速排序是一种排序算法,对包含n个数的输入数组,平均时间为O(nlgn),最坏情况是O(n^2)。通常是用于排序的最佳选择。因为,基于比较的转载 2017-05-17 00:17:03 · 345 阅读 · 0 评论