linux课件完整汇总 | 您所在的位置:网站首页 › linux学习课件 › linux课件完整汇总 |
第一章 Linux历史与系统安装
Linux是一个开源的操作系统内核,发布与GPL协议,全称是GNU/Linux Linux参考了Unix的设计思想 重启网络服务: sudo /etc/init.d/networking restart 查看IP地址:ip addr 或ifconfig 重启: reroot 第二章 目录结构与磁盘管理 文件系统是操作系统用于在外部存储设备(主要是硬盘)上组织文件的机制。Ubuntu 16.04默认Ext4 Linux没有“盘符”的概念,通过一个整体的目录树来组织文件 目录 说明 / 系统根目录 /usr 用户的程序,配置等信息 /bin 存放常用命令的目录,和/sbin目录存放系统最核心的命令 /home 主目录,所有用户主目录都会在此目录下,以用户名命名 /sbin 超级用户root才能使用的命令所在目录 /lib 系统动态链接共享库 /boot root用户的主目录 /etc 系统配置文件以及一些程序的配置文件都在此目录 /dev 外接设备会映射为此目录下的一个文件 /media 把系统自动识别的u盘,光盘等挂载到此目录下 /proc 一个虚拟目录,是系统内存的映射,可以获取系统以及进程的信息 /sys 一个虚拟目录,把硬件设备映射成文件,可以通过文件控制硬件 /lost+found 一般为空,系统异常关机时会有一些信息存入此目录 /var 存放一些不断变化增长的东西(如日志文件) /usr/bin 用户程序目录 /usr/sbin 需要超级用户权限运行的程序所在的目录 /tmp 存放临时文件的目录
命令 说明 ls 显示目录/文件 cd 切换工作目录 df 查看磁盘使用情况 fdisk 磁盘格式化 mkfs 创建文件系统 mount 挂载设备 umount 卸载设备
ls -a 显示目录下的所有内容,包括以 . 开头的隐藏文件 ls -l 以详细方式显示目录内容信息 ls -R 递归显示目录内容 ls -S 按文件大小排序,大的在前 使用man is可查看ls命令帮助手册
cd (changedirectory) cd .. 回到上一层目录,在根目录/下使用还是根目录 cd ~ 在任何目录下使用 cd - 进入上一次使用的目录 /dev /sd[a-z] 表示硬盘设备(老式的IDE硬盘用hd表示) sda1, sad2… 表示分区 /dev下cdrom、dvd等表示光盘存储设备
df -h 以易于读取的方式显示空间使用情况 df -T 显示文件系统的类型
fdisk -l 列出已安装的所有磁盘的分区 fdisk-l 列出指定磁盘的分区 运行sudo fdisk/dev/sda,根据提示,输入m可获取帮助信息 d 进入删除分区的子步骤 l 显示所有Ubuntu支持的文件系统格式 n 进入创建分区的子步骤,其中p用来创建主分区,e用来创建扩展分区 p 打印修改后的分区表。这个分区表还没有写入硬盘,只是保存在内存中 w 把分区表写入硬盘,q放弃修改
mkfs (makefilesystem) mkfs -f mkswap /dev/sda5 创建交换文件系统
mount -r /dev/sdb2/media/c 只读模式挂载 mount -t ext4/dev/sdb2 /media/c 指定ext4文件系统,一般不用,mount会自动识别文件系统类型 mount -t iso9660 -oloop ./Ubuntu.iso /media/iso 挂载ISO文件 umount /media/c 卸载挂载点
注意 U盘对应/dev 目录下的sdx文件。这个时候,可以使用fdisk进行分区等操作,但是若想读取U盘中的文件,必须进行挂载: sudo mount /dev/sdb1/media/u 使用完毕,要用umount/media/u 进行卸载 而要使用fdisk对U盘/硬盘等其他已挂载的存储设备进行分区操作,则必须要先卸载才可以。 配置双网卡 安装ssh服务: sudo apt-get install openssh-server 终端命令:sudo printf“\nauto enp0s8 \n iface enp0s8 inet dhcp \n” >> /etc/network/interfaces (可能失败) 或者进入文件页面修改:修改网卡配置:sudonano /etc/network/interferes 在下面面直接输入:autoenp0s8 iface enp0s8 inet dhcp ctrl+x退出,提示保存Y,然后按enter确认 重启网络服务:sudo/etc/init.d/networking restart 第三章 命令终端基础 终端:也称终端设备,是计算机最外围的设备,主要获取用户信息的输入以及处理结果的输出等 终端是一个设备。而shell是一个程序、主要就是获取用户输入的命令并运行,把结果返回给用户。终端最重要的事情是输入和输出,程序运行的结果要通过shell显示在终端上以此和用户产生交互 Linux命令分类内部命令:属于Shell解释器的一部分,是shell程序自带的命令 外部命令:独立与Shell解释器之外的程序文件,是在系统的某个路径下的可执行程序,由shell依照事先设定好的路径查找,找到后才能执行 type查找是内部命令还是外部命令。hash表会缓存外部命令所在位置。刚开机时,hash表为空,每次运行命令,hash表会缓存此命令的路径,提高命令查找效率 which/whereis查找命令所在的路径 Linux命令格式Linux命令的通用格式为:命令 [选项] [参数] 选项的含义: 选项:用于调节命令的具体功能 以”-”引导短格式选项(单个字符),例如”-l” 以”—“引导长格式选项(多个字符),例如”--color” 多个短格式选项可以写在一起,例如”-al”,但是这和程序设计方式有关,如果程序不支持这种格式则不能这样使用 参数:命令操作的对象,如文件、目录名等 选项和参数都是人为划分的,对程序来说,比如C语言的main(int argc, char *argv[])函数,后面的选项和参数都会传递到argv,都是作为main函数的参数传递的。 获得命令帮助使用help查看Bash内部命令的帮助信息 命令的”—help”选项适用于大多数外部命令 使用man命令阅读手册页:man [COMMAND] ,↑↓滚动,PgUp PgDn翻页,q退出,按/后查找内容 命令搜索路径bash会根据PATH变量的设置自动寻找输入的命令。如果有同名的命令,按照路径顺序找到后返回执行,不再继续寻找。有同名的命令可以输入路径运行 profile记录了bash会在哪些目录查找命令 默认的路径搜索顺序(用;隔开) ~/bin ;~/.local/bin /usr/local/sbin ; /usr/local/bin ; /usr/sbin ; /usr/bin /sbin ; /bin ; /usr/games ; /usr/local/games 添加其他路径如果在用户主目录下存在ins目录,并希望添加到PATH环境变量中,可以在用户主目录下找到。profile文件,使用文本编辑器打开 PATH=后面的双引号中的字符串末尾添加 :/home/brave/in,保存文件 其中/home/brave是用户主目录,个人使用应换成自己的用户名 或者是直接使用$HOME/ins,$HOME会自动替换为当前用户的主目录 然后运行source .profile 这样就可以直接在shell中输入ins目录下存在的程序名称被shell执行了 可以使用env命令显示系统中已存在的环境变量 shell使用小技巧Tab键可以自动补全命令名称以及参数 命令历史:bash中可以使用↑↓逐条翻看,允许编辑并重复执行,history命令显示所有缓存在 .bash_history中的命令,history -c清空历史命令 快捷键Ctrl+a 跳转行首,Ctrl+e 跳转行尾 Ctrl+l 清屏 Ctrl+c 终止程序执行 Ctrl+d 退出shell,回到登录界面 Ctrl+w 按单词删除,空格隔开的作为一个独立的词。 终端常用命令命令 说明 ls 列出文件、目录的信息 cd 切换当前工作目录 mkdir 创建目录 rmdir 删除空目录 touch 创建空文件 rm 删除给定的文件和目录。如果不为空,需要使用rm -rf cp 将一个或多个源文件或者目录复制到指定的目的文件或目录 mv 对文件或目录重新命名,或者将文件从一个目录转移到另一个目录中 cat 连接文件并打印到标准输出设备上。cat经常用来显示文件的内容 more less 以全屏幕的方式按页显示文本文件的内容,less功能比more更强大 find 在指定目录下查找文件 常用命令使用示例ls /usr 显示/usr的目录内容 ls -R /usr 递归显示目录内容 ls -l /usr 显示目录/文件详细信息 mkdir abc 在当前目录下创建abc目录 rmdir abc/ 删除当前目录下的abc目录,abc必须是空目录 rm tmp/a.sh 删除tmp目录下的a.sh文件 rm -rf tmp/ 删除tmp目录,目录可以不为空,会删除目录下所有的内容 cp tmp/a,sh sh/ 复制tmp/a.sh文件到sh目录,tmp和sh都是当前目录的子目录 cp tmp/a.sh /tmp 复制tmp/a.sh到/tmp,/tmp是绝对路径 cp tmp/a.sh sh/b.sh 复制tmp/a.sh到sh/目录并为b.sh cp mariadb/ -R /usr/local 递归复制mariadb目录到/usr/local mv tmp/a.sh sh/ 移动文件 mv tmp/a.sh sh/b.sh 移动文件并重命名 mv tmp/a.sh tmp/c.sh 重命名文件 touch tmp/test.sh 在tmp目录创建test.sh空文件 cat /etc/passwd 显示/etc/passwd文件的内容 find /usr -name gcc 查找名称为gcc的文件,大小写敏感 find /usr -name gcc* 查找名称gcc开头的文件,大小写敏感 find /usr/ -iname gcc* 查找名称开头gcc的文件,大小写不敏感 env 显示环境变量 第四章 IO重定向与管道 标准输入输出 每个进程都至少有3个信道:标准输入-STDIN、标准输出-STDOUT、标准错误-STDERR 标准输入:文件描述符为0,默认指向终端(在虚拟终端中即为键盘) 标准输出:文件描述符为1,默认指向终端(在虚拟终端中即为屏幕) 标准错误:文件描述符为2,默认指向终端(在虚拟终端中即为屏幕) 在Linux中一切皆文件,所以标准输入、标准输出、标准错误都有对应的文件,而这种对应关系是通过文件描述来实 现的,我们在重定向的时候还会用到它们 对于一个进程来说,它从描述符0指向的文件读取输入信息,把执行结果送到描述符1指向的文件,把出错信息送到 描述符2指向的文件,而不关心这些文件具体是什么 关于文件描述符:一个进程有一个结构保存一组打开的文件,每个打开的文件用一个数字标识,此数字一般被称为文 件描述符,而在Linux/Unix上设备也被映射为文件,数字0,1,2都会分别关联到键盘,屏幕,屏幕 IO重定向在shell中输入命令运行程序,程序的正常输出信息(标准输出)和一些出错信息(标准错误)会通过shell显示在屏 幕上。有时候我们并不需要把这些输出信息(包括标准输出和标准错误)显示在屏幕上,或需要把这些输出信息保存在 一个文件中,这时就需要进行输出重定向。如果一个命令要获取的输入来自文件,或者是在shell脚本编程中,需要从 文件获取输入,则需要进行输入重定向 重定向示例:echo‘abc’会输出abc到屏幕。echo ‘abc’ >tmp/buff会把abc输出到tmp/buff这个文件。如果没有此 文件则会创建这个文件并写入。但是如果文件存在并且不为空,则重定向会导致之前的数据丢失,只保存重定向的数据。 echo ‘abc’ >> /tmp/buff会把abc追加到文件末尾,之前的数据不会丢失 谁控制重定向:在shell中使用>,>等重定向符号时,执行重定向操作的是shell,而不是程序。shell把重定向符号解释成指令,将标准输入、输出、错误输出指向其他文件,而不是所关联的设备。手动编写的程序也是可以进行重定向的,但是在shell中输入命令,shell会创建子进程去执行命令,此时进行重定向操作的是shell 重定向符号:shell将>,>解释成指令,用来把一条命令的输入或输出重定向到一个文件。重定向STDERR的话,则用2> 类型 操作符 用途 重定向标准输入 以替换的方式将命令的执行结果输出到指定的文件,而不是直接显示在屏幕上 >> 将命令执行的结果追加输出到指定文件 重定向标准错误 2> 清空指定文件的内容,并将标准错误信息保存到该文件中 2>> 将标准错误信息追加输出到指定的文件中 重定向标准输出 &>或>& 将标准输出、标准错误的内容全部保存到指定的文件中,而不是直接显示在屏幕上 和标准错误 重定向示例: wc -l newfile 与 wc -l < newfile wc是一个计算行数的程序,第一个是对文件进行操作;第二个是对文件内容进行操作,把文件的内容作为输入 find / -iname gcc* >find_tmp 标准输出重定向到find_tmp文件,但是错误信息会显示在屏幕上,如果需要把错误信息也重定向到文件,可以 运行:find / -iname gcc* &> find_tmp 1>等同于>,0 &> >> | 第十一章 shell脚本基础-变量 Shell在系统的角色 shell是用户和系统交互的桥梁: shell是Linux的一个程序,实现版本有多种。shell的主要工作就是运行命令。 sh是shell的简写,shell的实现版本有:sh,bash,csh,tcsh,zsh。 多数Linux默认的shell是bash。Linux启动登录以后,会运行一个shell等待用户输入命令。 用户通过shell和系统交互。 Shell环境变量当前shell运行时保存的信息,包括终端类型,当前目录,主目录,语言编码,默认命令搜索路径等信息。运行env命令可以查看当前环境变量。 环境变量是一个名称和值的对应列表。一种是shell启动时解析配置文件生成,还有一种临时的环境变量是在shell中使用export生成。 PATH变量记录了要查找命令的路径顺序;HOME记录当前用户主目录; PWD是当前工作目录,每次切换目录都会变化。使用$取值:echo $PWD,而echo PWD仅仅是输出PWD字符串。 Shell运行命令的基本过程输入一条命令并确认后,实际shell获取的是一行字符串,shell要对字符串进行解析,并确定命令名称,参数等信息。shell支持从文件读取文本逐 条解释执行。 然后,shell要根据配置文件的搜索路径,从每个路径寻找命令,没有找到则提示错误信息,找到就调用Linux提供的系统调用运行命令。 比如:输入 ls -l,shell要解析成‘ls’ ,‘-l’,’ls’就是命令名称,并在PATH设置的路径中寻找,找到/bin/ls这个命令,fork一个子进程调用 execv等系统调用传递参数运行命令。并等待结束。 注意:真正运行命令的不是shell,而是内核,shell去调用内核提供的接口,shell是调用fork创建子进程去运行命令。 Shell中的通配符shell支持通配符,使用*表示匹配任意长度的字符,?匹配任意一个字符。 shell在遇到通配符会进行扩展,比如输入ls ./a*,会匹配a开头的所有文件并显示,如果存在ab.txt,ac.txt,则会扩成ls ./ab.txt ./ac.txt。 注意:扩展通配符的是shell,不是命令自身,如果是命令本身实现的,那就每个命令都要实现。 通配符在使用时会带来很多便利,但是有些特殊情况也要注意。 Shell脚本shell可以从一个文件读取命令并逐条执行。文件一般被称为脚本。 大多数Linux发行版的默认shell都是bash。 文件第一行使用#!/bin/bash表明这是一个bash脚本,注意有些脚本程序使用 #!/bin/sh表示。 在Ubuntu/Debian上,sh是一个符号链接指向dash,dash是一个专为执行脚本而设计的shell程序,执行速度快,语法遵循POSIX标准,但是功能比bash 少很多。 一个简单的脚本:开头声明这是一个bash脚本,然后是主要操作代码,最后 以exit 0退出。 脚本的可执行权限执行脚本可以使用 bash [SCRIPT NAME],此时bash读取脚本文件并执行, #!/bin/bash是被解释为注释。 另一种方式就是给脚本添加可执行权限:chmod +x [SCRIPT NAME] 给脚本添加执行权限,脚本开头的#!/bin/bash声明这是一个脚本文件,要用 /bin/bash执行。 变量shell运行a=123就定义了a变量。shell中的变量就是为某些需要保存的数据用一个名称标记,方便以后使用。变量的名称以字母或是下划线符号开头,后可跟任意长度的字母、数字、下划线。 =左右不能有空格,否则会按照运行命令的方式去执行。 a=`ls` 会把ls运行的结果赋值给a。注意ls不是被单引号包含,而是反 引号。 获取变量的值要用$,echo $a可以输出变量的值。 shell中的变量就是键值对(key-value)的列表,都是以文本的形式存储的。a=1+2不会进行计算把3赋值给a,而是a的值就是‘1+2’这段文本。变量的值可以用双引号/单引号括起来,包含空格的变量就必须要这么做。 变量查看与清除用set命令可以查看所有的变量。 可以使用 set | grep linux 进行搜索 unset VAR命令可以清除变量VAR,相当于没有定义过。使用空格分隔多个变量。 只读变量变量设置后,是可以修改值的:a=12; a=13,此时a的值就是13 readonly把变量设置为只读:readonlya 但是设置之后,只读变量就无法更改和清除。除非重置shell环境。 算术运算 shell支持算术运算,并且shell会对$((····))里的算数表达式进行运算。 a=12;b=14 x=$(($a+$b)) echo $x 如果b=12a,此时会报错,但是如果以字母开头的文本,比如b=a12, 则x=$(($a+$b))则直接就计算为a的数值,b转成数字为0。 逻辑运算逻辑运算:&&,||, !。分别是AND,OR,NOT。 对逻辑运算来说,任何非0值都是真。 示例:echo $((1&&0)) ; echo $(( 2 || 0)) 非数字格式逻辑运算: b=abc echo $(( 1 && $b )) //输出是0 /*************/ b=12a echo $(( 1&& $b)) //提示错误 放进环境变量环境变量是全局存在的,在任何shell脚本中都可以直接使用。 使用env查看环境变量。 export a:把变量放到环境变量,环境变量是一个名称与值的简单列表。 使用示例,shell中执行: $ env | greplinux $ linux=1 $ export linux $ env | greplinux 变量的引用${#var} 返回变量值(字符串)的长度 ${var:start_index} 返回从start_index开始一直到字符串结尾的字符串 ${var:start_index:length} 返回从start_index开始的length个字符 ${var:-newstring} 如果var未定义或为空值,则返回newstring;否则返回var 的值 ${var:=newstring} 如果var未定义或为空值,则返回newstring,并把 newstring赋给var;否则返回var的值 ${var:+newstring} 如果var不为空,则返回newstring;否则返回空值(其实也是var的值) ${var:?newstring} 如果var未定义或为空值,则将newstring写入标准错误,本语句失败;否则返回var的值 脚本的特殊变量$0:当前脚本的文件名/当前执行的进程/程序名 $n:n为从1开始的数字,$1是第一个参数,$2是第二个参数,${10}是第十个参数(从${10}开始参数号需要用花括号括起来) $#:传入脚本的参数的个数 $*:所有的位置参数(作为单个字符串) $@:所有的位置参数(每个都作为独立的字符串)。 $?:当前shell进程中,上一个命令的返回值,如果上一个命令成功执行则 $? 的值为0,否则为其他非零值,常用做if语句条件 $$:当前shell进程的pid $!:后台运行的最后一个进程的pid 本节课任务 创建脚本文件:varstudy.sh 赋予可执行权限 脚本运行时输出参数个数 并输出参数个数,以及程序的名称和参数字符串 显示当前工作目录以及用户主目录 第十二章 shell脚本基础-逻辑判断与循环 Test test是shell内建命令,可以处理脚本里的各类工作,产生的不是一般形式的输出,而是可用的退出状态。使用help test查看帮助文档。 test命令有其他形式:[······],[[······]]。当在[ ]中使用&&|| 会出错,这时候要使用[[ ]]。 test返回true或false,但是test返回的true是0,false是1,这和通常的编程语言定义的true是1(或非0值),false是0有所区别。(Linux/Unix上程序退出 状态为0表示0错误正确执行,而非0值表示有错。) 例:test “abc”=“abc” ; test -f ~/tmp/a.sh ; [-f ~/tmp/a.sh ] If,else,elifif ,else,elif的语法结构: 写在一行要使用分号分隔:if [COMMAND] ; then [COMMAND] ;fi 示例: if ,else,elif的用法: file=~/sh/a.sh dbin=~/bin if test -f“$file” ; then cat “$file” elif [ -d“$dbin” ] ; then ls “$dbin” else echo “file not found” fi if [[ -f “sh/a.sh” && -f “sh/h.sh”]] ; then cat sh/a.sh sh/h.sh ; fi 多个判断值可以使用if,elif,else组合。更简洁的形式是使用case语句实现, 就像普通编程语言的switch。语法结构: case WORD in VALUE1) [COMMANDS] ;; VALUE2) [COMMANDS] ;; *) [COMMANDS] ;; //esac之前的;;可以省略 Esac • )是必须要加的,每个逻辑块执行到;;结束。*)是默认情况,并非必须。 示例: 创建shell脚本casetest.sh,写入一下代码并运行: case $1 in “hello”) echo “hey!” ;; “time”) Date ;; *) echo “nothing to do” esac 选项可以写成不带引号的形式:time hello Forfor循环用于重复整个列表对象,基本用法 forNAME in WORDS; do COMMANDS; done for NAME in WORDS do COMMANDS Done while与until循环的结构一致,不同的是对待条件退出的状态,while是 成功则执行,until是不成功则执行。结构使用如下: while CONDITION; do #do写在单独一行,;可以不写 COMMANDS done 在当前用户主目录创建bin目录(如果bin目录不存在)。 在bin/创建脚本文件pse 要求脚本运行时检测参数个数是否>0,大于0则使用第一个参数作为筛选条 件。否则直接运行ps -e -ouser,pid,ppid,tty,comm,args 第十三章 Vim和Linux C编程环境 vim配置文件 安装vim后,配置文件:/etc/vim/vimrc, vim启动时会读取此文件。除此之 外,在用户主目录下如果存在.vimrc,也会读取此文件,如果存在相同的配置,则.vimrc文件配置会覆盖/etc/vim/vimrc的配置。 /usr/share/vim/vim74/colors是vim的配色主题文件所在目录,在用户主目录 下的.vim/colors也可以保存主题文件,此目录通常需要自己创建。 通用的配置可以写在/etc/vim/vimrc,个性化设置可以放在~/.vimrc vim配置文件使用 ” 标记注释。 基本配置set mouse=a “ 启用鼠标支持,a表示所有模式都支持 set t_Co=256 “ 256颜色支持 set number “ 显示行号 set backspace=2 “ 设置退格键删除 set fileencodings=utf-8 “设置写入文件编码为 utf-8 set encoding=utf-8 “ 设置vim缓冲区编码utf-8 set termencoding=utf-8 ” 设置终端显示编码为utf-8 set autoindent “ 自动缩进 set shiftwidth=4 “缩进4空格宽度 set tabstop=4 “ tab缩进4空格宽度 set expandtab “ tab转换为空格 颜色主题配置设置暗色背景和暗色主题 setbackground=dark colorschemetomorrow-night 设置亮色主题和亮色背景 setbackground=light colorschemetomorrow gcc基本介绍与安装gcc不是一个软件,全名是GNUCompiler Collection,是一个编译器 集合。 gcc支持C, C++,Objective-C, Fortran, Ada, Go语言的编译。 gcc是GNU的一个项目,发布于GPL开源协议。 UbuntuServer版本都自带gcc,如果没有则运行: sudo apt install gcc。 gcc基本使用使用vim test.c创建文件并编写一段C程序。 gcc test.c即可编译,编译后的文件是a.out。 ./a.out运行编译的程序。 gcc编译后的默认名称是a.out gcc –o test test.c :编译后的文件是test,-o参数后面跟输出文件的名称。 ELF文件gcc test.c编译后的输出文件是ELF格式的。 而扩展名和文件类型并没有关系,Windows是设计必须使用扩展名和对应的运行程序去关联。Windows上采用的PE格式作为可执行文件格式,.exe是 Windows上的可执行文件的扩展名。 在Linux上采用的ELF格式不必在文件名中体现出来。但是如果使用vim打开 编译后的文件,在最开始会看到ELF三个字符表明是ELF文件。 readelf -h ./test可以查看test程序的ELF文件头信息。 glibcglibc是Linux上标准C的函数库实现。 .so文件是Linux上的共享库文件,相当于Windows上的.dll文件。 glibc的实现库文件是/lib/x86_64-linux-gnu/libc.so.6链接到 /lib/x86_64-linux-gnu/libc-***.so;星号表示版本,比如,在 UbuntuServer16.04上是2.23,UbuntuServer18.04上是2.27。 gcc在编译C语言代码的时候要用到glibc。 main函数的参数和返回值int main (int argc, char* argv[]) { /* ………… //something code */ return 0; } main函数的返回值是程序的退出状态表示程序是否正确执行。 argc是传递给程序参数的个数,argv是每个参数的值,argv[0]永远都是程序文件的名称。但是这个名称是带有路径信息的。 支持参数的程序输出传递给程序的参数: #include int main(int argc, char* argv[]) { printf(“programname: %s\n”, argv[0]); for (int i=1;i1) printf(“\n”); return 0; } 编程训练编写一个对整数排序的程序,通过参数获取数字,并输出排序结果。 使用插入排序即可,插入排序示例(nms是数字数组): int k,j,tmp; for (k=1;k |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |