c语言上机实验指导

上传人:痛*** 文档编号:137014491 上传时间:2022-08-17 格式:DOC 页数:35 大小:142KB
收藏 版权申诉 举报 下载
c语言上机实验指导_第1页
第1页 / 共35页
c语言上机实验指导_第2页
第2页 / 共35页
c语言上机实验指导_第3页
第3页 / 共35页
资源描述:

《c语言上机实验指导》由会员分享,可在线阅读,更多相关《c语言上机实验指导(35页珍藏版)》请在装配图网上搜索。

1、C语言程序设计实验指导目 录上机实验总的目的和要求-3实验一 TURBOC的使用与最简单的C程序设计-4实验二 算法-8实验三 数据类型,运算符和表达式-9实验四 顺序结构程序设计-12实验五 选择结构程序设计 -15实验六 循环控制-18实验七 数组-20实验八 函数-22实验九 *编译预处理-25 实验十 指针-27实验十一 结构体与共用体-30实验十二*位运算-33实验十三 文件-34上机实验总的目的和要求学习C语言程序设计课程必须重视实践环节。即独立编写程序,独立上机调试程序。上机的目的,绝不是为了验证教材和上课的内容或者验证自己所编的程序正确与否。应该说,学习程序设计,上机实验的目的

2、:(1)加深对讲授内容的理解,尤其是一些语法规定,通过多次上机,就能自然地、熟练地掌握。(2)熟悉所用的计算机系统的操作方法,了解和熟悉C语言程序开发的环境。(3)学会上机调试程序,也就是善于发现程序中的错误,并能很快的排除这些错误。上机实验一般包括以下几个步骤:(1)准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。对程序中存在的问题,应做出记号,切记不编程序或抄别人程序去上机。(2)上机输入和调试自己的程序。应该一人一组,独立上机。上机过程中出现的问题,除了系统问题以外,应该自己调试,独立处理。(3)上机结束后,应整理出实验报告,实验报告应包括以下内容:

3、a、题目。b、程序清单(计算机打印出的程序清单)。c、运行结果(必须是上面程序清单所对应打印输出的结果)。d、对运行情况所做的分析以及本次调试程序所取得的经验。如果程序未能通过,应分析其原因。下面的每一次实验对应教材中的一章内容。上机时间为每次2小时。在实验内容中有“*”部分是选做的题目,如有时间可以选做这些部分。实验一 TURBOC的使用与最简单的C程序设计一、实验目的:1、掌握TurboC的使用。2、理解C程序的结构。3、掌握C程序设计、调试,运行的步骤、方法。4、理解最简单的C程序设计方法。二、实验准备:1、计算机基本操作练习。2、TurboC软件使用预习。3、设计出下面问题的程序。三、

4、实验步骤及内容:1、开机,启动TC。(1)开机,从Windows98的启动菜单中选择“5 Command prompt only”进入DOS状态。(2)进入TC目录。(3)启动TC。 命令格式:TC 文件名.扩展名说明:若缺省文件名,则直接启动。进入TC界面,并显示版本信息。此时按ESC键进入编辑状态。若给定文件名,(缺省扩展名则默认为.C)则打开该文件(若不存在则新建该文件)进行编辑。2、TC的使用(1)启动TC后,进入TC的界面。该界面分为四部分:菜单区、编辑区、信息区、提示行。A、菜单区:TC界面的最上面一行,是TC的主菜单。包括8项: File 文件操作 Edit 编辑操作 Run 运

5、行 Compile 编译 Project 工程(项目) Option 选项 Debug 调试 Break/Watch 中断/监视每个菜单项下都包含有各项具体功能,用户可以通过选择,执行相应的功能。B、编辑区。TC界面的主要部分,由标题Edit,状态行和文本编辑区域组成。状态行中指示光标所在行、列。现在是否处于插入状态(若有Insert标志表示处于插入状态,没有则处于改写状态)以及正在编辑的文件名。C、信息区。由标题message和信息显示区域组成,用来显示编译文件后的错误。单步执行时要监测变量的值等信息。D、提示行。TC界面的最下面一行,用于提示用户一些最常用的操作:F1帮助,F5窗口的缩放,

