计算机系统基础实验报告学院 信电学院 专业 计算机 班级 1401 学号 140210110 姓名 段登赢 实验时间: 一、 实验名称:Linux下的C语言编程二、 实验目的和要求:实验目的:(1) 掌握VMware虚拟机的使用及Linux操作系统的安装;(2) 熟练Linux操作系统的基本使用;(3) 掌握GCC编译环境的使用;实验要求:描述你的分析过程;说明你做实验的过程(重要步骤用屏幕截图表示);提交源程序和可执行文件三、 实验环境(软、硬件):硬件:个人电脑一台 软件:在虚拟机Vmware上的UbuntuGCC编辑器:vi编辑器四、 实验内容:要求:在GCC编译环境下用C语言编程完成下列题目1)人口普查(2)旧键盘(3)集体照1、常用的Linux命令总结 Tab 快捷键,自动补全 切换用户:格式 su [用户名];su - root 查看目录和文件:格式 ls [-a -l ] [目录和文件], 其中-a是显示目录下所有的文件和目录(含隐藏文件)-l是显示目录下的文件和目录的详细信息 改变工作目录:格式 cd /目录名;cd .. 返回上一目录 复制文件:格式 cp [ -r ] 源文件或目录 目标文件和目录,其中-r是复制目录 移动或更名:格式 mv 源文件 目标文件 删除文件或目录:格式 rm [ -r ] 文件名或目录名,其中-r是删除目录 创建目录:格式 mkdir 目录名 查看目录大小:格式 du 目录名 压缩文件:格式 gzip [-d] 文件名,其中-d是解压缩 打包文件:格式 tar 目录或文件 解包文件:格式 xvf 目录或文件 终止程序:Ctrl+c 后台运行:Ctrl+z Gcc编译:格式 gcc [-o -O -c -g -w] 文件名,其中-o是确定输出自定义文件的名字,-O对程序的编译和链接进行优化,-c是不进行链接,生成.o后缀的文件,-g是产生调试工具,-w不生成警告信息。
2. 在Linux系统中对所给的题目进行编程和分析 (1)打开虚拟机运行ubuntu (2)打开虚拟机终端(ctrl+Alt+T) (3)键入命令cd /home/duan/桌面 进入到桌面 (4)键入命令mkdir shiyan,创建名字为shiyan的文件夹,更改用户权限 (5)然后cd /shiyan进入的shiyan文件夹里面 (6)键入命令touch renkou.c创建.c文件如下图所示(7)键入命令gcc renkou.c进行编译c程序,生成可执行文件8)键入命令./a.out运行可执行文件,如下图所示五、 实验结果及分析:1、 人口普查实验结果: 过程分析: (1)定义三个char类型的数组,a[100]用来存储输入的名字信息,a1[100]用来存储最小年龄的名字,a2[100]用来存储最大年龄的名字 (2)利用y = y * 10000 + m * 100 + d; 把输入的生日信息转换成一个个可以用来比较大小的数字 (3)由题目给出的条件可以得到合法的年龄的数字的区间是:[ 18140906,20140906 ],第一次数字之间的大小的比较判断合法的年龄并用count记录合法的次数;第二次比较大小判断出年龄最长和最年轻的人,利用strcpy(a1, a)函数把名字信息存储到数组中去。
(4)按照题目所给的格式打印输出 2、旧键盘实验结果: 过程分析:(1) 定义两个char类型的数字s1,s2分别用来存储第一次和第二次输入的字符2) 定义一个char类型的数组s_output用来存储坏键的字符3) 利用for循环遍历s1中的每一个字符,再使用strchr(s2,s1[i])判断坏键以及判断坏键没有重复出现4) 利用s1[i]-=32把小写字母转换成大写字母5) 把坏键的字符放入s_output中6) 打印输出s_output数组3、集体照实验结果: 过程分析:(1) 首先定义一个含有姓名和身高的结构体,命名为info2) 使用动态内存分配函数malloc(n*sizeof(info))产生一个动态的info类型的数组group,用来存储输入的信息再产生一个普通的动态数组result,用来存储输出的信息3) 使用qsort(group,n,sizeof(info),compare)函数把group中的信息按照身高从大到小进行排列4) 利用公式cols=total-n/k*(k-i-1);计算每一排的人数5) 利用公式result[offset+cols/2+(j%2==0?-j/2:j/2)]=id++;把group数组的下标按照题目所给的要求放到result数组中。
6) 输出时按照result数组下标找到group数组的下标并且按照result数组的下标输出六、 实验心得 通过这次实验我首先学到了虚拟机的安装和Linux系统的使用方法,第一次接触命令行操作确实感到特别的烦躁,但之后我学会了如何使用Linux的gcc编译器在用gcc编译运行的过程中,我又一次复习了C语言的基础内容,也学到了一些自己曾经没有使用过的库函数总之,通过这次实验收获满满,成就感十足。