华清远建-C编程精简版_第1页
华清远建-C编程精简版_第2页
华清远建-C编程精简版_第3页
华清远建-C编程精简版_第4页
华清远建-C编程精简版_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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、能够掌握一定软件开发技术,具备一定的软件开发能力。三、考核形式及要求(一)日常实验考核1、实验过程占

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

4、Is-显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行2.cd 命令cd dir切换到当前目录下的 dir目录cd .切换到到上一级目录cd 切换到用户目录,比如是root 用户,则切换到/root 下3 rm 命令rm fiIe删除某一个文件rm -rf dir删除当前目录下叫dir 的整个目录4.cp 命令cp source target将文件 source 复制为 targetcp -av soure_dir target_dir将整个目录复制,两目录完全一样cp -r source_dir target_dir将整个目录复制,并且是以非链接方式复制,当 source目录带

5、有符号链接时,两个目录不相同5.mv 命令mv source target将文件或者目录 source 更名为 target6. diff 命令diff dir1 dir2比较目录 1 与目录 2 的文件列表是否相同, 但不比较文件的实际内容,不同则列出diff fiIe1 fiIe2比较文件 1 与文件 2 的内容是否相同, 如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的7. echo 命令显示一串字符echo message& cat命令cat filecat file | more显示文件的内容,和 DOS 的 type 相同显示文件的内容并传输到

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

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

8、file.tgz 解压tar -zcvf file.tgz 将文件或目录 压缩为 file.tgzgzip directory.tar gunzip directory.tar.gz将覆盖原文件生成压缩的directory.tar.gz覆盖原文件解压生成不压缩的directory.tar。16 dmesg,uname 命令dmesg显示 kernle 启动及驱动装载信息uname -a显示操作系统的类型17.string 命令strings file显示 file 文件中的 ASCII 字符内容18 rpm 命令rpm -ihv program.rpm安装程序 program 并显示安装进程1

9、9.文件目录管理命令su root chmod a+x file切换到超级用户将 file 文件设置为可执行, 脚本类文件一定要这样设置一个,否则得用 bash file 才能执行chmod 666 file chown user /dir将文件 file 设置为可读写 将 /dir 目录设置为 user 所有20 mknod 命令mknod /dev/hda1 b 3 1创建块设备hda1,主设备号为3,从设备号为1,即master硬盘的的第一个分区mknod /dev/tty1 c 4 1创建子符设备tty1,主设备号为4,众设备号为1,即第一个tty终端touch /tmp/runnin

10、g在/tmp下创建一个临时文件running,重新启动后消失21.磁盘管理的命令fdisk /dev/hda就像执行了 dos 的 fdisk 一样mount -t ext2 /dev/hdal /mnt 把 /dev/hdal 装载到 /mnt 目录df显示文件系统装载的相关信息mount -t nfs :/sharedir /mnt 将 nfs 服务的共享目录 sharedir加载到 /mnt/nfs 目录 umount /mnt将/mnt目录卸载,/mnt目录必须处于空闲状态sync刷新缓冲区,使内容与磁盘同步,mkfs /dev/hda1格式化 /dev/hda1

11、 为 ext2 格式dd if=/dev/zero of=root.ram bs=1024,count=1024 生成一个大小为 1M 的块设备, 可以把它当 作硬盘的一个分区来用22程序开发有关命令gcc hello.c -o hello ldd program将 hello.c 编译成名为 hello 的二进制执行文件 显示程序所使用了哪些库23.系统有关命令ps显示当前系统进程信息ps f显示系统所有进程信息kill -9 500将进程编号为500的程序杀死top显示系统进程的活动情况,按占CPU资源百分比来分free显示系统内存及swap使用情况time program在program

12、程序结束后,将计算出program运行所使用的时间网络命令ifconfig ethO 捆绑网卡 1 的 IP 地址为 telnet ftp 登陆IP为的telnet服务器登陆到ftp服务器24.使用vi编辑器,编写 helloworld.c程序代码如下:#include int main (int argc,char *argv)printf( hello,world!n ”;return 0;(2) 用gcc编译$gcc -o hello helloworld.c(3) 执行hel

13、lo程序$./hello 25.用Gdb调试有问题的程序实验目的: 通过调试一个有问题的程序, 使读者进一步熟练使用 vi操作,熟练使用gcc编译命令及gdb 的调是命令,通过对有问题程序的跟踪调试, 进一步提高发现问题和解决问题的能力。 这是 一个很小的程序,只有 35行,希望读者认真调试。实验内容:(1)使用vi编辑器,将以下代码输入到名为greet.c的文件中。此代码的原意为输出倒序输出main函数中定义的字符串,但结果显示没有输出。#include #include #include int display1(char *string);int display2(char *strin

