标准C语言程序设计函数上机报告201505学习资料_第1页
标准C语言程序设计函数上机报告201505学习资料_第2页
标准C语言程序设计函数上机报告201505学习资料_第3页
标准C语言程序设计函数上机报告201505学习资料_第4页
全文预览已结束

下载本文档

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

文档简介

《标准C语言程序设计》上机报告实验八函数、指针和结构体程序设计专业:通信工程班级:通信1401学号:姓名:完成日期:1实验目的理解函数的定义、函数原型、函数调用;深入理解函数设计,掌握函数参数的传递(传值、传指针和传引用),掌握对主调函数中的一维数组和二维数组元素取值进行修改的函数设计方法,掌握返回多个逻辑值的函数设计方法(学会传值和传引用的函数设计);理解指针函数和函数指针;掌握带参数的main函数设计;掌握对主调函数中结构体数组修改的函数设计;实验内容及要求(鼓励一题多解)Main函数输入2整数a和b,设计一个函数voidcalculate2(intx,inty,int*psum,int*psub)计算a和b的平方和与平方差,main函数调用calculate函数并输出2个计算结果。(【拓展】:通过传引用方式设计函数voidcalculate2(int&refsum,int&refsub)计算a和b的平方和与平方差)设计带参数的main函数(原型:intmain(intargc,char*argv[]);)对训练1进行修改,编译后生成带参数的命令行程序myconsole.exe。在cmd.exe界面中运行myconsole63回车,运行中无需再输入a、b值,直接显示结果:6*6+3*3=456*6-3*3=27在训练1的基础上,新增函数voidcalculate3(intx,inty,int*psum,int*psub)计算a和b的立方和与立方差,在main函数中通过人机交互询问用户需要执行的种类,并显示结果。intmain(intargc,char*argv[]){ intadd2,add3,sub2,sub3;//平方和、立方和、平方差、立方差。。。。。。。。。 printf(“输入Y/N执行平方运算/立方运算”); //用户输入YorN给字符变量type if(type==’Y’) {mycalculate(6,3,&add2,&sub2,calculate2);//输出结果 } else { mycalculate(6,3,&add3,&sub3,calculate3); //输出结果 } 。。。。。。。。。} 针对上面的main函数框架,设计带函数指针参数的mycalculate函数。输入每个学生的姓名和线性代数、通信原理和C语言课程成绩,统计每人的平均值,并按平均值降序排列,输出排列后的名次、姓名、课程名(成绩)和平均值。(注:平均值相同者按姓名的字母表顺序排列)(要求用结构体数据类型Student实现,该类型包含姓名charname[20]、3门课成绩doublescore[3]和平均分doubleave构成,结构体数组stu在main中定义)(统计平均值Average、排序BubbleSort用子函数实现)编写函数voidcount_substr(char*str,char*sub_str,。。。。。。),统计字符串str中子串sub_str的出现次数,如在字符串“10101000101”中出现子串“101”的个数为2;主函数完成字符串和子串的输入,调用count_substr函数得到子串出现的次数,在主函数中输出次数值。要求:count_substr函数输出接口类型void不得修改为其他数据类型,请在省略号处填写其他需要的参数。(选做)编程完成m×n矩阵的转置,主函数设计如下:voidmain(void){ intm,n,*pMatrix; puts(“请指定矩阵行列数:”); printf(“行数m=”); scanf(“%d”,&m); printf(“列数n=”); scanf(“%d”,&n); puts(“创建矩阵空间”); MatrixAllocate(______); puts(“给矩阵录入数据”); MatrixInput(_______); puts(“开始矩阵转置操作”); MatrixTranspose(_______); puts(“输出转置后的矩阵:”); MatrixPrint(________); puts(“释放矩阵空间,并结束应用程序!”); ReleaseMatrix(_____________);}请(1)设计void类型的函数MatrixAllocate和ReleaseMatrix分别实现用new和delete[]来分配和释放用来保存矩阵数据的堆区内存。要求:分配成功的堆内存首地址必须保存在主函数的pMatrix指针变量中。(2)设计void类型的MatrixTranspose函数完成pMatrix指针所指的矩阵转置操作。(3)设计void类型的MatrixInput和MatrixPrint函数分别完成对pMatrix指针所指堆区的矩阵数据录入和输出操作。注:new和delete运算符的使用方法如下:在堆中创建一个单一数据对象(如整型对象),并赋值9。int*pInt;pInt=newint;*pInt=9;在堆中创建一个单一数据对象(如整型对象)并初始化9。int*pInt;pInt=newint(9);在堆中创建一个有n个元素的数组(如整型数组)int*pInt;pInt=newint[n];//注:创建堆数组时不能初始化,即newint[n](0)是错误的。访问时可以使用pInt[i]或*(pInt+i)释放堆中创建的单一数据对象内存deletepInt;释放堆中创建的数组内存delete[]pInt;其中:d)e)中的pInt取值必须与a)b)new运算结果相同,换句话说,c)中不能使用*pInt++方式来访问目标数组元素,如果要用*pInt++方法,必须对pInt进行备份,备份值用于delete语句,以便保证正确回收目标堆区的内存。同free一样,释放了堆内存后,指针变量pInt自己的空间没有释放,只是其指向的堆区内存被释放,pInt等指针变量的值不会因为其所指的堆

温馨提示

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

评论

0/150

提交评论