ImageVerifierCode 换一换
格式:DOC , 页数:37 ,大小:204KB ,
资源ID:7380907      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7380907.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(华清远建-C编程(精简版).doc)为本站会员(hwpkd79526)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

华清远建-C编程(精简版).doc

1、实验实训大纲一、实验实训的目的和基本要求 通过第一阶段的课程的学习,可以使学生对嵌入式 linux 程序设计的基本编程规则与开发有一个比较全面的了解和认识,并最终能熟练掌握程序设计的理论知识和实际操作,也为以后学习更高一层的程序设计打下很牢固的理论知识基础和实践基础,尤其是有过硬的操作技术,较强的动手能力。 实验实训的基本要求是: 1、严格按要求使用计算机等相关实验设备; 2、通过实验实训提高动手操作能力; 3、通过实验实训学会用专业知识分析问题、解决问题的基本方法和步骤; 4、能够用理论指导实践; 5、通过实验实训加深对理论知识的理解; 6、能够掌握一定软件开发技术,具备一定的软件开发能力。

2、 二、实验实训的内容及要求 实验实训内容: 1 .熟练掌握 linux 的基本命令和 vi 编辑器和 gdb 调试器的使用。2、熟识 c 语言的运行环境,尤其是 vi 编辑器和 gdb 调试器的使用。 3、熟练掌握数据结构的使用.4熟练掌握 shell,Makefile 的编写实验实训要求: 1、掌握 c 语言,数据结构,shell,Makefile 有关专业知识分析问题、解决问题的基本方法和步骤; 2、能够所学知识的学习来理解程序设计的基本理论知识; 4、能够熟练地使用第一阶段所学知识,为以后打下基础。5、能够掌握一定软件开发技术,具备一定的软件开发能力。三、考核形式及要求 (一)日常实验考

3、核 1、实验过程占 70%,实验结果占 30%。 2、每单元实验结束为每个同学打出成绩,整个学期的平均成绩作为该同学的技能考核成绩; 3、要求在规定时间内独立完成; 四实验实训教材及教学参考书目 (一)推荐教材 C 程序设计谭浩强 著C 程序设计题解与上机指导(第二版) 谭浩强 著 GNU Makefile 编程实验实训指导实验一 Linux 常用命令和 vi,gdb 的使用【实验内容】本课程要求学员对 Linux 基本操作命令有一定了解和掌握。下面列出的一些常用命令作为参考。最好针对每一个都能亲自练习、掌握。【实验平台】PC 机【实验步骤】1ls 命令-ls 以默认方式显示当前目录文件列表l

4、s a 显示所有文件包括隐藏文件ls l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行-2.cd 命令cd dir 切换到当前目录下的 dir 目录cd 切换到到上一级目录cd 切换到用户目录,比如是 root 用户,则切换到/root 下- 3rm 命令rm file 删除某一个文件rm -rf dir 删除当前目录下叫 dir 的整个目录- 4.cp 命令cp source target 将文件 source 复制为 targetcp av soure_dir target_dir 将整个目录复制,两目录完全一样cp fr source_dir target_dir 将整

5、个目录复制,并且是以非链接方式复制,当 source 目录带有符号链接时,两个目录不相同- 5.mv 命令mv source target 将文件或者目录 source 更名为 target- 6.diff 命令diff dir1 dir2 比较目录 1 与目录 2 的文件列表是否相同,但不比较文件的实际内容,不同则列出diff file1 file2 比较文件 1 与文件 2 的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的- 7.echo 命令echo message 显示一串字符8。cat 命令cat file 显示文件的内容,和 DO

6、S 的 type 相同cat file | more 显示文件的内容并传输到 more 程序实现分页显示,使用命令less file 可实现相同的功能more 分页命令,一般通过管道将内容传给它,如 ls | more- 9du 命令du 计算当前目录的容量du -sm /root 计算/root 目录的容量并以 M 为单位10.find 命令find -name /path file 在/path 目录下查找看是否有文件 file-11grep 命令grep -ir “chars” 在当前目录的所有文件查找字串 chars,并忽略大小写,-i 为大小写,-r 为下一级目录-12.vi 的使用