14、g);int main (int argc,char *argv)char string = Embedded Linux;displayl (string);display2 (string);int display1 (char *string)printf (The original string is %s n, string);int display2 (char *string1)char *string2;int size,i;size = strlen (string1);string2 = (char *) malloc (size+1);for (i = 0; i size

15、; i+)string2size - i = string1i;string2size+1=;printf(The string afterward is %sn,string2); free(string2);(2)使用gcc编译这段代码,注意要加上-g选项以方便之后的调试。(3 )运行生成的可执行文件,观察运行结果。(4)使用gdb调试程序,通过设置断点、单步跟踪,一步步找出错误所在。(5 )纠正错误,更改源程序并得到正确的结果。实验步骤:(1 )在工作目录上新建文件greet.c,并用vi启动:vi greet.c(2) 在vi中输入以上代码。(3) 在vi中保存并退出:wq(4) 用

16、gcc编译: gcc greet.c -o greet(5)运行 greet: ./greet,输出为:The original string is Embedded LinuxThe string afterward is可见,该程序没有能够倒序输出。(6)启动 gdb 调试:gdb greet(7) 查看源代码,使用命令I(8) 在30行(for循环处)设置断点,使用命令b 30(9) 在33行(printf函数处)设置断点,使用命令b 33(10) 查看断点设置情况,使用命令info b (11) 运行代码,使用命令r(12) 单步运行代码,使用命令n(13) 查看暂停点变量值,使用命令

17、p string2size - i(14 )继续单步运行代码数次,并使用命令查看,发现string2size-1的值正确。(15 )继续程序的运行,使用命令c(16) 程序在printf前停止运行,此时依次查看string20、string21 ,发现string0没有被正确赋值,而后面的复制都是正确的,这时,定位程序第31行,发现程序运行结果错误的原因在于 size-i。由于i只能增到size-i,这样string20就永远不能被赋值而保持NULL ,故输不出任何结果。(17)退出gdb,使用命令q(18) 重新编辑 greet.c,把其中的string2size - i = string1

18、i改为string2size -i - 1= string1i; ”即可(19) 使用 gcc 重新编译: gcc greet.c -o greet(20 )查看运行结果:./greetThe original string is Embedded LinuxThe string afterward is xuniL deddedbmE这时,输入结果正确实验结果:将原来有错的程序经过gdb调试,找出问题所在,并修改源代码,输出正确的倒序显示字符串的结果。实验二 C 语言的基础知识【实验内容】掌握 c 语言的基础知识,并能编写简单的程序,并熟悉在 linux 环境下编程。【实验目的】1、掌握 C

19、 语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋 值的方法,了解以上类型数据输出时所用的格式转换符。+)2、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加( 和自减( - )运算符的使用。3、进一步熟悉 C程序的编辑、编译、连接和运行的过程。【实验平台】PC机【实验步骤】1、输入程序,运行出结果。int main(int argc,char *argv)char c1 , c2;c1=97;c2=98;printf(“ %c %cn”, c1, c2);return 0;2、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结 果比较

20、对照。int main(int argc,char *argv)char c1= a,c2=b,c3=c,c4=101 ,c5= 116 ;printf( “ a%c b%ctabcn ”,c1,c2,c3);printf( “ tb%c %c ” ,c4,c5);return 0;3、分析下程序,写出运行结果,再输入计算机运行,将得到的结果与你分析得到的结 果比较对照。int main(int argc,char *argv)int i , j , m , n ;i=8; j=10;m=+i; n=j+;printf( “ %d,%d,%d,%dn” ,i,j,m,n);return 0;4

21、. 分析下列程序,并输入计算机运行,总结结果。 int main(int argc,char *argv)char c1 , c2; c1=97;c2=98;printf(“ %c %c” , c1, c2);return 0;1)在此基础上 , 加一个 printf 语句,并运行之。printf( “ %d,%d” , c1, c2 );2)再将第二行改为:int c1, c2;再使之运行。3)再将第三行改为: c1=300; c2=301;再使之运行,分析其运行结果。 在该程序中,说明了字符型数据在特定情况下可作为整型数据处理,整型数据有 时也可以作为字符型数据处理。 在该程序中,主要考查