6、F6 窗口的切换,F8单步执行程序,F9编译连接,F10激活主菜单。(2)菜单的操作A、激活菜单 F10或AltB、移动光条 方向键C、选择某项 回车D、放弃选择 ESCE、主菜单项的直接选中 Alt高亮度的字符 如:要选中File 按AltFF、子菜单的直接选中 选中主菜单项后,直接按高亮度的字母如:选中File后,要选中Save 按“s”.部分快捷键(直接按该键就会击活菜单项具体的功能)除前面提示行中列出的以外,常用的还有:F2保存 F3装入文件 F4从坐标所在位置单步执行F7单步跟踪Alt-F1:查看最近一次的帮助信息Alt-F3:选择文件装入Alt-F5:查看运行结果Alt-X:退出T

7、CCtrl-F1:查看与光标所在位置内容相关的帮助信息Ctrl-F2:取消单步执行Ctrl-F8:设置断点Ctrl-F9:编译、连接并运行(3)文件操作A、新建文件 可采用以下方法:(a)在启动TC时不带文件名,则系统默认为NONAME.C,存盘时再输入文件名。(b)启动TC时带新文件名。(c)在TC环境下选择File下的New。B、打开文件 可采用以下方法:(a)启动TC时带文件名 。(b)在TC环境下选择File下的Load,再输入文件名。(c)以通过Load打开过的文件再次打开,可选择File下的Pick,进行选择。C、保存文件 可采用以下方法:(a)选择File下的Save,存盘。若原

8、文件名是NONAME.C,则存盘时还要输入文件名。(b)选择File下的Write to,输入文件名,则将文件换名存盘。(4)编辑操作TC采用的是全屏幕编辑器,即凡输入过内容的地方都可将光标移到该处直接修改。A、移动光标:左移一个字符 右移一个字符 上移一行 下移一行 移动到行首 Home移动到行末 End向下翻页 PageDown向上翻页 PageUp移动到窗口左上角 Ctrl-Home移动到窗口右上角 Ctrl-End移动到文件头 Ctrl-PageUp移动到文件尾 Ctrl-PageDownB、删除内容:删除光标前的字符 Backspace(退格)删除光标位置上的字符 Delete(de

9、l)删除一行 Ctrl-YC、块操作:定义块首 Ctrl-KB 定义块尾 Ctrl-KK块复制 Ctrl-KC 块移动 Ctrl-KV块删除 Ctrl-KY 块取消 Ctrl-KH(5)C程序的调试、运行A、输入程序B、编译、运行形成可执行文件选择Compile下的Compile to OBJ 编译生成目标文件Compile/link EXE file 将目标文件连接成可执行文件Compile/make EXE file 编译直接生成可执行文件(程序输入后,用快捷键F9即表示make exe file,完成编译和连接)。C、执行选择Run下的Run(Ctrl-F9)。D、查看结果运行按Alt-

10、F5,查看后按任意键返回。(6)退出TC选择File下的Quit或直接按Alt-X。3.简单的C程序设计、调试,运行。(1) 输出三个整数,输出它们中的最大值。(2) 已知一个三角形底边为10,其高比底边大6,求三角形面积。四、实验报告:1、源程序。2、调试过程中出现的错误及修改情况。3、实验结果。4、实验的感受及体会。实验二 算法一、实验目的:1、了解算法的概念、特性以及算法在程序设计中的地位;2、熟悉算法的表示方法;3、掌握用流程图、NS图表示一个算法;4、能独立设计一个问题的算法,并根据该算法编出问题的程序。二、实验准备: 1、复习算法的概念及特性。2、复习算法的几种表示方法。3、源程序

11、。三、实验步骤及内容:1、根据例题,判断20002500年中的每一年是否闰年的算法,写出该问题的程序。算法表示:设y为被检测的年份。S1:2000=yS2:若y不能被4整除,则输出y“不是闰年”。然后转到S6。S3:若y能被4整除,不能被100整除,则输出y“是闰年”。然后转到S6。S4:若y能被100整除,又能被400整除,输出y“是闰年”,否则输出y“不是闰年”。然后转到S6。S5:输出y“不是闰年”。S6:y+1=yS7:当y2500,算法停止。*2、用流程图、NS图表示下列问题的算法:依次将10个数输入,要求将其中最大的数打印出来。并根据设计出的算法写出程序。*3、用流程图、NS图表示

