文档视界 最新最全的文档下载
当前位置:文档视界 › 实验报告一Linux下的C语言编程

实验报告一Linux下的C语言编程

实验报告一Linux下的C语言编程
实验报告一Linux下的C语言编程

计算机系统基础实验报告

学院信电学院专业计算机班级1401

学号140210110 姓名段登赢实验时间:

一、实验名称:Linux下的C语言编程

二、实验目的和要求:

实验目的:

(1)掌握VMware虚拟机的使用及Linux操作系统的安装;

(2)熟练Linux操作系统的基本使用;

(3)掌握GCC编译环境的使用;

实验要求:

描述你的分析过程;说明你做实验的过程(重要步骤用屏幕截图表示);提交源程序和可执行文件。

三、实验环境(软、硬件):

硬件:个人电脑一台

软件:在虚拟机Vmware上的Ubuntu

GCC编辑器: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)首先定义一个含有姓名和身高的结构体,命名为info。

(2)使用动态内存分配函数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语言的基础内容,也学到了一些自己曾经没有使用过的库函数。总之,通过这次实验收获满满,成就感十足。

相关文档