22、对转义字符的掌握情况。 此程序主要考查自加、自减运算符以及复合运算符的用法。5、实验实训思考题1、“ =”和“ =”有什么区别?2、“&”和“ &”、“| ”和“ | ”有什么区别?6能力测试阶段 单元一:运算符、表达式、输入输出语句 能力要求:a) 能够正确定义、输入、输出并使用常用数据类型:整型、实型、字符型b) 掌握五种基本算术运算符的使用:、,知道优先级与结合性c) 掌握逻辑运算符和关系运算符、条件运算符的使用d) 能够正确使用 printf() 和 scanf() 进行各种数据正确格式的输入输出e) 编写简单顺序结构程序基础能力落实:1)编写一个程序,要求输入一个 ASCII 码值,

23、然后输出相应的字符。2)编写程序,从键盘输入两个整数,分别计算出它们的商和余数,输出时,商数要 求保留 2 位小数,并对第三位进行四舍五入。3)输入一个华氏温度 ,要求输出摄氏温度 ,公式为 C=5/9(F-32), 输出取两位小数要求:注意”/”的使用 ,通过测试来加深理解进阶能力落实:1 )设园半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积,用scanf 输入数据 ,输出计算结果 ,取小数点后 2位数字,请写程序 .实验三 选择结构程序设计【实验内容】掌握 if,ifelse,switch 等开关语句。【实验目的】1、 了解C语句表示逻辑量的方法(以0代表“

24、假”以1代表“真”);2、学会正确使用逻辑运算符和逻辑表达式;3、熟练掌握 if 语句和 switch 语句。【实验平台】PC机实验步骤】 编写程序完成下列题目:1、已知三个数 a, b, c,找出最大值放于 max中。2、输入某学生的成绩,经处理后给出学生的等级,等级分类如下:90分以上(包括90):A80至 90 分(包括80):B70至 80 分(包括70):C60至 70 分(包括60):D60分以下:E3、有一函数:xx1y=2x-11=x=10用scanf函数输入x的值(分别为x=10三种情况),求y值。4、实验实训指导1、分析:由已知可得在变量定义时定义四个变量a,b,c和max