12、下列问题的算法:将100200之间的素数打印出来。并根据设计出的算法写出程序。四、实验报告:1、步骤2和步骤3中的流程图和NS图。2、源程序。3、调试过程中出现的错误及修改情况。4、实验结果。5、实验感受及体会。实验三 数据类型、运算符和表达式一、实验目的:1、掌握C语言数据类型,熟悉如何定义一个整型,字符型,实型变量,以及对他们赋值的方法,了解以上类型数据输出时所用的格式转换符。2、学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加,自减运算符的使用。3、进一步熟悉C程序的编辑,编译,连接和运行的过程。二、实验准备: 1、复习C语言的数据类型。2、复习各种运算符和表达式。3、

13、复习自加、自减运算符并能够熟练应用。三、实验步骤及内容:1、运行程序并回答问题(1)mian() printf(%c,007); printf(%c,016); 问题:如果执行printf(%c,0x7);printf(%c,0xe);会得到什么结果?为什么?(2)#include mian() char c1,c2; c1=getchar();/*getchar()函数功能输入一个字符*/ c2=getchar(); putchar(c1); /*putchar()函数功能输出一个字符*/ putchar(c2); 问题:把c1,c2定义成整型变量是否可以?为什么?采用同样的输入值观察结果。

14、2、整型变量与字符在任何情况下都可以互相代替吗?为什么?(1)#include main() int a, b,c; printf(Input a,b,c);/*提示输入三个数*/ scanf(%d%d%d”,&a,&b,&c); printf(a*b*c=%dn,a*b*c); 问题:此程序在运行时会不会产生溢出?请调试程序并观察结果。3、输入程序并运行:main( )char c1,c2;c1=97;c2=98;printf(“%c,%c”,c1,c2);在此基础上:(1)加printf(“%d,%d”,c1,c2);运行。(2)将第二行改为:int c1,c2;运行。(3)将第三行改为:

15、c1=300;c2=400;运行。4、输入程序并运行:main( )char c1=a,c2=b,c3=c,c4=101,c5=116;printf(“a%cb%ctc%ctabcn”,c1,c2,c3);printf(“tb%c%c”,c4,c5);5、输入程序并运行:main( )int i,j,m,n;i=8;j=10;m=+i;n=j+;printf(“%d,%d,%d,%d”,i,j,m,n);作以下改动:(1)将第四行改为:m=i+;n=+j;(2)程序改为:main( )int i,j;i=8;j=10;printf(“%d,%d”,i+,j+);(3)在(2)的基础上,将pri

16、ntf语句改为:printf(“%d,%d”,+i,+j);(4)再将printf改为:printf(“%d,%d,%d,%d”,i,j,i+,j+);(5)程序改为:main( )int i,j,m=0,n=0;i=8;j=10;m+=i+;n-=-j;printf(“i=%d,j=%d,m=%d,n=%d”,i,j,m,n);6、程序填空并上机运行(1)从键盘输入两个小写英文字母,编程交换它们的值,然后输出其对应的ASCII码,如:ab(回车),输出c1=66,c2=65.main ( ) char c1,c2,t; scanf (%c%c,_); _;c1=c2;_;printf (c1

17、=_,c2=_n,_,_);(2)在屏幕上显示“C语言编程” #define ZF C语言编程main ( ) printf (_);*(3)main ( ) _/*定义一个字符数组a为“a happy girl!”*/static char b4=b,o,y;printf (_); /*输出a的第5个元素*/printf (%sn,_) /*输出“a happy girl!”*/_;printf (%sn,b);四、实验报告: 1、源程序。2、调试过程中出现的错误及修改情况。3、实验结果。4、根据实验结果分析原有程序和修改后的程序的差别。5、实验的感受及体会。实验四 顺序结构程序设计一、实验

18、目的: 1、掌握C语言中使用最多的一种语句赋值语句的使用。2、掌握数据的输入输出方法,能正确使用各种格式转换符。二、实验准备: 1、复习C语言的赋值运算符“=”,同时区分“=”和“= =”的区别。2、复习printf和scanf的格式及要求。3、源程序。三、实验步骤及内容: 1、输入并运行以下程序:main( )int a,b;float d,e;char c1,c2;double f,g;long m,n;unsigned int p,q;a=61;b=62;c1=a;c2=b;d=3.56;e=-6.87;f=3157.890121;g=0.123456789;m=50000;n=-600