7、- vi file 编辑文件 filevi 原基本使用及命令: vi 分为编辑状态和命令状态。输入命令要先按 ESC,退出编辑状态, 然后输入命令。常用命令有::x(退出):x!(退出不保存):w(保存文件):w!(不询问方式写入文件):r file(读文件 file) :%s/oldchars/newchars/g(将所有字串 oldchars 换成 newchars) i 进入编辑插入状态ESC 退出编辑状态13man 命令- man ls 读取关于 ls 命令的帮助- 14.启动关闭计算机命令reboot 重新启动计算机halt 关闭计算机init 0 关闭所有应用程序和服务,进入纯净的

8、操作环境init 1 重新启动应用及服务init 6 重新启动计算机- 15.tar 命令tar xfzv file.tgz 将文件 file.tgz 解压tar -zcvf file.tgz 将文件或目录 压缩为 file.tgzgzip directory.tar 将覆盖原文件生成压缩的 directory.tar.gzgunzip directory.tar.gz 覆盖原文件解压生成不压缩的 directory.tar。- 16dmesg,uname 命令dmesg 显示 kernle 启动及驱动装载信息uname -a 显示操作系统的类型- 17.string 命令strings fi

9、le 显示 file 文件中的 ASCII 字符内容- 18rpm 命令rpm -ihv program.rpm 安装程序 program 并显示安装进程- 19.文件目录管理命令su root 切换到超级用户chmod a+x file 将 file 文件设置为可执行,脚本类文件一定要这样设置一个,否则得用 bash file 才能执行chmod 666 file 将文件 file 设置为可读写chown user /dir 将/dir 目录设置为 user 所有- 20mknod 命令mknod /dev/hda1 b 3 1 创建块设备 hda1,主设备号为 3,从设备号为 1,即 ma

10、ster 硬盘的的第一个分区mknod /dev/tty1 c 4 1 创建字符设备 tty1,主设备号为 4,众设备号为 1,即第一个 tty 终端- touch /tmp/running 在/tmp 下创建一个临时文件 running,重新启动后消失- 21.磁盘管理的命令fdisk /dev/hda 就像执行了 dos 的 fdisk 一样mount -t ext2 /dev/hda1 /mnt 把/dev/hda1 装载到 /mnt 目录df 显示文件系统装载的相关信息 mount -t nfs 192.168.1.1:/sharedir /mnt 将 nfs 服务的共享目录 shar

11、edir 加载到/mnt/nfs 目录umount /mnt 将/mnt 目录卸载,/mnt 目录必须处于空闲状态sync 刷新缓冲区,使内容与磁盘同步,mkfs /dev/hda1 格式化/dev/hda1 为 ext2 格式dd if=/dev/zero of=root.ram bs=1024,count=1024 生成一个大小为 1M 的块设备,可以把它当作硬盘的一个分区来用- 22程序开发有关命令gcc hello.c -o hello 将 hello.c 编译成名为 hello 的二进制执行文件ldd program 显示程序所使用了哪些库- 23系统有关命令ps 显示当前系统进程信

12、息ps ef 显示系统所有进程信息kill -9 500 将进程编号为 500 的程序杀死top 显示系统进程的活动情况,按占 CPU 资源百分比来分free 显示系统内存及 swap 使用情况time program 在 program 程序结束后,将计算出 program 运行所使用的时间网络命令ifconfig eth0 192.168.1.2 捆绑网卡 1 的 IP 地址为 192.168.1.2- telnet 192.168.1.1 登陆 IP 为 192.168.1.1 的 telnet 服务器ftp 192.168.1.1 登陆到 ftp 服务器24使用 vi 编辑器,编写 h