25、, a,b,c是任意输入的三个数,max是用来存放结果最大值的。第一次比较a和b,把大数存入 max中,因a,b都可能是大值,所以用if语句中if else形式。第二次比较 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” ,&a,&b,&c);if (a=b)max=a;/*a=b*/else max=b;/*amax)是最大值 */max=c; /*c printf(max=%d

26、,max);return 0;若输入下列数据,分析程序的执行顺序并写出运行结果(1) a=1,b=2,c=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=22、方法一:(用if嵌套)分析:由题意知如果某学生成绩在90分以上,等级为 A;否则,如果成绩大于 80分,等级为B;否则,如果成绩大于70分,等级为C;否则,如果成绩大于60分为D;否则,如果成绩小于60分,等级为E;但当我们输入成绩时也可能输错,出现小于0或大于100,这时也要做处理,输出出错信息。因此,再用 if 嵌套前,应先判

27、断输入的成绩 是否在 0100 之间。int main(int argc,char *argv)float score;char grade;printf(nplease input a student score:);scanf(%f,&score); if(score100|score=90)grade=A;else if(score=80) grade=B;elseif(score=70)grade=C;else if(score=60)grade=D;else grade=E;printf(nthe student grade:%cn,grade);return 0;输入测试数据, 调

28、试程序。 测试数据要覆盖所有路径, 注意临界值, 例如此题中得 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

29、 grade:);scanf(%d,&g);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 main(int a

30、rgc,char *argv)int x,y;printf( “ please input x :”);scanf( “ %d” ,&x);if (x1)y=x;printf( “ y=%dn” ,y); else if (x10)y=2*x-1;printf( “ y=%dn” ,y);elsey=3*x-11;printf( “ y=%dn” ,y);5能力要求:a) 能够使用 if 语句编写条件选择程序b) 能够使用嵌套 if 语句和 switch 语句编写多分支选择结构程序进阶能力落实:1) 编写一个程序,用 while ,该程序读取整数,直到输入 0,输入终止后,程序应该报 告输入的

31、偶数(不包括 0)总个数,偶数的平均值,输入的奇数总个数以及奇数的平均值。实验四 循环结构程序设计实验内容】熟练掌握 while 、 do while 和 for 三种循环语句的应用。【实验目的】通过实验,熟练掌握 while 、 dowhile 和 for 三种循环语句,为以后开发打下基础。【实验平台】PC机【实验步骤】编写程序,完成下列题目:1、求 5!2、求和 s=1!+2!+3!3、求和 s=1!+3!+5!4、求和 s= 3+33+3335、有一数列:2/1 , 3/2 , 5/3 , 8/5,求出这个数列的前10项之和。8、实验实训指导1 、程序清单:int main(int ar

32、gc,char *argv)int n,t;n=1;t=1;while(t=5)n=n*t;t=t+1;printf( “ %dn” ,n);2、程序清单:int main(int argc,char *argv)int n,s=0,t=1;for(n=1;n=3;n+)t=t*n;s=s+t;printf( “ %dn” ,s);3、程序清单:int main(int argc,char *argv)int s=0,t,i,j;for(i=1;i=3;i+)t=1;for(j=1;j=2*i-1;j+)t=t*j;s=s+t;printf( “ %dn” ,s);4、程序清单:int mai

33、n(int argc,char *argv)int s=0,t=3,i;for(i=1;i=3;i+)s=s+t;t=10*t+3;printf( “ %dn” ,s);5、程序清单:int main(int argc,char *argv)int n,t;float a=2,b=1,s=0;for(n=1;n=10;n+)s=s+a/b;t=a;a=a+b;b=t;printf( “%fn ”,s);6、实验实训思考题Daphne以10%的单利息投资了 100美元(也就是说,每年投资赢的利息等于原始投资的10%)。Deirdre则以每年5%的复合利息投资了 100美元(也就是说,利息是当前结

34、余的 5%,其中包括以前的利息) 。编写一个程序, 计算需要多少年 Deirdre 的投资额才会超过 Daphne ,并且显示出到那时两个人的投资额。7能力要求:a) 掌握 for 、 do-while 、 while 语句结构b) 能够使用 for 、 do-while 、 while 编写循环结构程序c) 使用 for 、 do-while 、 while 编写多重循环语句基础能力落实:1)编写一个程序, 将用分钟表示的时间转化成以小时和分钟表示的时间。使用 #define或者 const 来创建一个代表 60 的字符常量。使用 while 循环来允许用户重复键入值,并且 当键入一个小于等

35、于 0 的时间时终止循环。要求用 while 语句2)编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方, 要求用户输入表的上限和下限。使用一个 for 循环。3)编写一个程序,创建一个 8 个元素的 int 数组,并且把元素分别设置为 2 的前 8 次 幂,然后打印出他们的值。使用 for 循环来设置值;为了变化,使用 do while 循环来显示 这些值。进阶能力落实:1)编写一个程序,创建两个 8 元素的 double 数组,使用一个循环来让用户键入第一个 数组的 8 个元素的值, 程序把第二个数组的元素设置为第一个数组元素的累积和, 例如, 第 二个数组的第 4 个

36、元素应该等于第 1 个数组的前 4个元素的和,第二个数组的第 5 个元素应 该等于第一个数组的前 5 个元素的和, 最后, 使用一个循环来显示两个数组中的内容, 第一 个数组在一行中显示,而第二个数组中的每个元素在第一个数组的对应元素之下进行显示。实验五 一维数组【实验内容】 掌握一维数组的使用。【实验目的】1、掌握一维数组的定义、赋值和输入输出的方法;2、掌握字符数组的使用;3、掌握与数组有关的算法(例如排序算法)。【实验平台】PC机【实验步骤】1、在键盘上输入 N 个整数,试编写程序使该数组中的数按照从大到小的次序排列。2、青年歌手参加歌曲大奖赛, 有 10 个评委对她的进行打分, 试编程

37、求这位选手的平均 得分(去掉一个最高分和一个最低分) 。3、输入一串字符,计算其中空格的个数。4、实验实训指导分析:C中数组长度必须是确定大小,即指定 N的值。排序的方法有多种,我们取 出其中两种作为参考。方法一:起泡排序从第一个数开始依次对相邻两数进行比较, 如次序对则不做任何操作; 如次序不对则使 这两个数交换位置。第一遍的(N-1)次比较后,最大的数已放在最后,第二遍只需考虑(N-1)个数,以此类推直到第(N-1)遍比较后就可以完成排序。源程序如下:#define N 10int main(int argc,char *argv)int aN,i,j,temp;printf(please

38、 input %d numbersn,N);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)for(j=0;jaj+1)temp=aj;aj=aj+1;aj+1=temp;printf(the array after sort:n);for(i=0;iN;i+)printf(%5dn,ai);方法二:选择排序首先找出值最小的数, 然后把这个数与第一个数交换, 这样值最小的数就放到了第一个 位置; 然后,在从剩下的数中找值最小的,把它和第二个数互换, 使得第二小的数放在第二 个位置上。以此类推,直到所有的值从小到大的顺序排列为止。#define N 10i

39、nt main(int argc,char *argv)int aN,i,j,r,temp;printf(please input %d numbersn,N);for(i=0;iN;i+)scanf(%d,&ai);for(i=0;iN-1;i+)r=i;for(j=i+1;jN;j+)if(ajar)r=j;if(r!=i)temp=ar;ar=ai;ai=temp;printf(the array after sort:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);分析:这道题的核心是排序。将评委所打的 10 个分数利用数组按增序(或降序) 排列,计

40、算数组中除第一个和最后一个分数以外的数的平均分,其中排序部分这里 用选择法实现。int main(int argc,char *argv)int i,j,min;float temp,ave=0;float a11;printf(n 输入评委所打的分数: n);for(i=1;i=10;i+) scanf(%f,&ai); for(i=1;i=9;i+) min=i;for(j=i+1;jaj) min=j;temp=ai; ai=amin;amin=temp;for(i=2;i=9;i+) /* 注意 i 值的变化范围 */ ave=ave+ai;printf( 选手所得最后分数: % 6.

41、1f ,ave/8); printf(n);程序清单:int main(int argc,char *argv) char c30;int i,sum=0;gets(c); for(i=0;istrlen(c);i+) if(ci= ) sum=sum+1;printf( 空格数为: %d n,sum);实验六 二维数组【实验内容】 掌握二维数组的使用。【实验目的】1、掌握二维数组的定义、赋值和输入输出的方法;2、掌握字符数组的使用;3、掌握与数组有关的算法(例如排序算法)。【实验平台】PC机【实验步骤】1、有一个3X4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。2、打印以下图案