19、00;p=32768;q=40000;printf(“a=%d,b=%dnc1=%c,c2=%cnd=%6.2f,e=%6.2fn”,a,b,c1,c2,d,e);printf(“f=%15.6f,g=%15.2fn m=%ld,n=%ldnp=%u,q=%un”,f,g,m,n,p,q);在以上基础上,做以下改动:(1)将程序第813行改为a=61;b=62;c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;运行程序,分析结果。(2)在(1)的基础上将printf语句改为:printf(“a=%d,b

20、=%dnc1=%c,c2=%cn d=%15.6f,e=%15.6fn”,a,b,c1,c2,d,e);printf(“f=%f,g=%fn m=%d,n=%dn p=%d,q=%dn”,f,g,m,n,p,q);(3)将p,q改用%o格式符输出。(4)改用scanf函数输入数据而不用赋值语句,scanf函数如下:scanf(“%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u”,&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);输入的数据如下:61,62,a,b,3.56,-6.87,3157.890121,0.123456789,50

21、000,-60000,37678,40000(说明:lf和ld格式符分别用于double型和long型数据)分析运行结果。2、程序填空(1)输入一球体的半径求球体的体积。_main( ) double r,v; printf(input r:); scanf(_,&r); v=_*PI*_; printf(=%.2lfn,v);问题:第3个空白处填写4/3是否合理,为什么?(2)任意输入一个整数X,求他的平方根。提示:平方根函数在库函数math.h文件中定义,它的格式为:double sqrt(double x)_main( ) int x; printf(Input x:); scanf(%

22、d,_); printf(sqrt(x)=%.2lfn,_);3、运行程序并回答问题#includemain( )int n,x,y,z;printf(请输入一个不大于1000的整数:);scanf(%d,&n);x=n/100;y=(n-x*100)/10;z=(n-x*100-y*10);printf(n%d%d%dn,z,y,x);问题:此程序的功能是什么?你能用其他方法实现同样的功能吗?请上机调试。4、编写程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar和scanf函数输出这两个字符。四、实验报告: 1、源程序。2、调试过程中出现的错误及修改情况。3、实验结

23、果。4、根据实验结果分析原有程序和修改后的程序的差别。5、实验的感受及体会。实验五 选择结构程序设计一、实验目的:1、了解C语言表示逻辑量的方法(以0代表“假”,以1代表“真” )。2、学会正确使用逻辑运算符和逻辑表达式。3、熟练掌握if语句和switch语句。二、实验准备: 1、复习关系、逻辑、条件运算符和表达式。2、复习if语句的三种形式。3、复习if语句的嵌套并能够正确分析。4、复习多分支选择switch语句。5、源程序。三、实验步骤及内容:1、完善下列程序并回答问题已知一函数: -1x0现有4个程序段:A)if(x0)y=1;else y=0;C)y=0;if(x=0)if(x0)y=

24、1;else y=-1;D)if(x=0) if(x0)y=1;else y=0;else y=-1;问题:哪个程序段不能实现此函数关系?为什么?请用缩进格式编写完整的程序并上机调试.2、运行程序并回答问题main( ) int a,b,max,min; scanf(%d%d,&a,&b); if(ab) max=a;min=b; else min=a;max=b; printf(max=%d,min=%dn,max,min);问题:a、此程序的功能是什么?b、请用条件表达式语句(?:)修改程序使之完成相同的功能。3、输入一个不大于4的正整数,判断它是几位数,然后输出各位之积。main( )

25、int x,a,b,c,d,n; printf(请输入个不大于4位的正整数X:); scanf(%d,&x); if(x_) n=4; else if(x_) n=3; else if(x_) n=2; else n=1; a=x/1000;/* x的个,十,百,千位分别用d,c,b,a表示*/ b=_; c=_; d=_; switch(_) case 4:printf(%d*%d*%d*%d=%dn, a,b,c,d, a*b*d*c); _;case 3:_;_;case 2:_;_;case 1:_;_; 4、编程(1)有一函数 x (x1) y = 2x-1 (1=x=10)用sca

