华清远建C编程精简版.docx
- 文档编号:14480309
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:51
- 大小:34.75KB
华清远建C编程精简版.docx
《华清远建C编程精简版.docx》由会员分享,可在线阅读,更多相关《华清远建C编程精简版.docx(51页珍藏版)》请在冰点文库上搜索。
华清远建C编程精简版
实验实训大纲
一、实验实训的目的和基本要求
通过第一阶段的课程的学习,可以使学生对嵌入式linux程序设计的基本编程规则与开发有一个比较全面的了解和认识,并最终能熟练掌握程序设计的理论知识和实际操作,也为以后学习更高一层的程序设计打下很牢固的理论知识基础和实践基础,尤其是有过硬的操作技术,较强的动手能力。
实验实训的基本要求是:
1、严格按要求使用计算机等相关实验设备;
2、通过实验实训提高动手操作能力;
3、通过实验实训学会用专业知识分析问题、解决问题的基本方法和步骤;
4、能够用理论指导实践;
5、通过实验实训加深对理论知识的理解;
6、能够掌握一定软件开发技术,具备一定的软件开发能力。
二、实验实训的内容及要求
实验实训内容:
1.熟练掌握linux的基本命令和vi编辑器和gdb调试器的使用。
2、熟识c语言的运行环境,尤其是vi编辑器和gdb调试器的使用。
3、熟练掌握数据结构的使用.
4.熟练掌握shell,Makefile的编写
实验实训要求:
1、掌握c语言,数据结构,shell,Makefile有关专业知识分析问题、解决问题的基本方法和步骤;
2、能够所学知识的学习来理解程序设计的基本理论知识;
4、能够熟练地使用第一阶段所学知识,为以后打下基础。
5、能够掌握一定软件开发技术,具备一定的软件开发能力。
三、考核形式及要求
(一)日常实验考核
1、实验过程占70%,实验结果占30%。
2、每单元实验结束为每个同学打出成绩,整个学期的平均成绩作为该同学的技能考核成绩;
3、要求在规定时间内独立完成;
四.实验实训教材及教学参考书目
(一)推荐教材
《C程序设计》谭浩强著
《C程序设计题解与上机指导(第二版)》谭浩强著
《GNUMakefile编程》
实验实训指导
实验一Linux常用命令和vi,gdb的使用
【实验内容】
本课程要求学员对Linux基本操作命令有一定了解和掌握。
下面列出的一些常用命令作为参考。
最好针对每一个都能亲自练习、掌握。
【实验平台】
PC机
【实验步骤】
1.ls命令
----------------------------------------------------------------------
ls以默认方式显示当前目录文件列表
ls–a显示所有文件包括隐藏文件
ls–l显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行
----------------------------------------------------------------------
2.cd命令
cddir切换到当前目录下的dir目录
cd..切换到到上一级目录
cd~切换到用户目录,比如是root用户,则切换到/root下
----------------------------------------------------------------------
3.rm命令
rmfile删除某一个文件
rm-rfdir删除当前目录下叫dir的整个目录
----------------------------------------------------------------------
4.cp命令
cpsourcetarget将文件source复制为target
cp–avsoure_dirtarget_dir将整个目录复制,两目录完全一样
cp–frsource_dirtarget_dir将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同
----------------------------------------------------------------------
5.mv命令
mvsourcetarget将文件或者目录source更名为target
----------------------------------------------------------------------
6.diff命令
diffdir1dir2比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出
difffile1file2比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的
----------------------------------------------------------------------
7.echo命令
echomessage显示一串字符
8。
cat命令
catfile显示文件的内容,和DOS的type相同
catfile|more显示文件的内容并传输到more程序实现分页显示,使用命令lessfile可实现相同的功能
more分页命令,一般通过管道将内容传给它,如ls|more
----------------------------------------------------------------------
9.du命令
du计算当前目录的容量
du-sm/root计算/root目录的容量并以M为单位
10.find命令
find-name/pathfile在/path目录下查找看是否有文件file
----------------------------------------------------------------------
11.grep命令
grep-ir“chars”在当前目录的所有文件查找字串chars,并忽略大小写,-i为大小写,-r为下一级目录
----------------------------------------------------------------------
12.vi的使用
----------------------------------------------------------------------
vifile编辑文件file
vi原基本使用及命令:
vi分为编辑状态和命令状态。
输入命令要先按ESC,退出编辑状态,然后输入命令。
常用命令有:
:
x(退出)
:
x!
(退出不保存)
:
w(保存文件)
:
w!
(不询问方式写入文件)
:
rfile(读文件file)
:
%s/oldchars/newchars/g(将所有字串oldchars换成newchars)
i进入编辑插入状态
ESC退出编辑状态
13.man命令
----------------------------------------------------------------------
manls读取关于ls命令的帮助
----------------------------------------------------------------------
14.启动关闭计算机命令
reboot重新启动计算机
halt关闭计算机
init0关闭所有应用程序和服务,进入纯净的操作环境
init1重新启动应用及服务
init6重新启动计算机
----------------------------------------------------------------------
15.tar命令
tarxfzvfile.tgz将文件file.tgz解压
tar-zcvffile.tgz
gzipdirectory.tar将覆盖原文件生成压缩的directory.tar.gz
gunzipdirectory.tar.gz覆盖原文件解压生成不压缩的directory.tar。
----------------------------------------------------------------------
16.dmesg,uname命令
dmesg显示kernle启动及驱动装载信息
uname-a显示操作系统的类型
----------------------------------------------------------------------
17.string命令
stringsfile显示file文件中的ASCII字符内容
---------------------------------------------------------------------
18.rpm命令
rpm-ihvprogram.rpm安装程序program并显示安装进程
----------------------------------------------------------------------
19.文件目录管理命令
suroot切换到超级用户
chmoda+xfile将file文件设置为可执行,脚本类文件一定要这样设置一个,否则得用bashfile才能执行
chmod666file将文件file设置为可读写
chownuser/dir将/dir目录设置为user所有
----------------------------------------------------------------------
20.mknod命令
mknod/dev/hda1b31创建块设备hda1,主设备号为3,从设备号为1,即master硬盘的的第一个分区
mknod/dev/tty1c41创建字符设备tty1,主设备号为4,众设备号为1,即第一个tty终端
----------------------------------------------------------------------
touch/tmp/running在/tmp下创建一个临时文件running,重新启动后消失
----------------------------------------------------------------------
21.磁盘管理的命令
fdisk/dev/hda就像执行了dos的fdisk一样
mount-text2/dev/hda1/mnt把/dev/hda1装载到/mnt目录
df显示文件系统装载的相关信息
mount-tnfs192.168.1.1:
/sharedir/mnt将nfs服务的共享目录sharedir加载到/mnt/nfs目录
umount/mnt将/mnt目录卸载,/mnt目录必须处于空闲状态
sync刷新缓冲区,使内容与磁盘同步,
mkfs/dev/hda1格式化/dev/hda1为ext2格式
ddif=/dev/zeroof=root.rambs=1024,count=1024生成一个大小为1M的块设备,可以把它当作硬盘的一个分区来用
----------------------------------------------------------------------
22.程序开发有关命令
gcchello.c-ohello将hello.c编译成名为hello的二进制执行文件
lddprogram显示程序所使用了哪些库
----------------------------------------------------------------------
23.系统有关命令
ps显示当前系统进程信息
ps–ef显示系统所有进程信息
kill-9500将进程编号为500的程序杀死
top显示系统进程的活动情况,按占CPU资源百分比来分
free显示系统内存及swap使用情况
timeprogram在program程序结束后,将计算出program运行所使用的时间
网络命令
ifconfigeth0192.168.1.2捆绑网卡1的IP地址为192.168.1.2
----------------------------------------------------------------------
telnet192.168.1.1登陆IP为192.168.1.1的telnet服务器
ftp192.168.1.1登陆到ftp服务器
24.使用vi编辑器,编写helloworld.c程序代码如下:
#include
intmain(intargc,char**argv)
{
printf(“hello,world!
\n”);
return0;
}
(2)用gcc编译
$gcc–ohellohelloworld.c
(3)执行hello程序
$./hello
25.用Gdb调试有问题的程序
实验目的:
通过调试一个有问题的程序,使读者进一步熟练使用vi操作,熟练使用gcc编译命令及gdb的调是命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。
这是一个很小的程序,只有35行,希望读者认真调试。
实验内容:
(1)使用vi编辑器,将以下代码输入到名为greet.c的文件中。
此代码的原意为输出倒序输出main函数中定义的字符串,但结果显示没有输出。
#include
#include
#include
intdisplay1(char*string);
intdisplay2(char*string);
intmain(intargc,char**argv)
{
charstring[]="EmbeddedLinux";
display1(string);
display2(string);
}
intdisplay1(char*string)
{
printf("Theoriginalstringis%s\n",string);
}
intdisplay2(char*string1)
{
char*string2;
intsize,i;
size=strlen(string1);
string2=(char*)malloc(size+1);
for(i=0;i string2[size-i]=string1[i]; string2[size+1]=''; printf("Thestringafterwardis%s\n",string2); free(string2); } (2)使用gcc编译这段代码,注意要加上‘-g’选项以方便之后的调试。 (3)运行生成的可执行文件,观察运行结果。 (4)使用gdb调试程序,通过设置断点、单步跟踪,一步步找出错误所在。 (5)纠正错误,更改源程序并得到正确的结果。 实验步骤: (1)在工作目录上新建文件greet.c,并用vi启动: vigreet.c (2)在vi中输入以上代码。 (3)在vi中保存并退出: wq (4)用gcc编译: gcc–ggreet.c–ogreet (5)运行greet: ./greet,输出为: TheoriginalstringisEmbeddedLinux Thestringafterwardis 可见,该程序没有能够倒序输出。 (6)启动gdb调试: gdbgreet (7)查看源代码,使用命令‘l’。 (8)在30行(for循环处)设置断点,使用命令‘b30’ (9)在33行(printf函数处)设置断点,使用命令‘b33’ (10)查看断点设置情况,使用命令‘infob’ (11)运行代码,使用命令‘r’ (12)单步运行代码,使用命令‘n’ (13)查看暂停点变量值,使用命令‘pstring2[size-i]’ (14)继续单步运行代码数次,并使用命令查看,发现string2[size-1]的值正确。 (15)继续程序的运行,使用命令‘c’ (16)程序在printf前停止运行,此时依次查看string2[0]、string2[1]…,发现string[0]没有被正确赋值,而后面的复制都是正确的,这时,定位程序第31行,发现程序运行结果错误的原因在于‘size-i’。 由于i只能增到‘size-i’,这样string2[0]就永远不能被赋值而保持NULL,故输不出任何结果。 (17)退出gdb,使用命令q (18)重新编辑greet.c,把其中的“string2[size-i]=string1[i]”改为“string2[size–i-1]=string1[i];”即可 (19)使用gcc重新编译: gcc–ggreet.c–ogreet (20)查看运行结果: ./greet TheoriginalstringisEmbeddedLinux ThestringafterwardisxuniLdeddedbmE 这时,输入结果正确 实验结果: 将原来有错的程序经过gdb调试,找出问题所在,并修改源代码,输出正确的倒序显示字符串的结果。 实验二C语言的基础知识 【实验内容】 掌握c语言的基础知识,并能编写简单的程序,并熟悉在linux环境下编程。 【实验目的】 1、掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 2、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 3、进一步熟悉C程序的编辑、编译、连接和运行的过程。 【实验平台】 PC机 【实验步骤】 1、输入程序,运行出结果。 intmain(intargc,char**argv) { charc1,c2; c1=97;c2=98; printf(“%c%c\n”,c1,c2); return0; } 2、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 intmain(intargc,char**argv) { charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’; printf(“a%cb%c\tabc\n”,c1,c2,c3); printf(“\t\b%c%c”,c4,c5); return0; } 3、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结果比较对照。 intmain(intargc,char**argv) { inti,j,m,n; i=8;j=10; m=++i;n=j++; printf(“%d,%d,%d,%d\n”,i,j,m,n); return0; } 4.分析下列程序,并输入计算机运行,总结结果。 intmain(intargc,char**argv) { charc1,c2; c1=97;c2=98; printf(“%c%c”,c1,c2); return0; } 1)在此基础上,加一个printf语句,并运行之。 printf(“%d,%d”,c1,c2); 2)再将第二行改为: intc1,c2; 再使之运行。 3)再将第三行改为: c1=300;c2=301; 再使之运行,分析其运行结果。 ●在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有时也可以作为字符型数据处理。 ●在该程序中,主要考查对转义字符的掌握情况。 ●此程序主要考查自加、自减运算符以及复合运算符的用法。 5、实验实训思考题 1、“=”和“==”有什么区别? 2、“&”和“&&”、“|”和“||”有什么区别? 6.能力测试阶段 单元一: 运算符、表达式、输入输出语句 能力要求: a)能够正确定义、输入、输出并使用常用数据类型: 整型、实型、字符型 b)掌握五种基本算术运算符的使用: +、-、*、/、%,知道优先级与结合性 c)掌握逻辑运算符和关系运算符、条件运算符的使用 d)能够正确使用printf()和scanf()进行各种数据正确格式的输入输出 e)编写简单顺序结构程序 基础能力落实: 1)编写一个程序,要求输入一个ASCII码值,然后输出相应的字符。 2)编写程序,从键盘输入两个整数,分别计算出它们的商和余数,输出时,商数要求保留2位小数,并对第三位进行四舍五入。 3)输入一个华氏温度,要求输出摄氏温度,公式为C=5/9(F-32),输出取两位小数. 要求: 注意”/”的使用,通过测试来加深理解 进阶能力落实: 1)设园半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf输入数据,输出计算结果,取小数点后2位数字,请写程序. 实验三选择结构程序设计 【实验内容】 掌握if,if~else,switch等开关语句。 【实验目的】 1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”); 2、学会正确使用逻辑运算符和逻辑表达式; 3、熟练掌握if语句和switch语句。 【实验平台】 PC机 【实验步骤】 编写程序完成下列题目: 1、已知三个数a,b,c,找出最大值放于max中。 2、输入某学生的成绩,经处理后给出学生的等级,等级分类如下: 90分以上(包括90): A 80至90分(包括80): B 70至80分(包括70): C 60至70分(包括60): D 60分以下: E 3、有一函数: y= x x<1 2x-1 1= 3x-11 x>=10 用scanf函数输入x的值(分别为x<1,1~10,>=10三种情况),求y值。 4、实验实训指导 1、分析: 由已知可得在变量定义时定义四个变量a,b,c和max,a,b,c是任意输入的三个数,max是用来存放结果最大值的。 第一次比较a和b,把大数存入max中,因a,b都可能是大值,所以用if语句中if——
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清远 编程 精简