42、:*3、求矩阵下三角形元素之和。4、实验实训指导程序清单:#define M 3#define N 4int main(int argc,char *argv)int max,i,j,r,c;static int aMN=123,94,-10,218,3,9,10,-83,45,16,44,-99; max=a00;for(i=0;iM;i+) for(j=0;jmax) max= aij; r=i; c=j;printf( “ max=%d , row =%d , cn”,max , r, c);程序清单:int main(int argc,char *argv)char a5= * , *

43、 , * , * , * ;int i,j,k;char space= ;for(i=0;i5;i+) /* 输出 5 行 */printf(n); /* 输出每行前先换行 * / printf( ); /* 每行前面留 5 个空格 */ for (j=1;j=i;j+)printf(%c,space); /* 每行再留 1 个空格 */ for ( k=0;k5;k+)printf(%c,ak); /* 每行输入 5 个* 号*/程序清单:#define N 6int main(int argc,char *argv)int i,j,sum=0;int aNN=0;printf(input

44、5x 5 data: n);for(i=1;iN;i+)printf(Input the %d line data:n,i);for(j=1;jN;j+)scanf(%d,&aij);for(i=1;iN;i+)for(j=1;jN;j+)printf(%5d,aij);printf(n);for(i=1;iN;i+)for(j=1;j *p2 ? *p1 : *p2;*p1= *p2 = temp;本例题用指针作为函数参数,大家要注意指针作为函数参数时的用法程序清单:#define LEN 81int drop_space(char * s);int main(void)char origL

45、EN;while (gets(orig) & orig0 != 0) drop_space(orig); puts(orig); puts(Bye!);return 0;int drop_space(char * s) int ct = 0; char * pos;while (*s) /* or while (*s != 0) */ if (*s = ) pos = s; do *pos = *(pos + 1); pos+; while (*pos);else s+;6、实验实训思考题1) 设计函数 min(x,y), 返回两个 double 数值中较小的数值,同时用一个简单的驱动程序 测

46、试该函数。2) 编写一个函数,函数的 3 个参数是一个字符和两个整数。字符参数是需要输出的字 符,第一个整数说明了在每行中该字符输出的个数,而第二个整数指的是需要输出的行数,编写一个调用该函数的程序。7能力要求:a) 能够通过定义、调用函数处理指定问题:如数组排序,数据交换,字符串大、小写 转换等b) 能够嵌套调用函数c) 编制递归函数进行求阶乘的运算d) 了解变量的作用域及生存期在程序中的影响8. 基础能力落实:1). 编写一个函数 is-within(). 它接受两个参数,一个是字符,另一个是字符串指针。其 功能是如果字符在字符串中。就返回一个非 0 值(真);如果字符不在字符串中,就返 回 0 值(假)。在一个使用循环语句为这个函数提供输入的完整程序中进行测试。实验代码附录实验二代码:1) 编写一个程序,要求输入一个 ASCII 码值,然后输出相应的字符。#include int main(void)int ascii;printf(Enter an ASCII code: );scanf(%d, &ascii);printf(%d is the ASCII code for %c.n, ascii, ascii);return 0;2) 编写程序,从键盘输入两个整数,分别计算出它们的商和余数,输出时,商数要求保留 2 位小数,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论