26、nf函数输入x的值(分别为x=10三种情况),求y值。(2)给出一个百分制成绩,要求输出成绩等为:A、B、C、D、E。(90分以上为A,8189分为B,7079分为C,6069分为D,60分以下为E。)(3)有一个不多于5位的正整数,要求:1)求出它是几位数;2)分别打印出每一位数字;3)按逆序打印出各位数字,例如原数为321,应输出123。*4)输出四个整数,要求按大小顺序输出。四、实验报告: 1、源程序。2、调试过程中出现的错误及修改情况。3、实验结果。4、实验的感受及体会。实验六 循环控制一、实验目的:1.熟悉用while语句,dowhile语句和for语句实现循环的方法。2.掌握在程序

27、设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。二、实验准备: 1、复习while语句,dowhile语句和for语句的特点和适用条件。2、复习continue语句和break语句的区别。3、源程序。三、实验步骤及内容:1、以下程序是用来计算S=1+2+3+10,请更正下列程序的错误,并上机调试.(1)main( ) int i=1; while(i10) sum+=i; +i; printf(sum=%dn,sum);(2)main( ) int i=sum=0; do sum+=i; +i; while(i10) printf(sum=%dn,sum);(3)main( ) int

28、 i,sum=0; for(i=1;i10;+i) sum=sum+i; printf(sum=%dn,sum); 2、完善程序并回答问题下列程序用来计算S=1+1/1! +1/2! +1/3! +1/N!main( ) int t,n,i; float s; s=_;t=_; scanf(%d,&n); for(i=1;i=_;+i) t=_; s=s+_; printf(s=%fn,s);问题:1)此程序用双循环怎么实现?请写出程序上机调试(提示:内循环计算介乘,外循环实现累加).*2)若要计算S=1/2! +1/4! +1/6! +1/10!,用哪种算法比较合适?请编程上机调试。3、编写

29、下列问题的源程序并上机调试。(1)输入两个正整数,求其中最大公约数和最小公倍数。(2)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。(3)用牛顿迭代法求方程2x3-4x2+3x-6=0在1.5附近的根。*(4)猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少桃子。三、实验报告:1、源程序。2、错误原因及其修改记录。3、实验结果记录。4、实验体会。实验七 数组一、实验目的:1、掌握一维数组和二维数

30、组的定义、赋值和输入输出的方法。2、掌握字符数组和字符串函数的使用。3、掌握与数组有关的算法(特别是排序算法)。二、实验准备: 1、复习数组的基本知识。2、复习字符串数组的特点和常用的字符串处理函数。3、源程序。三、实验步骤及内容:1、程序填空求两数组的和:main()int i,j,k,a33,b33,c33;for (i=0;i=2;i+) for(j=0;j=2;j+) _;_ _;for( i=0;i=2;i+) for(j=0;j=2;j+) cij= ;for (i=0;i=2;i+) for(j=0;j=2;j+) printf(“%d”,cij);2、程序改错:计算3*3矩阵两

31、条对角线元素之和:#include void main (void)static int a3=1,2,3,4,5,6,7,8,9;int i,j;/*foundError*/int s1=2;/*found Error */int s2=2;for (i=0;i3;i+) for (j=0;j3;j+) if (i=j) s1+=aij;/*found Error */ if i=js2+=aij;printf(“%d,%d”,s1,s2);3、编写下列问题的源程序并上机调试运行。(1)用选择法对10个整数排序(10个整数用scanf函数输入)。(2)有15个数存放在一个数组中,输入一个数,

32、要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。以15个数用赋初值的方法在程序中给出。要找的数用scanf函数输入。(3)将两个字符串连接起来,不要用strcat函数。*(4)找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。此二维数组可以设定如下: 9 80 205 40 90 -60 96 1210 -3 101 89数组元素的值用赋初值方法在程序中指定。四、实验报告:1、源程序。2、错误原因及其修改记录。3、实验结果记录。4、实验体会。实验八 函数一、实验目的:1、掌握定义函数的方法。2、掌握函数实参与形参的对应

