《Linux环境下C语言编程课程设计(共13页).doc》由会员分享,可在线阅读,更多相关《Linux环境下C语言编程课程设计(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上Linux操作系统教程课程设计题 目: 算术测试系统 学 号: 姓 名: 严 涛 专 业: 信息工程 目录一、课程设计目的1.熟悉linux基本操作命令;2.掌握linux环境下c语言编程;3.提高学生搜集资料的能力,以此解决遇到的各种问题。二、课程设计所需知识与开发工具2.1、课程设计所需知识1.linux基本操作命令:date 显示系统日期;cal 2007 显示2007年的日历表;date 7.00 设置日期和时间 - 月日时分年.秒;clock -w 将时间修改保存到 BIOS;shutdown -h now 关闭系统(1);init 0 关闭系统(2);te
2、linit 0 关闭系统(3);shutdown -h hours:minutes & 按预定时间关闭系统;shutdown -c 取消按预定时间关闭系统;shutdown -r now 重启(1);reboot 重启(2);logout 注销;cd /home 进入 / home 目录;cd . 返回上一级目录;cd ./. 返回上两级目录;cd 进入个人的主目录;cd user1 进入个人的主目录;cd - 返回上次所在的目录;pwd 显示工作路径;ls 查看目录中的文件;ls -F 查看目录中的文件;ls -l 显示文件和目录的详细资料;ls -a 显示隐藏文件;ls *0-9* 显示包
3、含数字的文件名和目录名;tree 显示文件和目录由根目录开始的树形结构(1);lstree 显示文件和目录由根目录开始的树形结构(2);mkdir dir1 创建一个叫做 dir1 的目录;mkdir dir1 dir2 同时创建两个目录;mkdir -p /tmp/dir1/dir2 创建一个目录树;rm -f file1 删除一个叫做 file1 的文件;rmdir dir1 删除一个叫做 dir1 的目录;rm -rf dir1 删除一个叫做 dir1 的目录并同时删除其内容;rm -rf dir1 dir2 同时删除两个目录及它们的内容;mv dir1 new_dir 重命名/移动 一
4、个目录;cp file1 file2 复制一个文件;cp dir/* . 复制一个目录下的所有文件到当前工作目录;cp -a /tmp/dir1 . 复制一个目录到当前工作目录;cp -a dir1 dir2 复制一个目录;bunzip2 file1.bz2 解压一个叫做 file1.bz2的文件;bzip2 file1 压缩一个叫做 file1 的文件;gunzip file1.gz 解压一个叫做 file1.gz的文件;gzip file1 压缩一个叫做 file1的文件;gzip -9 file1 最大程度压缩;rar a file1.rar test_file 创建一个叫做 file1
5、.rar 的包;rar a file1.rar file1 file2 dir1 同时压缩 file1, file2 以及目录 dir1;rar x file1.rar 解压rar包;unrar x file1.rar 解压rar包;tar -cvf archive.tar file1 创建一个非压缩的 tarball;tar -cvf archive.tar file1 file2 dir1 创建一个包含了 file1, file2 以及 dir1的档案文件;tar -tf archive.tar 显示一个包中的内容;tar -xvf archive.tar 释放一个包;tar -xvf a
6、rchive.tar -C /tmp 将压缩包释放到 /tmp目录下;tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包;tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包;tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包;tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包;zip file1.zip file1 创建一个zip格式的压缩包;zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩
7、包;unzip file1.zip 解压一个zip格式压缩包;2.c语言程序开发相关知识;3.linux vi编辑器的使用:进入vi的命令:vi filename :打开或新建文件,并将置于第一行首;vi +n filename :打开文件,并将光标置于第n行首;vi + filename :打开文件,并将光标置于最后一行首;vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处;vi -r filename :在上次正用vi编辑时发生,恢复filename;vi filename.filename :打开多个文件,依次进行编辑;移动光标类命令:h
8、:光标左移一个字符;l :右移一个字符;space:光标右移一个字符;Backspace:光标左移一个字符;k或Ctrl+p:光标上移一行;j或Ctrl+n :光标下移一行;Enter :光标下移一行;w或W :光标右移一个字至字首;b或B :光标左移一个字至字首;e或E :光标右移一个字至字尾;) :光标移至句尾;( :光标移至句首;:光标移至段落最后一个字母;:光标移至段落第一个字母;nG:光标移至第n行首;n+:下移n行;n-:光标上移n行;n$:光标移至第n行尾;H :光标移至屏幕顶行;M :光标移至屏幕中间行;L :光标移至屏幕最后行;0:(注意是数字零)光标移至当前行首;$:光标移
9、至当前行尾;屏幕翻滚类命令:Ctrl+u:向文件首翻半屏;Ctrl+d:向文件尾翻半屏;Ctrl+f:向文件尾翻一屏;Ctrl+b;向文件首翻一屏;nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部;插入文本类命令:i :在前;I :在当前行首;a:光标后;A:在当前行尾;o:在当前行之下新开一行;O:在当前行之上新开一行;r:替换当前字符;R:替换当前及其后的字符,直至按ESC键;s:从当前光标位置处开始,以输入的文本替代指定数目的字符;S:删除指定数目的行,并以所输入文本代替之;ncw或nCW:修改指定数目的字;nCC:修改指定数目的行;删除命令:ndw或ndW:删除处开始及其后的
10、n-1个字;d0:删至行首;d$:删至行尾;ndd:删除当前行及其后n-1行;x或X:删除一个字符,x删除光标后的,而X删除光标前的;Ctrl+u:删除输入方式下所输入的文本;搜索及替换命令:/pattern:从光标开始处向文件尾搜索pattern;?pattern:从光标开始处向文件首搜索pattern; n:在同一方向重复上一次搜索命令;N:在反方向上重复上一次搜索命令;:s/p1/p2/g:将当前行中所有p1均用p2替代;:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代;:g/p1/s/p2/g:将文件中所有p1均用p2替换;选项设置:all:列出所有选项设置情况;
11、term:设置终端类型;ignorance:在搜索中忽略大小写;list:显示制表位(Ctrl+I)和行尾标志($);number:显示;report:显示由面向行的命令修改过的数目;terse:显示简短的警告信息;warn:在转到别的文件时若没保存则显示NO write信息;nomagic:允许在搜索模式中,使用前面不带“”的特殊字符;nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始;:允许vi显示其他用户用write写到自己终端上的信息;最后行方式命令:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下;:n1,n2 m n3:将n1行到n2行之间的内容移
12、至到第n3行下;:n1,n2 d :将n1行到n2行之间的内容删除;:w :保存当前文件;:e filename:打开文件filename进行编辑;:x:保存当前文件并退出;:q:退出vi;:q!:不保存文件并退出vi;:!command:执行shell命令command;:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入;:r!command:将命令command的输出结果放到当前行;4.gcc的基本规则:gcc所遵循的部分约定规则:.c为后缀的文件,C语言文件;.a为后缀的文件,是
13、由构成的档案库文件;.C,.cc或.cxx 为后缀的文件,是C+源代码文件且必须要经过;.h为后缀的文件,是程序所包含的;.i 为后缀的文件,是C源代码文件且不应该对其执行预处理;.ii为后缀的文件,是C+源代码文件且不应该对其执行预处理;.m为后缀的文件,是Objective-C源代码文件;.mm为后缀的文件是Objective-C+文件;.o为后缀的文件,是后的;.s为后缀的文件,是语言源代码文件;.S为后缀的文件,是经过的汇编语言源代码文件。5.gcc的基本用法GCC最基本的用法是gcc options filenames其中options就是编译器所需要的参数,filenames给出相
14、关的文件名称。-c,只,不链接成为,编译器只是由输入的.c等文件生成.o为后缀的目标文件,通常用于编译不包含主程序的文件。-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。-O,对程序进行优化、链接,采用这个选项,整个会在编译、链接过程中进行优化处理,这样产生的的执行效率可以提高,但是,编译、链接的速度就相应地要慢一些。-O2,比-O更好的优化编译、链接,当然整个
15、编译、链接过程会更慢。-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在过程中使用的参数。C程序中的头文件包含两种情况A)#include B)#include “myinc.h”其中,A类使用尖括号(),B类使用双引号(“ ”)。对于A类,程序cpp在系统预设包含(如/usr/include)中搜寻相应的文件,而B类,预处理程序在的文件夹内搜索相应文件。2.2、开发工具简介1:linux ubantu操作系统Ubuntu(乌班图)是一个以应用为主的,其名称来自非洲南部或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价
16、值观,类似华人社会的“仁爱”思想。Ubuntu基于Debian发行版和桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为,与Debian的不同在于它每6个月会发布一个新版本。Ubuntu的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由构建而成的操作系统。Ubuntu具有庞大的社区力量,用户可以方便地从社区获得帮助。2013年1月3日,Ubuntu正式发布面向智能手机的移动操作系统。ubuntu基于的免费开源桌面PC操作系统,十分契合英特尔的超极本定位,支持x86、64位和ppc架构。2:gcc-4.5.1GNU编译器套件(GNU Compiler Coll
17、ection)包括、和的前端,也包括了这些语言的库(如libstdc+、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的。此处,“自由”的含义是它尊重用户的自由。三、课程设计主要内容3.1、系统结构简介本系统包含了顺序结构,选择结构,循环结构三种在c程序中的主要结构,其中穿插了数组,指针,函数调用等知识3.2、系统功能模块的划分本系统一共有五个模块,分别是:输入题量模块,出题模块,答题模块,检查计分模块,评分模块1.输入题量模块:本系统能由使用者指定出题数量,用scanf语句来输入题量,然后用return将题量值返回到出题模块;2.出题模块:一个考试系
18、统首先就是要有题目且能够根据条件出题,用一个for循环结构来约束题量;3.答题模块:出完题后就是从键盘上输入答案,在本模块中,提示输入答案后,用scanf函数来实现使从键盘上输入一个数赋给一个用来记录答案的字符变量,用return语句将这个变量返回到出题模块;4.检查计分模块:输入答案后,就要判断答案的正确性和计分了,在本模块中,用for循环结构嵌套if语句来控制输入的答案是否正确,若正确就返回i+函数使正确数加1,否则continue终止此次循环,循环完成后,用return语句将正确数返回到出题系统中;5.评分模块:用检查计分模块返回的值除以出题模块返回的题数乘以100%以百分比保留两位小数
19、显示正确率。3.3、makefile介绍1.makefile文件介绍makefile一个工程中的源文件不计数,其按类型,功能,模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。2.makefile主要功能make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,
20、并要求定义源文件之间的依赖关系。makefile文件是许多编译器包括windowsNT下的编译器维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改makefile文件而已。3.自动化编译makefile带来的好处就是自动化编译,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,VC+的nmake,Linux下GUN的make。可见,makefile都成为了一种在工程方面的编译方法。3.4、makefile规则
21、makefile中的规则是这样的:TAGET:DPENDENCIESCOMMAND目标(TARGET)程序产生的文件,如可执行文件和目标文件:目标也可以是要执行的动作,如“clean”。依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。命令(COMMAND)是make执行的动作,一个可以有多个命令,每个占一行。注意:每个命令行的起始字符必须为TAB字符!有依赖关系规则中的命令通常在依赖文件变化时负责产生target“clean”的规。规则解释如何和何时执行动作。有的规则看起来很复杂,但都符合上述模式。makefile中的规则描述如何生成特定的文件,即规则的目
22、标。规则列出了目标依赖文件,指定生成或更新目标的命令。规则的次序是不重要的,除非是确定缺省目标:缺省目标是第一个makefile中的第一个规则:如果第一个规则有多个目标,第一个目标是缺省的。有两个例外:以.开头的目标不是缺省目标:模式规则对缺省目标没有影响。通常我们所写的第一个规则是编译整个或makefile中指定的所有程序。四、设计步骤4.1、输入题量模块的实现与代码#include#includeint input(void)int j;while(1)printf(请输入您需要的测试题题量: );if(!scanf(%d,&j)printf(请输入正确的数字,然后重启该程序。n);exi
23、t(0);elsebreak;return j;4.2、出题模块的实现与代码#include#includeint question(int questionNum)int i;int k;int q1;int q2;int THE_TRUE_ANSWER_NUMBER=0;srand(unsigned)time(NULL);for(i=0;iquestionNum;i+)q1=rand()%100;q2=rand()%100;printf(%d+%d=,q1,q2);scanf(%d,&k);if(k=q1+q2)THE_TRUE_ANSWER_NUMBER+=1;return THE_TR
24、UE_ANSWER_NUMBER;4.3、答题模块和检查计分模块的实现与代码#include#includestatic int THE_TRUE_ANSWER_NUMBER=0;int main(int argc,char *argv)int i;int j;int k;int q1;int q2;srand(unsigned)time(NULL);printf(请输入测试题题量: );scanf(%d,&j);for(i=0,ij;i+)q1=rand()%100;q2=rand()%100;printf(%d+%d=,q1,q2);scanf(%d,&k);if(k=q1+q2)THE_
25、TRUE_ANSWER_NUMBER+=1;float f=THE_TRUE_ANSWER_NUMBER/(j*1.0);printf(您的正确率为 %0.2f,继续加油!n,f*100);exit(0);4.4、自定义头文件myhead.h代码#ifndef MYHEAD_H#define MYHEAD_Hextern int question(int);extern int input(void);#endif4.5、评分模块的实现与代码#include#include#include#includemyhead.hint main(int argc,char *argv)int i;in
26、t k;int j=input();int correctNum=question(j);float f=correctNum/(j*1.0);printf(您的正确率为百分之 %0.2f,仍需继续努力!n,f*100);exit(0);五、测试与调试1.输入测试题题量:2.得到测试题目:(输入一个答案,再显示下一道测试题)3.答案输入完毕:4.运行结果:六、总结6.1、成员分工严涛:设计系统,写程序代码,测试/调试系统叶鑫楠:总结报告,打包程序徐康:查找资料,心得体会6.2、心得与体会本学期对于Linux系统的学习,让我对Linux有了一定的了解。我知道了Linux只是个内核。现在的Linu
27、x操作系统,都是用这么一个内核,加上其它的应用程序构成的。Linux最大的特点就是其开源性,这一点是十分难得的,这也是它能够存在到现在的原因之一,使其在金融、安全等部门有很重要的应用。学习Linux,首先我们应该从基础开始学起。对Linux操作系统的功能、版本、特点,以及Linux系统安装和图形环境有较全面的了解。Linux命令是必须学习的。虽然Linux桌面应用发展很快,但是命令在Linux中依然有很强的生命力。Linux是一个命令行组成的操作系统,精髓在命令行,学习如何在安全的环境中执行系统命令,包括有关文件、目录、文件系统、进程等概念,如何使用相应的命令对文件、目录、进程等进行管理,了解
28、遇到问题时,如何找到帮助信息等。Linux常用命令,有echo命令、date命令、passwd命令、file命令、ls命令、touch命令等。要明白学好Linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在学习初期。要增加自己的Linux技能,只有通过实践来实现。只要多动手,就一定会有收获。遇到问题时要自己去寻找答案,在寻找答案的过程中,会学到更多知识。应该说目前我们对于Linux的学习只是入门而已,学习Linux是一个长期的过程,很耗时间。作为电子信息工程专业的学生,对我们来说,Linux将来主要应用于嵌入式Linux系统的开发,这非一日之功,我们还需要不断深入地学习它。七、参考文献1.linux操作系统教程2.C语言编程基础3。百度文库/百度知道专心-专注-专业