还剩36页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
实验1C语言程序初步实验名称C语言程序初步实验类型:验证型
一、实验目的了解TurboC集成开发环境熟悉C程序的实现过程和方法掌握编辑、编译、连接、运行程序的过程和方法了解常见的两种语法错误(Error/Warning)
二、实验内容了解TurboC集成开发环境的功能,熟悉菜单、热键基本操作启动、退出TurboC集成开发环境了解F5/F6;F10,→、←、↑、↓功能键;Alt+高亮度键的效果和作用激活文件菜单File、编译菜单Compile、运行菜单Run、监视菜单Break/Watch,查看菜单选项在TurboC下完成“源程序清单”中规定的程序题
三、实验要求实验中仔细观察本实验创建的目录、文件,回答实验小结和思考中的问题在TurboC下完成“源程序清单”中规定的程序题编辑、编译、运行程序并获得程序结果;如果程序有错,记录编译、连接遇到的提示错误仔细思考出错原因,并更正之编制的程序必须保存在D:\用户目录中注用户目录可以用学号或姓名拼音简写
四、实验步骤、过程启动操作系统,查找TurboC集成开发环境安装位置(路径)假如为C:\TC,查看目录中是否有tc.exe,此程序就是TurboC集成开发环境的执行程序记住您的系统TurboC
2.0的安装位置启动、退出TurboC集成开发环境启动TurboC集成开发环境如双击tc.exe文件图标退出TurboC集成开发环境File-Quit退出TurboC集成开发环境再次启动TurboC环境(同前)TurboC环境中,F5/F6;F10,→、←、↑、↓功能键;Alt+高亮度键的效果和作用重复按F6键,仔细观察当前激活窗口在编辑窗口、消息窗口之间切换重复按F5键,仔细观察当前激活窗口最大,正常状态之间切换先按F10,可以看到主菜单被激活,按→、←,主菜单各个项被依次激活,试着按↑、↓可以打开相应菜单重点浏览File(文件管理)、Run(程序运行控制)、Compile菜单(程序编译、连接)菜单最后按ESC键光标回到编辑窗口主菜单各个项,首字母为红色(高亮度)可以按Alt+高亮字母,直接激活相应菜单选项例如按Alt+F激活File菜单,比F10再按光标快捷多了!按ESC键光标回到编辑窗口观察当前源程序名NONAME.C表示当前的程序还没有取名字,以后保存程序时,系统会提示输入源程序名按照下面步骤完成第1个程序题“File”-“New”创建一个新的源程序文件输入源程序,全屏幕编辑源程序“File”-“Save”保存源程序(文件名应按题目要求)观察编辑窗口源程序名是否已经修改用Windows资源管理器查看用户目录中是否产生了源程序文件*.c“Compile”-“Buildall”编译、连接源程序如果有语法错误,修改源程序后再次编译、连接程序,直到没有语法错误,系统提示成功编译连接成功后用Windows资源管理器查看用户目录中是否产生了目标文件*.obj,可执行文件*.exe,观察其命名规则“Run”-“Run”运行程序,用Alt-F5切换到用户屏幕查看运行结果对比结果是否与预期相同如果发现逻辑错误-结果与预期不同,修改源程序,重复
(3)-
(5)保存、编译、运行程序,直到程序获得正确结果注意必须顺序完成程序编辑、编译连接、运行的各个过程没有正确编译成功的程序是不可能运行的!程序开发中经常用“File”-“Save”保存源程序以免意外导致源程序丢失按步骤5完成第2个程序题注意Error-致命错的程序不能产生目标程序、执行程序,必须修改程序,并重新编译,直到成功按步骤5完成第3个程序题注意Warning-警告错的程序可以产生目标程序、执行程序,试着运行一下看看结果!^_^,还是修改吧,警告错一般也意味着程序有毛病,尽管这种程序可以强行编译连接为可执行程序,但结果一般都有问题
五、源程序清单、测试数据、结果最简单的C程序要求文件名1_
1.cmain{printfHelloworld!\n;}一个具有致命语法错的程序要求文件名1_
2.cmain{inti=9printfi=%d\ni}一个具有警告语法错的程序要求文件名1_
3.cmain{inti=9js;s=i+j;printfs=%d\ns;}
六、实验小结F5/F6;F10,→、←、↑、↓功能键;Alt+高亮度键的效果和作用?答F10,→、←、↑、↓F10激活TurboC主菜单,光标键选择菜单之间;回车确认F5编辑窗口或消息窗口最大/恢复;F6切换编辑窗口/消息窗口Alt+高亮度键,直接激活主菜单项与C语言程序直接相关的几种文件及扩展名分别是什么?答C语言源程序、目标程序、可执行程序,其后缀分别为*.c,*.obj,*.exeC语言程序主要的实现过程?答分为编辑、编译、连接、运行四个阶段其中,开发环境中,编辑完成后,可以直接启动运行,但分解的阶段仍然是四个,前面阶段未完成,程序仍然不能运行C语言程序主要的错误?答程序错误分为语法错误编译系统可以协助查找出来的语法上的错误语法错还包括致命错Error/和警告错Warning致命错必须修改!,警告错可以不修改,但常常暗示程序存在问题逻辑错误运行结果与预期不符,与程序算法逻辑相关的错误实验2顺序程序设计实验名称输入与输出程序设计实验类型验证性
一、实验目的掌握使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力
二、实验内容在TurboC下完成程序题根据商品原价和折扣率,计算商品的实际售价(结果精确到小数点后2位)根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积(结果精确到小数点后3位)注变量名可以自由选择,以易于理解为原则;数据由键盘输入
三、实验要求实验前编制程序框图、编写源程序、准备测试数据实验测试数据要求从键盘输入应尽力追求程序的完美比如要求输入数据,应当显示提示字符串,提示用户输入;输出时要求有文字说明在TurboC下完成程序的编辑、编译、运行,获得程序结果如果结果有误,应找出原因,并设法更正之编制的程序必须保存在D:\用户目录中注用户目录可以用学号或姓名拼音简写
四、实验步骤、过程启动操作系统启动TurboC集成开发环境(方法与实验1相同)完成2个程序题(编辑、保存、编译连接、运行程序,步骤与实验1相同)退出TurboC集成开发环境,关机
五、源程序清单、测试数据、结果根据商品原价和折扣率,计算商品的实际售价程序流程图main{floatpricediscountfee;printfInputPriceDiscount:;scanf%f%fpricediscount;fee=price*1-discount/100;printfFee=%.2f\nfee;}运行InputPriceDiscount:10010CRFee=
90.00注下划线表示程序运行后用户输入的数据,CR表示回车,以后不再解释
2、根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积程序框图(略)voidmain{floatrhpi=
3.1415926;floatc0s0sv;printfInputrhm:;scanf%f%frh;c0=2*pi*r;s0=pi*r*r;s=2*pi*r*h+2*pi*r*r;v=pi*r*r*h;printfc0=%.3fm\ns0=%.3fm2\ns=%.3fm2\nv=%.3fm3\nc0s0sv;}运行Inputrhm:12CRc0=
6.283ms0=
3.142m2s=
18.850m2v=
6.283m3
六、实验出现的问题、实验结果分析(参考)C语言变量先定义后使用,变量名大小写敏感scanf输入数据,变量应当使用取地址运算scanf函数格式字符串中的普通字符要原样输入,否则会发生错误
七、实验小结若scanf%f%fpricediscount;如何输入两个数据?答scanf函数格式字符串中非格式字符要求原样输入,printf函数格式字符串中非格式字符在输出时原样输出由于格式字符串为%f%f,即要求两个浮点数之间由‘,’分隔,所以输入数据时必须输入‘,’例如InputPriceDiscount:100,10CR实验3选择结构程序设计实验名称选择结构程序设计实验类型验证性
一、实验目的掌握关系、逻辑运算符及其表达式的正确使用掌握if语句和switch语句的使用了解TurboC程序调试的基本方法
二、实验内容在TurboC下完成程序题有如下函数,要求输入x的值,求y的值|X|,X<0Y=X2,0≤X<10LogX,X≥10输入1-7之间的任意数字,程序按照用户的输入输出相应的星期值某单位马上要加工资,增加金额取决于工龄和现工资两个因素对于工龄大于等于20年的,如果现工资高于2000,加200元,否则加180元;对于工龄小于20年的,如果现工资高于1500,加150元,否则加120元工龄和现工资从键盘输入,编程求加工资后的员工工资
三、实验要求实验前绘制程序流程图,编制源程序、准备测试数据在TurboC下完成程序的编辑、编译、运行,获得程序结果实验中可以采用TurboC程序调试基本方法协助查找程序中的逻辑问题
四、实验步骤、过程编辑、编译、运行程序题1,分别使用数据-5,0,5,10,100做测试编辑、编译、运行程序题2,分别使用数据1,7,8做测试编辑、编译、运行程序题3,测试数据见下表工龄y(年)现工资S0(元)252200221900181700161400尝试跟踪程序题1运行用F7或F8键单步跟踪程序,用^F7检查变量值,用F4可以将程序运行到光标当前位置
五、源程序清单、测试数据、结果给定y=fx函数,要求输入x的值,求y的值#includemath.hmain{floatxy;scanf%fx;ifx0y=fabsx;elseifx10y=x*x;elsey=log10x;printf%f\ny;}测试运行-5CR
5.0000000CR
0.0000005CR
25.00000010CR
1.000000100CR
2.
0000002、输入1-7之间的任意数字,程序按照用户的输入输出相应的星期值main{intweek;printfInput1-7:;scanf%dweek;switchweek{case1:printfMon.\n;break;case2:printfTue.\n;break;case3:printfWed.\n;break;case4:printfTur.\n;break;case5:printfFri.\n;break;case6:printfSat.\n;break;case7:printfSun.\n;break;default:printfTheinputiswrong!\n;}}测试运行Input1-7:1CRMon.Input1-7:5CRFri.Input1-7:8CRTheinputiswrong!
3、工资计算main{floats0s;inty;printfInputs0y:;scanf%f%ds0y;ify=20{ifs0=2000s=s0+200;elses=s0+180;}else{ifs0=1500s=s0+150;elses=s0+120;}printfs=%f\ns;}测试运行Inputs0y:220025CRs=
2400.000000Inputs0y:190022CRs=
2080.000000Inputs0y:170018CRs=
1850.000000Inputs0y:140016CRs=
1520.000000
六、实验出现的问题、实验结果分析(不要照抄哦,^_^)求绝对值对于浮点数要使用函数fabs使用abs是对整数取绝对值以10为底的对数,应当使用函数log100≤X<10不能表示为0=x10,否则尽管无语法错误,但是含义不正确case语句与常量之间应当有空格,否则当做语句标号处理如case1(使用单步跟踪发现)
七、实验小结程序错误分为语法错误和逻辑错误语法错误可以由编译器协助检查,逻辑错误编译器无法检查出来程序逻辑错误比语法错误更加隐蔽,程序跟踪可用于发现程序逻辑错误调用库函数应当包含对应头文件,帮助进行类型匹配检查和类型转化,保证函数调用使用正确参数实验4循环结构程序设计实验名称循环结构程序设计实验类型验证型
一、实验目的掌握while,do-while,for循环的语法结构与应用掌握while,do-while循环的区别掌握TurboC单步执行调试程序的方法
二、实验内容完成程序题用三种循环结构,求1000以内奇数的和用whiledo-while循环求i-10的连加和,i由用户输入有一堆零件(100-200个之间),如果以4个零件为一组进行分组,则多2个零件;如果以7个零件为一组进行分组,则多3个零件;如果以9个零件为一组进行分组,则多5个零件编程求解这堆零件总数提示用穷举法求解即零件总数x从100-200循环试探,如果满足所有几个分组已知条件,那么此时的x就是一个解分组后多几个零件这种条件可以用求余运算获得条件表达式
三、实验要求实验前编制源程序、对第2个实验内容需要准备测试数据在TurboC下完成程序的编辑、编译、运行查看、分析程序结果
四、实验步骤、过程编辑、编译、运行程序题1编辑、编译、运行程序题2,分别使用数据3,15做测试编辑、编译、运行程序题3
五、源程序清单、测试数据、结果用三种循环结构,求1000以内奇数的和
(1)用while结构实现voidmain{longsum;intiitem;sum=0i=0item=2*i+1;whileitem1000{sum=sum+item;i++;item=2*i+1;}printf1+3+5+...999=%ld\nsum;}
(2)用do-while结构实现voidmain{longsum;intiitem;sum=0i=0item=2*i+1;do{sum=sum+item;i++;item=2*i+1;}whileitem1000;printf1+3+5+...999=%ld\nsum;}
(3)用for结构实现voidmain{longsum;intiitem;forsum=0i=0item=2*i+1;item1000;i++item=2*i+1sum=sum+item;printf1+3+5+...999=%ld\nsum;}运行结果1+3+5+...999=
2500002、用whiledo-while循环求i-10的连加和,i由用户输入
(1)用while循环实现main{intsum=0i;printfInputi:;scanf%di;whilei=10{sum+=i;i++;}printfsum=%d\nsum;}测试运行结果Inputi:7CRsum=34Inputi:15CRsum=0
(2)用do-while循环实现main{intsum=0i;printfInputi:;scanf%di;do{sum+=i;i++;}whilei=10;printfsum=%d\nsum;}测试运行结果Inputi:7CRsum=34Inputi:15CRsum=
153、穷举法搜索计算零件总数main{intxflag=0;forx=100;x=200;x++ifx%4==2x%7==3x%9==5{flag=1;break;}ifflagprintfx=%d\nx;elseprintfnoanswer!\n;}运行结果x=122
六、实验出现的问题、实验结果分析对于累加问题,获得的累加值可能超过变量允许的范围,出现溢出错误(逻辑错误-编译时不能发现)程序题1原来sum定义为int,后来改为long后程序获得了正确的结果
七、实验小结变量类型的选择应当考虑变量的使用范围循环程序可以用三种结构实现,三种结构一般情况可以相互替换while,do-while循环的区别while先判断循环条件,如果条件满足再执行循环体,如果条件不满足,循环体一次也不执行do-while先执行一次循环体再判断循环条件,以决定是否再次执行循环体,即就是说循环体至少执行一次穷举法是利用计算机高速计算能力试探搜索求解复杂问题的一种很好的方法实验5数组程序设计实验名称数组程序设计实验类型验证型
一、实验目的掌握一维数组和二维数组的定义、初始、数组元素引用掌握一维数组和二维数组的输入/输出掌握与数组有关的算法
二、实验内容编制程序,求Fibonachi数列的前10项提示Fibonachi的第1,2项分别为1,1其后任何一项满足ai=ai-2+ai-1编写找出1-100之间能被7或11整除的所有整数,存放在数组a中,并统计其个数要求以每行排列5个数据的形式输出a数组中的数据设有4╳4的方阵,其中的元素由键盘输入求出
(1)主对角线上元素之和;
(2)辅对角线上元素之积;
(3)方阵中最大的元素提示主对角线元素行、列下标相同;辅对角线元素行、列下标之和等于方阵的最大行号(或最大列号)-下标、行列号基于0
三、实验要求编制源程序,对于程序3输入测试数据在TurboC下完成程序的编辑、编译、运行查看、分析程序结果
四、实验步骤、过程编辑、编译、运行程序题1编辑、编译、运行程序题2编辑、编译、运行程序题3测试数据12345678910111213141516
五、源程序清单、测试数据、结果
1、求Fibonachi数列的前10项main{intf
[11]={011}n;forn=3;n=10;n++f[n]=f[n-1]+f[n-2];forn=1;n=10;n++printf%df[n];printf\n;}程序结果
112358132134552、找出1-100之间能被7或11整除的所有整数main{intn=0a
[100]i;fori=1;i=100;i++{ifi%7==0||i%11==0{a[n]=i;n++;}}printfn=%d\nn;fori=0;in;i++{printf%d\ta[i];ifi+1%5==0printf\n;}printf\n;}程序结果n=
2271114212228333542444955566366707784889198993、方阵求出
(1)主对角线上元素之和;
(2)辅对角线上元素之积;
(3)方阵中最大的元素#includestdio.h#defineN4main{inta[N][N]s1=0s2=1max=0ij;fori=0;iN;i++forj=0;jN;j++scanf%da[i][j];max=a
[0]
[0];fori=0;iN;i++forj=0;jN;j++{ifi==js1+=a[i][j];ifi+j==N-1s2*=a[i][j];ifa[i][j]maxmax=a[i][j];}printfs1=%ds2=%dmax=%d\ns1s2max;}程序结果1234CR5678CR9101112CR13141516CRs1=34s2=3640max=16
六、实验出现的问题、实验结果分析数组下标范围容易搞错,容易产生越界错误利用 scanf输入数据时取地址符号容易忘记
七、实验小结典型算法需要在理解的基础上记忆实验8字符数组与字符串函数实验名称字符数组与字符串函数实验类型验证型
一、实验目的掌握字符数组的定义、初始、数组元素引用、输入输出掌握字符数组的处理掌握常用字符串处理函数
二、实验内容编制程序对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来字符数组中,最后输出(不得调用任何字符串处理函数,包括strlen)例如输入helloworld输出dlrowolleh编写程序对从键盘任意输入的字符串,将其中所有的大写字母改为小写字母,而所有小写字母改为大写字母,其它字符不变(不调用任何字符串处理函数)例如输入HelloWorld!输出hELLOwORLD!编写程序从键盘输入4个字符串(长度20),存入二维字符数组中然后对它们进行排序(假设由小到大顺序),最后输出排序后的4个字符串(允许使用字符串函数)提示字符串比较可以用strcmp函数实现,排序方法可以选择法或冒泡法
三、实验要求绘制流程图、编制源程序,测试数据1-2题不得使用任何字符串处理函数,3题允许使用字符串处理函数在TurboC下完成程序的编辑、编译、运行查看、分析程序结果
四、实验步骤、过程编辑、编译、运行程序题1,使用数据helloworld做测试编辑、编译、运行程序题2,使用数据HelloWorld做测试编辑、编译、运行程序题3,使用数据SpanishCRChinaCRAmericaCRJapanCR做测试
五、源程序清单、测试数据、结果
1、字符串进行逆序main{charstr
[100];intnij;getsstr;n=0;whilestr[n]n++;fori=0j=n-1;ij;i++j--{chark=str[i];str[i]=str[j];str[j]=k;}putsstr;}测试运行结果helloworldCRdlrowolleh
2、大写变小写,小写变大写#includestdio.hmain{chars
[100];inti;getss;fori=0;s[i]!=\0;i++{ifs[i]=As[i]=Zs[i]+=32;elseifs[i]=as[i]=zs[i]-=32;}putss;}测试运行结果HelloWorld!CRhELLOwORLD!
3、串排序(采用选择法排序)#includestring.h#defineN4main{chars[N]
[20];intij;fori=0;iN;i++getss[i];fori=0;iN-1;i++{forj=i+1;jN;j++ifstrcmps[i]s[j]0{chart
[20];strcpyts[i];strcpys[i]s[j];strcpys[j]t;}}fori=0;iN;i++putss[i];}测试运行结果SpanishCRChinaCRAmericaCRJapanCRAmericaChinaJapanSpanish
六、实验小结对于字符串的处理可以将字符串当作字符数组逐个元素处理,也可以调用字符串处理函数整体处理字符串串尾结束符号’\0’在编制字符串处理程序很重要字符串处理函数可以减轻编程工作量,了解并熟悉常用字符串处理函数乃至其它系统函数可以提高软件开发的效率要调用系统函数一般应包含此系统函数的“头文件”,以便编译系统检查调用格式如果在编程时忘记一个系统函数的调用格式,可以将光标停留在此函数上,并按ctrl+F1键联机查询gets可以输入带空格字符串,而scanf不能实验6函数的定义与调用实验名称函数的定义与调用实验类型综合型
一、实验目的掌握函数定义(返回、函数名、参数、函数体),调用掌握函数的声明嵌套调用、递归调用
二、实验内容编制函数fun,其功能是删除一个字符串中指定的字符要求原始字符串在主函数中输入,处理后的字符串在主函数中输出例如输入“Iamateacheryouareastudent”和‘e’输出“Iamatachryouarastudnt”编制函数sortstr,其功能是对多个字符串进行排序要求欲排序的字符串在主函数中输入,排好序的字符串在主函数中输出提示排序算法可参照实验9第4题,即将排序算法改为由一个函数sortstr实现掌握函数声明的使用
三、实验要求
1、2题编制源程序和测试数据;在TurboC下完成程序的编辑、编译、运行并分析程序结果3题按实验步骤完成,认真观察,仔细思考思考题
四、实验步骤、过程编辑、编译、运行程序题1使用字符串“Iamateacheryouareastudent”以及字符‘e’做测试编辑、编译、运行程序题2使用数据“Spanish”、“China”、“America”、“Japan”、“England”做测试掌握函数声明的使用输入下面程序,编译、连接,如果没有输错,应该提示成功运行获得正确结果100floatfunfloatf{returnf*f;}voidmain{floatk;k=fun
10.0;printf%f\nk;}把fun函数移到main函数之后,再次编译,提示错误Typemismatchinredeclarationoffun,(重新定义了fun,类型不一致)提示移动一块程序可以用^KB^KK定义要移动的块,然后移动光标到要移动的目标位置,^KV移动程序块另外,^KC还可以复制一块程序,试试吧!在main函数前增加函数声明floatfunfloatf;,再次编译,提示成功并能正确运行获得结果思考在什么情况需要函数声明?
五、源程序清单、测试数据、结果删除字符串中指定的字符#includestdio.hvoidfunchar[]char;voidmain{chars
[100]c;getss;c=getchar;funsc;putss;}voidfunchars[]charc{intij;fori=0;s[i]!=\0;i++{ifs[i]==c{forj=i;s[j]!=\0;j++s[j]=s[j+1];}}}测试运行IamateacheryouareastudentCReCRIamatachryouarastudnt字符串进行排序(选择法)#includestring.hvoidsortstrchars[]
[20]intn{intij;fori=0;in-1;i++{forj=i+1;jn;j++ifstrcmps[i]s[j]0{chart
[20];strcpyts[i];strcpys[i]s[j];strcpys[j]t;}}}voidmain{chars
[5]
[20];inti;fori=0;i5;i++getss[i];sortstrs5;fori=0;i5;i++putss[i];}测试运行SpanishCRChinaCRAmericaCRJapanCREnglandCRAmericaChinaEnglandJapanSpanish函数声明的使用floatfunfloatf{returnf*f;}voidmain{floatk;k=fun
10.0;printf%f\nk;}或floatfunfloatf;voidmain{floatk;k=fun
10.0;printf%f\nk;}floatfunfloatf{returnf*f;}是正确的程序形式
六、实验小结通过编制两个函数,您认为定义函数的关键是什么?答定义函数的关键是确定函数头确定了函数头就确定了函数的整体框架应该在理解函数功能基础上,确定函数形式参数(出入口参数)、返回值类型(出口参数),进而确定函数头在什么情况需要函数声明?答函数调用出现在函数定义前时,应该在函数调用前进行函数声明这样,可以使编译器在函数调用时就可以明确函数调用格式,产生正确的编译目标代码实验7指针实验名称指针实验类型验证型
一、实验目的进一步理解指针概念掌握指针变量的定义、初始化以及通过指针变量对数据的访问掌握指针与一维数组的关系
二、实验内容运行下面程序,理解指针的概念main{inta
[10]={12345678910};int*p;forp=a;pa+10;p++{printfaddress=%x\tp;printfvalue=%d\n*p;}printf%d\tp;printf%d\n*p;}运行结果address=-68value=1address=-66value=2address=-64value=3address=-62value=4address=-60value=5address=-58value=6address=-56value=7address=-54value=8address=-52value=9address=-50value=10-48-36编写程序输入一行文字,统计其中大写字母、小写字母、空格以及数字字符的个数
三、实验要求实验内容1,分析程序结果,通过实验仔细理解指针的含义(本题数组是为了提供一块有确定数值的数据空间,便于观察),完成思考题实验内容2,实验前应编制源程序、准备测试数据在TurboC下完成程序的编辑、编译、运行
四、实验步骤、过程编辑、编译、运行程序题1观察指针变量值的变化规律以及指针变量指向的数据提示地址值,从小到大,相差2-一个整数占用两个字节修改指针变量值的输出格式,即把程序中的“printfaddress=%d\tp;”改为“printfaddress=%x\tp;”,重新运行程序,观察结果这样是否更清楚,哦,16位地址值从小到大,相差2-一个整数占用两个字节最后一行数据是哪个单元的数据?画一张图看看!提示是数组a最后一个单元下面的一个单元,它是一个随机数可以读取这个单元,就像程序最后一行“printf%d\n*p;”,但千万别向这个单元写数据!如*p=10;这个空间不知道被谁用的将程序中所有int换成float,数据输出格式改为%f,观察指针变量值的变化规律,这次相邻地址值相差多少?理解指针类型的含义了吗?指针++是指针地址值+1吗?提示相差4指针++即指针指向下面一个同类型的数据,由于指针类型为float,指向下一个数据,地址值应该增加4只将程序中float*p;改为int*p;编译出现什么警告?提示指针类型不合适,用整型指针指向了浮点类型数据(浮点类型的数组元素),可见指针的类型应该是指向数据的类型一致指针类型有时称为基类型,即指向数据的类型编辑、编译、运行程序题2,分别使用数据“HelloWorld!
3.14WB”做测试
五、源程序清单、测试数据、结果
1、运行提供的程序,理解指针的概念(略)
2、统计字符串中大写字母、小写字母、空格以及数字字符的个数main{chars
[100]*p=s;intc
[4]={0};getsp;while*p{if*p=A*p=Zc
[0]++;elseif*p=a*p=zc
[1]++;elseif*p=0*p=9c
[2]++;elseif*p==c
[3]++;p++;}printf%d\t%d\t%d\t%d\nc
[0]c
[1]c
[2]c
[3];}测试运行HelloWorld!
3.14WBCR4833
六、实验思考程序1中“pa+10”什么含义?程序2中“*p=A*p=Z”,“*p=a*p=z”,“*p=0*p=9”分别表示什么含义?这几个条件表达式太长,TurboC有无系统函数可以替代?程序2中“intc
[4]={0};”定义的数组是什么作用?c
[0]-c
[3]分别代表什么?程序2中“chars
[100];”定义的数组是什么作用?假设int*p1;float*p2;那么p1=p1+5,p2=p2+5分别是什么含义?赋值后p
1、p2存放的地址值分别增加了多少?假设float*p;请问p,*p,p分别代表什么?画图表示假设p是一个指针变量,指针变量p为什么必须初始化后,才可以用*p访问?画图表示两个程序对指针的初始化分别用哪条语句完成?实验8文件实验名称文件实验类型验证型实验准备数据文件d
1.txt,d
2.txt,din.txt
一、实验目的
1、掌握文件输入/输出的操作过程
2、掌握文件的基本打开方式
3、掌握文件常用文件函数的应用
二、实验内容将两个文本文件连接成一个文本文件给文本文件加上行号后存储到另外一个文本文件.提示读文件一行函数intgetlineFILE*fpcharbuffer[]由教师提供函数功能从fp指向的文本文件中读取一行,并存放在缓冲区buffer中返回值0-正常读取以‘\n’结束的文本行,文件没有结束;1-读取到一部分文本,文件结束;2-未读取到文本,文件结束
三、实验要求理解题意,编制程序和测试数据文件程序应当详细注释
四、实验步骤、过程(学生自行填写,填写程序实现过程)
五、源程序清单、测试数据、结果两个文件连接#includestdio.hvoidmain{charn1
[80]n2
[80]n3
[80];FILE*fp1*fp2*fp3;charch;printf...linktwofile...\n;printffirstfile:;getsn1;printfsecondfile:;getsn2;printflinkedfile:;getsn3;fp1=fopenn1r;fp2=fopenn2r;fp3=fopenn3w;if!fp1||!fp2||!fp3{printfErrorOpenFile!\n;exit1;}whilech=fgetcfp1!=EOFfputcchfp3;whilech=fgetcfp2!=EOFfputcchfp3;fclosefp1;fclosefp2;fclosefp3;printflinkcomplete!...\n;}测试数据文件d
1.txt内容HiHelloHowareyoud
2.txt内容goodmorning!MrsWang运行过程...linktwofile...firstfile:d
1.txtCRsecondfile:d
2.txtCRlinkedfile:d
3.txtCRlinkcomplete!...运行后产生文件d
3.txt HiHelloHowareyougoodmorning!MrsWang文本文件加行号#includestdio.h/*ReadALineFromFile.return0:readaline(’\n’)1:readalineeof2:nonewlineeofdiscardbuffercontent*/intgetlineFILE*fpcharbuffer[]{charc;inti=0;iffeoffp{buffer[i]=\0;return2;}c=fgetcfp;while!feoffp{ifc==\n{buffer[i]=\0;return0;}else{buffer[i]=c;i++;buffer[i]=\0;}c=fgetcfp;}buffer[i]=\0;return1;}voidmain{charn1
[80]n2
[80];FILE*f1*f2;intiflag;/*flag=1或2,fileend*/charbuffer
[200];printf...addlinenum...\n;printfinputfile:;getsn1;printfoutputfile:;getsn2;f1=fopenn1r;f2=fopenn2w;if!f1||!f2{putsErrorOpenFile!\n;exit1;}i=1;flag=getlinef1buffer;whileflag==0{fprintff2%d\t%s\nibuffer;i++;flag=getlinef1buffer;}ifflag==1fprintff2%d\t%s\nibuffer;fcloseall;printfcomplete!...\n;}测试数据文件din.txt内容HiHelloHowareyougoodmorning!MrsWang运行过程...addlinenum...inputfile:din.txtCRoutputfile:dout.txtCRcomplete!...运行后产生文件d
3.txt1Hi2HelloHowareyou3456goodmorning!7MrsWang
六、实验思考文件读写操作前应该做什么工作?文件完成后又应该做什么工作?文本文件,二进制文件操作前应当如何设置文件打开的方式?判断文件结束的两种方法是什么?两种方法有什么区别?数据文件默认存放的位置在哪里?如果要求数据文件存放在D:\work中,那么程序应该如何修改?TurboC系统提供的文件函数fcloseall函数功能?试编制程序将文本文件中所有小写字母转换成大写字母后存储到另外一个文本文件实验5二进制文件操作(补充)实验名称二进制文件操作
一、实验目的进一步熟悉文件输入/输出的操作过程掌握freadfwritefseek函数复习结构体类型,结构体数组掌握二进制文件的查看方法,深入理解文本文件、二进制文件区别
二、实验内容编制程序完成程序1输入若干学生的数据学号,姓名,成绩,并存储在文件stud.dat中;从文件读出学生数据,打印成绩良好的学生的相关信息.编制程序2,向一个二进制文件中写入一个整数,一个字符然后使用DEBUG工具查看此二进制文件
三、实验要求理解题意,编制程序,准备测试数据要求使用二进制文件
四、实验步骤、过程编辑、编译、运行程序1,输入测试数据,查看分析结果,同时可以看到用户目录产生一个文件stu.dat(二进制)编辑、编译、运行程序2,可以看到用户目录产生一个二进制文件test.bin资源管理器查看文件属性Debug查看test.bin文件Debug子命令f-将内存区域用一个数字填充d-查看内存n-命名要查看的文件l-装入要查看的文件q-退出Debug思考FF7F是什么?41又是什么?FF7F是整数32767的补码表示(机内表示,16进制),其中低位在前,高位在后;41是字符‘A’的ASCII码(机内表示,16进制)将程序2中32767修改为10,‘A’修改为‘B’,思考产生的文件test.bin的大小会改变吗?这时test.bin文件中的内容又是什么?(可以再用Debug试一下!)思考如果采用文本文件,用fprintf输出两个数据,文件大小怎样确定?对于32767,10文件大小一样吗?(改一下程序,试一下!)
五、源程序清单、测试数据、结果学生信息保存、读取、处理#includestdio.h/*强制使用协处理器*/staticvoidforcefloatfloat*p{floatf=*p;forcefloatf;}structstudent{charno
[20]name
[20];floatscore;};voidmain{structstudent*ps;intni;FILE*fp;printfn:;scanf%dn;p=structstudent*mallocsizeofstructstudent*n;printfinputstudentinfo:numnamescore\n;fori=0;in;i++{scanf%s%s%fp[i].nop[i].namep[i].score;}fp=fopenstu.datwb;fwritepsizeofstructstudent*n1fp;fclosefp;freep;putsinfosved...;putsstudentgood:;fp=fopenstu.datrb;freadssizeofstructstudent1fp;while!feoffp{ifs.score=80printf%s\t%s\t%f\ns.nos.names.score;freadssizeofstructstudent1fp;}fclosefp;}测试运行n:4CRinputstudentinfo:numnamescore101wang79CR102zhang80CR103li89CR104zhao90CRinfosved...studentgood:102zhang
80.000000103li
89.000000104zhao
90.000000写一个包含一个整数、一个字符的二进制文件test.bin#includestdio.hvoidmain{FILE*fp;inti=32767;charch=A;fp=fopentest.binwb;fwriteisizeofint1fp;fwritechsizeofchar1fp;fclosefp;}。