33、关系,以及“值传递”的方式。3、掌握函数的嵌套调用和递归调用的方法。4、掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。二、实验准备: 1、复习函数调用的基本理论知识。2、复习函数的嵌套调用和递归调用的方法。3、复习全局变量、局部变量;静态变量、动态变量;外部变量等概念和具体使用。4、源程序。三、实验步骤及内容:1、运行程序并回答问题(1)程序main() play(3);void print_star() printf(* * * * * * * * * *n)void print_message() printf(Good Friend! n);void play(int n)

34、int i; for(i=1;i=n;+i) print_star(); print_message(); 问题:运行后出现什么错误?为什么?应如何修改?请上机调试。(2)以下程序用于计算1+2+3+4+5。 main() int i,sum; for(i=1;i=5;+i) sum=add(i);printf(sum=%dn,sum); add (int a) int s=0; s=s+a;return(s);问题:此程序能否得到正确结果?为什么?请在不增加语句的条件下,修改程序并上机调试。(3)程序int x=567; main() printf(x=%d,y=%dn,x,y); int

35、y=890问题:运行程序后出现什么错误?为什么?如何修改?2、程序填空本程序的作用是在三位正整数中寻找符合下列条件的整数,它既是完全平方数,又有两位数字相同,例如144,676等,下列程序要找出所有满足上述条件的三位数并输出。 main() int n,k,a,b,c; for(k=1;k+) _; if(n999) _; a=n/100; b=_; c=n%10; if(flag(a,b,c) printf(N=%d=%d*%dn,n,k,k); flag(int x,int y,int z) return ! (x-y)*(_)*(y-z);3、编写下列问题的源程序并上机调试运行。(1)写

36、一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。(2)用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。*(3)用递归法将一个整数转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以是任意的整数。 *(4)求两个数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一个函数根据求出的最大公约数求最小公倍数。1)用全局变量的方法。将两个整数的最大公约数、最小公倍数都设为全局变量。2)不用全局变量,两个整数在主函数中输入,并传递给函数1,求出的最大公约数返回主函数,然后再与两个整数一起作为实参传递给函数2,以求出最小公倍数,返回到

37、主函数输出最大公约数和最小公倍数。*(5)写一个函数,输入一个十六进制数,输出相应的十进制数。四、实验报告:1、源程序。2、错误原因及其修改记录。3、实验结果记录。4、实验体会。*实验九 编译预处理一、实验目的要求:1、掌握宏定义的方法。2、掌握文件包含处理方法;。3、掌握条件编译的方法。二、实验准备: 1、复习宏定义、文件包含、条件编译的概念。2、复习宏定义、文件包含、条件编译的使用方法。3、源程序。三、实验步骤及内容:1、 程序填空:(1)# include _ main() printf(%d,2);(2)#include_ #include_main() int a=4; printf

38、(%dn, sqrt(a);(3)#include _ #include _main () char str12=s,t,r,i,n,g; printf(%dn,strlen(str);2、编写下列问题的源程序并上机调试运行。(1)定义一个带参数的宏,使两个参数的值互换。在主函数中输入两个数作为使用宏的实参,输出已交换后的两个值。说明:在程序主函数使用宏时只能用两个实参,如SWAP(A,B),不能用三个实参。(2)设计输出实数的格式,包括:1一行输出一个实数;2一行内输出两个实数;3一行内输出三个实数。实数用“%6.2f”格式输出。用一个文件“print-format.h”包含以上用#defi

39、ne命令定义的格式。在自己的文件(自己命名)中用#define命令将“print-format.h”文件包含进来。在程序中用scanf函数读入三个实数给f1、f2、f3。然后用上面定义的三种格式分别输出1f1;2f1,f2;3f1,f2,f3。(3)用条件编译方法实现以下功能:输入一行电报文字,可以任选两中输出,一为原文输出;一为将字母变成其下一字母(如a变成b,z变成a。其它字符不变)。用#define命令来控制是否要译成密码。例如:#define CHANGE 1则输出密码。若#define CHANGE 0则不译成密码,按原码输出。用条件编译方法来处理。四、实验报告:1、源程序。2、错误

40、原因及其修改记录。3、实验结果记录。4、实验体会。实验十 指针一、实验目的:1、掌握指针的概念,会定义和使用指针变量。2、学会使用数组的指针和指向数组的指针变量。3、学会使用字符串的指针和指向字符串的指针变量。4、学会使用指向函数的指针变量。5、了解指向指针的指针的概念及其使用方法。二、实验准备: 1、复习变量、变量的地址、指针变量的概念并且明确的区分这三个不同概念。2、复习指针和数组的结合运用。3、复习指针的其他理论知识。4、源程序。三、实验步骤及内容:1、 程序填空(1)以下程序调用findmax函数求数组中最大元素在数组中的下标。#include findmax (int *s,int

41、t,int *k) int p;for (p=0,*k=p;ps*k) _;main() int a10,i,k;for (i=0 ;i10;i+) scanf(%d,&ai);findmax(a,10,&k);printf(%d,%dn,k,ak);(2)以下程序统计从终端输入的字符中每个大写字母的个数。用#作为输入结束标志。#include #include main () int num26,i;char c;for (i=0;i26;i+) numi=0;while ( _!=#) if (isupper(c) numc-65+=1; /*函数isupper(c)功能判断字符c是否为大