13、elloworld.c 程序代码如下:#include int main (int argc,char *argv)printf(“hello,world!n”);return 0;(2)用 gcc 编译$gcc o hello helloworld.c(3)执行 hello 程序$./hello25用 Gdb 调试有问题的程序实验目的:通过调试一个有问题的程序,使读者进一步熟练使用 vi 操作,熟练使用 gcc 编译命令及gdb 的调是命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。这是一个很小的程序,只有 35 行,希望读者认真调试。实验内容:(1)使用 vi 编辑器

14、,将以下代码输入到名为 greet.c 的文件中。此代码的原意为输出倒序输出 main 函数中定义的字符串,但结果显示没有输出。#include #include #include int display1(char *string);int display2(char *string);int main (int argc,char *argv)char string = “Embedded Linux“;display1 (string);display2 (string);int display1 (char *string)printf (“The original string is

15、 %s n“, string);int display2 (char *string1)char *string2;int size,i;size = strlen (string1);string2 = (char *) malloc (size+1);for (i = 0; i =10 用 scanf 函数输入 x 的值(分别为 x=10 三种情况),求 y 值。 4、实验实训指导 1、分析:由已知可得在变量定义时定义四个变量 a,b,c 和 max,a,b,c 是任意输入的三个数,max 是用来存放结果最大值的。第一次比较 a 和 b,把大数存入 max 中,因 a,b 都可能是大值,所

16、以用 if 语句中 ifelse 形式。第二次比较 max 和 c,把最大数存入 max 中,用 if 语句的第一种形式 if 形式。max 即为 a,b,c 中的最大值。 int main(int argc,char *argv) int a,b,c,max; /*定义四个整型变量*/ scanf(“a=%d,b=%d,c=%d”, if (a=b) max=a; /*a=b*/ else max=b; /*amax) max=c; /*c 是最大值*/ printf(“max=%d“,max);return 0; 若输入下列数据,分析程序的执行顺序并写出运行结果 (1)a=1,b=2,c=

17、3 (2)a=2,b=1,c=3 (3)a=3,b=2,c=1 (4)a=3,b=1,c=2 (5)a=3,b=3,c=2 (6)a=2,b=1,c=2 2、方法一:(用 if 嵌套) 分析: 由题意知如果某学生成绩在 90 分以上,等级为 A;否则,如果成绩大于 80 分,等级为 B;否则,如果成绩大于 70 分,等级为 C;否则,如果成绩大于 60 分为 D;否则,如果成绩小于 60 分,等级为 E;但当我们输入成绩时也可能输错,出现小于 0 或大于 100,这时也要做处理,输出出错信息。因此,再用 if 嵌套前,应先判断输入的成绩是否在 0100 之间。 int main(int arg

18、c,char *argv) float score; char grade; printf(“nplease input a student score:“); scanf(“%f“, if(score100|score=90) grade=A; else if(score=80) grade=B; else if(score=70) grade=C; else if(score=60) grade=D; else grade=E; printf(“nthe student grade:%cn“,grade); return 0; 输入测试数据,调试程序。测试数据要覆盖所有路径,注意临界值,例

19、如此题中得100 分,60 分,0 分以及小于 0 和大于 100 的数据。 方法二:用 switch 语句 分析: switch 语句是用于处理多分支的语句。注意,case 后的表达式必须是一个常量表达式,所以在以用 switch 语句之前,必须把 0100 之间的成绩分别化成相关的常量。所有A(除 100 以外) ,B,C,D 类的成绩的共同特点是十位数相同,此外都是 E 类。则由此可得把 score除十取整,化为相应的常数。 int main(int argc,char *argv) int g,s; char ch; printf(“ninput a student grade:“);

20、 scanf(“%d“, s=g/10; if(s10) printf(“ninput error!“); else switch (s) case 10: case 9: ch=A; break; case 8: ch=B; break; case 7: ch=C; break; case 6: ch=D; break; default: ch=E; printf(“nthe student scort:%c“,ch); return 0; 输入测试数据,同方法一一样调试程序并写出结果。3、分析:y 是一个分段表达式。要根据 x 的不同区间来计算 y 的值。所以应使用 if语句。 int m

21、ain(int argc,char *argv)int x,y; printf(“please input x :”); scanf(“%d”, if (xaj+1) temp=aj; aj=aj+1; aj+1=temp; printf(“the array after sort:n“); for(i=0;iaj) min=j; temp=ai; ai=amin; amin=temp; for(i=2;imax) max= aij; r=i; c=j; printf(“max=%d , row =%d , colum=%d n”,max , r, c); 程序清单: int main(int

22、 argc,char *argv) char a5= * , * , * , * , * ; int i,j,k; char space= ; for(i=0;i *p2 ? *p1 : *p2;*p1= *p2 = temp;本例题用指针作为函数参数,大家要注意指针作为函数参数时的用法 程序清单: #define LEN 81int drop_space(char * s);int main(void)char origLEN;while (gets(orig) puts(orig); puts(“Bye!“);return 0;int drop_space(char * s)int ct

23、= 0;char * pos;while (*s) /* or while (*s != 0) */if (*s = )pos = s;do*pos = *(pos + 1);pos+; while (*pos);elses+;6、实验实训思考题 1) 设计函数 min(x,y),返回两个 double 数值中较小的数值,同时用一个简单的驱动程序测试该函数。2) 编写一个函数,函数的 3 个参数是一个字符和两个整数。字符参数是需要输出的字符,第一个整数说明了在每行中该字符输出的个数,而第二个整数指的是需要输出的行数,编写一个调用该函数的程序。7能力要求: a) 能够通过定义、调用函数处理指定问

24、题:如数组排序,数据交换,字符串大、小写转换等 b) 能够嵌套调用函数 c) 编制递归函数进行求阶乘的运算 d) 了解变量的作用域及生存期在程序中的影响 8.基础能力落实: 1). 编写一个函数 is-within().它接受两个参数,一个是字符,另一个是字符串指针。其功能是如果字符在字符串中。就返回一个非 0 值(真) ;如果字符不在字符串中,就返回 0 值(假) 。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。实验代码附录实验二代码:1)编写一个程序,要求输入一个 ASCII 码值,然后输出相应的字符。#include int main(void)int ascii;print