42、写字母。*/for (i=0;i26;i+) if (numi) printf(%c:%dn,i_,numi);(3)下面程序调用getone函数开辟一个动态存储单元,调用assone 函数把数据输入此动态存储单元,调用outone函数输出此动态存储单元中的数据。# include getone(int *s) *s=(int *)malloc(sizeof(int);assone(int *a)scanf(%d;_);outone(int *b)printf(%dn,_);main()int *p;getone(&p);assone(p);outone(p);2、编写下列问题的源程序并上机调

43、试运行(要求用指针处理问题)。(1)输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。(2)得一个3*3的矩阵转置(将矩阵的行和列转换),用一函数实现。在主函数中用scanf函数输入以下矩阵元素: 1 3 5 7 9 11 13 15 19将数组名作为函数实参。函数调用后在主函数中输出已转置的矩阵。(3)用一个函数实现两个字符串的比较,即自己写一个strcmp函数:strcmp(s1,s2)。如果s1=s2,则函数返回值为0;如果s1s2,返回他们二者第一个不同字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65

44、=14);如果s1s2,则输出正值;如果s1s2则输出负值。两个字符串s1,s2由main函数输入,strcmp函数的返回值也在main函数输出。*(4)用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n和各整数在主函数中输入。最后在主函数中输出。四、实验报告: 1、回答变量、变量的地址、指针变量的区别。2、源程序。3、错误原因及其修改记录。4、实验结果记录。5、实验体会。实验十一 结构体和共用体一、实验目的:1、掌握结构体类型变量的定义和使用。2、掌握结构体类型数组的概念和应用。3、掌握共用体的概念和使用。4、了解链表的概念,初步学会对链表进行操作。二、实验准备: 1

45、、复习结构体的概念和定义方法。2、复习共用体的概念和定义方法。3、源程序。三、实验步骤及内容:1、 程序改错 typedef union long x2; int y4; char z8; MYTYPE;/*found Error*/ typedef union them; main() printf(%d,sizeof(them); 2、 程序填空以下程序建立了一个带有头结点的单向链表,结点中的数据可由键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data与不放数据,表空的条件是ph)next=NULL)。#include struct list int data ;struct

46、list *next ;_creatlist() struct list *p, q,ph; int a ;ph=(struct list *)malloc(sizeof(struct list);p=q=ph;printf(input an integer number,enter -1 to end :n);scanf(%d,&a);while (a!=-1) p=(struct list *)malloc(sizeof(struct list);p-data=a;q-next=p;_=p;scanf(%d,&a);p-next =0;return(ph);main()struct lis

47、t *head;head=creatlist();3、有5个学生,每个学生的数据包括学号、姓名、三门课成绩,从键盘输入5个学生数据,要求打印出三门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、三门课成绩、平均成绩)。要求:用一个input函数输入5个学生数据;用一个average函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主函数中输出。4、输入和运行以下程序:union dataint i2;float a;long b;char c4;main()union data u;scanf(“%d,%d”,&u.i0,&u.i1);printf(“i0=%d,i1=%dna=%fnb=%ldnc0=%c,c1=%c,c2=%c,c3=%cn”,u.i0,u.i1,u.a,u.b,u.c0,u.c1,u.c2,u.c3);输入两个整数10000、20000给u.i0和u.i1。分析运行结果。然后将

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!