25、f(“Enter an ASCII code: “);scanf(“%d“, printf(“%d is the ASCII code for %c.n“, ascii, ascii);return 0;2)编写程序,从键盘输入两个整数,分别计算出它们的商和余数,输出时,商数要求保留 2 位小数,并对第三位进行四舍五入。#include int main(void)int x,y;scanf(“%d,%d“,printf(“%5.2f,%dn“,(double)x/y,x%y);return 0;3)输入一个华氏温度,要求输出摄氏温度,公式为 C=5/9(F-32),输出取两位小数.要求:注意

26、”/”的使用,通过测试来加深理解#include int main(void)float c,f;printf(“input number:n“);scanf(“%f“,c=(5.0/9.0)*(f-32);printf(“%5.2fn“,c);修改程序为:#include int main(void)float c,f;printf(“input number:n“);scanf(“%f“,c=(5/9)*(f-32);printf(“%5.2fn“,c);看看有什么结果,然后总结.进阶能力落实: 1)设园半径 r=1.5,圆柱高 h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用

27、scanf 输入数据,输出计算结果 ,取小数点后 2 位数字,请写程序. #include int main(void)float pi,h,r,l,s,sq,vq,vz;pi=3.141526;printf(“r,h:n“);scanf(“%f,%f“,l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=3.0/4.0*pi*r*r*r;vz=pi*r*r*h;printf(“l=%6.2fn“,l);printf(“s=%6.2fn“,s);printf(“sq=%6.2fn“,sq);printf(“sv=%6.2fn“,vq);printf(“sz=%6.2fn“,vz);实验三代码:进阶能力落实: 1)编写一个程序,用 while,该程序读取整数,直到输入 0,输入终止后,程序应该报告输入的偶数(不包括 0)总个数,偶数的平均值,输入的奇数总个数以及奇数的平均值。#include int main(void) int n;double sumeven = 0.0;int ct_even = 0;double sumodd = 0.0;int ct_odd = 0;while (scanf(“%d“, +ct_odd;else

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报