您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > C语言程序设计II实验指导书
课程实验指导书第二部分实验内容实验一:数组定义、初始化和引用运算一、实验目的1、掌握一维数组的定义和引用2、掌握一维数组的初始化方法3、了解与一维数组有关的应用编程方法二、实验意义在解决实际问题或实现某些算法时,数组是经常使用的构造数据类型,掌握数组的定义,元素引用特征和数组的编程特色,可加强学生解决实际问题的能力,同时可接触到更多的经典算法,这些算法很多都是通过数组类型存储数据并实现的,有了这些基础后,学生可以在今后的编程中应用这些知识。数组的实验能让学生进一步的提高程序设计编程和调试的能力,对于数组元素引用及循环控制的特点,也可以在实验中得以加深理解和巩固知识。三、实验重点1一维数组的定义、元素的引用。2一维数组编程的循环控制特色。3排序等相关算法的实现。四、实验难点一维数组编程的循环控制特色,程序调试时的数组越界问题排序算法的理解和记忆五、实验方式提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。六、实验内容1.运行下面的程序。根据运行结果,可以说明什么?main(){inti,x[5]={1,2,3,4,5};for(i=0;i=5;i++)printf(%4d,x[i]);}2、编程:输入一个长度为10的一维数组,然后将其向右循环移动一位后输出。如:输入的一维数组啊[10]为:012345678910则向右循环移动一位后,数组a[10]变为:1001234567893、从键盘输入10个整数,找出最大的数并输出该数及其下标。4、用scanf函数给二维数组a[3][4]输入12个数据,并求出每一行的正数之和,每一行的最小值以及下标值。5、编一程序,将两个字符串连接起来,分别有strcat函数和不要用strcat函数两种方法实现。提示:字符串输入输出可用scanf、printf函数或者gets、puts函数七、实验总结和实验报告的撰写1、以为数组的定义和一维数组初始化的方法。2、一维数组相关算法设计。实验二:字符串处理和数组常用算法实验一、实验目的1掌握二维数组的定义、元素引用、编程方法。2掌握字符数组的定义、元素引用、编程方法。3掌握字符串常用程序设计方法。二、实验意义在解决实际问题或实现某些算法时,数组是经常使用的构造数据类型,掌握数组的定义,元素引用特征和数组的编程特色,可加强学生解决实际问题的能力。在数组的使用中,字符数组及相关字符串操作是经常使用的操作。增强字符数组的编程练习,提高相关程序设计经验对于提高学生的程序设计和调试的能力具有很重要的作用。三、实验重点1二维数组的定义、元素引用、使用方法。2字符数组的定义、元素引用、使用方法。3二维数组编程时的程序设计方法4字符串的操作及常用程序设计方法。四、实验难点二维数组的相关算法字符串操作的循环控制方法。五、实验方式提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。六、实验内容1、编程:随机输入一个长度为20的一维数组a[20],对数组a的前10个元素用选择法从小到大排序,后10个元素用冒泡法从大到小排序,最后用数组a的前10个元素分别减去后10个元素,得到的结果存放在长度为10的一位数组b[10]中;程序要求把排序前和排序后的数组a和数组b输出。2、把第一题的数组b的最大和最小删除,然后插入最大值和最小的平均值,要求插入后不改变数组的排序。3、找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。至少准备两组测试数据:(1)二维数组有鞍点9802054090-60961210-310189(2)二维数组没有鞍点9802054090-60961210-31018945541567用scanf函数从键盘输入数组的各元素的值,检查结果是否正确,题目未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。程序提示:输入矩阵flag2=0;//矩阵中无鞍点for(i=0;in;i++)//找第i行的鞍点{max=a[i][0];maxj=0;用for循环语句找第i行的最大值存放在max中,其下标j保存到maxj中for(k=0,flag1=1;kn&&flag1;k++)//判断max是否在该列上最小flag1=0则不是最小if(maxa[k][maxj])flag1=0;//max不是该列的最小元素if(flag1){printf(\n第%d行第%d列的%d是鞍点\n,i+1,maxj+1,max);flag2=1;}}//endforiif(!flag2)printf(\n矩阵中无鞍点\n);4、输入一行字符,统计其中的单词个数,已知单词之间用空格分隔开。5、从键盘输入一个字符串,分别输出其完全大写和完全小写的形式。6、输入6个字符串,输出最大的字符串。七、实验总结和实验报告的撰写实验三:函数的申明、定义和简单函数的应用一、实验目的1、掌握模块化编程方法中自定义函数和主调函数的模块关系。2、函数的申明格式和申明的位置3函数的定义格式4函数的调用二、实验意义采用模块化程序设计的方法,是解决复杂问题的基础。将一个复杂的较大的问题,分解为一个个独立的简单模块。模块在C语言中是用函数来实现的,因此掌握好函数的定义、调用,及了解函数模块之间的连接关系对于开发大型项目具有非常重要的意义,函数的实验对于巩固和理解函数的知识是非常必要的。三、实验重点掌握函数的申明和定义的格式,自定义函数和主函数与系统函数的区别,自定义函数的的调用的格式,以及各函数执行的顺序。四、实验难点函数的申明和定义以及函数的调用五、实验方式提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。六、实验内容1、编写一个函数,输出语句:“ILoveChina!”。2、调试下面的程序,记录系统给出的出错信息,并指出错误原因。main(){intx,y;printf(%d\n,sum(x+y));}intsum(a,b);{inta,b;return(a+b);}3、编写两个函数分别实现:sum实现1到m的累加,mul实现1到n累乘;在主函数main里调用sum和mul函数求1到30累加和1到15累乘,最后把累加和累乘结果输出。4、编写一个函数prime实现:判断任何一个数是否为素数;并在main函数里调用prime函数判断一个数是否为素数。5、编写函数,判断指定的字符是否是数字字符,如果是返回1,不是则返回0。在主函数中输入该字符,调用函数判断该字符并输出是否是数字字符。6、编写一个函数,计算一个整数m的n次幂,在主函数中输入m和n,并在主函数中输出计算结果。7、编写一个函数,输出如下图形*************************************************************七、实验总结和实验报告的撰写实验四:有参、无参函数应用实验一、实验目的1、掌握定义无参函数和有参函数的定义及调用方法。2、掌握函数调用时如何处理函数的返回值。二、实验意义在模块化程序设计中通常有值的传递,也就是在调用函数的时候,主调用函数在调用被调用函数的时,通过参数向被调用的函数传递数据,一般情况下,执行被调用函数时会得到一个函数值,共主调用函数使用,这叫有参函数;而在有时在调用函数时,主调用函数不想被调用函数传递传递数据,也就是无参函数,无参函数一般用来执行指定的一组操作,无参函数可以带回或者不带回函数值,但一般以不带回函数值的居多。三、实验重点1无参函数的定义和调用2有参无返回值函数的定义和调用3对于有返回值函数调用时的处理方法四、实验难点有参函数调用时,实参和形参的概念理解和对应关系。有返回值函数调用时返回值的处理五、实验方式提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。六、实验内容1、理解下面的程序,填空完善程序。main(){inta,b,c;scanf(“%d%d”,);c=(a,b);printf(“a=%db=%dmax=%d\n”,a,b,c);}intmax(x,y);{intz;if(xy)z=x;elsez=y;;}2、编写一个函数:其功能是求n个学生的平均分,并且把把学生的成绩从小到大排序。学生的成绩在主函数里用scanf函数输入存放在一维数组里。3、编写一个函数trans:其功能是实现一个三行四列二维数组转置,并求转置后第一行和最后一列之和;把转置后的数组和第一行、最后一列元素之和输出。三行四列的数组在main函数里用scanf函数输入。4、求1!+2!+…+n!,要求:编写两个函数,分别实现求n!功能,和1!+2!+…+n!功能,在主函数输入n值,并在主函数中输出计算结果。三、实验要求实验之前掌握顺序控制程序设计的相关算法。四、课堂作业提交把所编写的程序复制到一个以学号命名Word文件里,并且把运行结果截图粘贴在每程序的后面;下课前提交Word文件。五、实验总结和实验报告的撰写实验五:函数的常用算法和综合应用一、实验目的1、掌握函数的相关的算法的实现2、掌握函数的嵌套调用和递归调用3、内部函数和外部函数的定义和区别4、掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。5、学会对多文件程序的编译和运行。二、实验意义一个C程序由一个或多个程序模块组成每一个程序模块作为一个源程序文件,对较大的程序,一般不希望把所有内容全放在一个文件中,而是将它们分别放在若干个源文件中,由若干个源文件组成一个C程序。这样便于分别编写和编译,提高效率;每个文件又有若干和函数,每个函数都实现某个特定的功能,也有相应算法。三、实验重点1、函数的的嵌套调用和递归调用2、函数的相关算法的实现四、实验难点1、函数的的嵌套调用和递归调用2、函数的相关算法的实现五、实验方式提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。六、实验内容1、函数fun的功能是:使一个字符串按逆序存放,请填空。voidfun(charstr[]){charm;inti,j;for(i=0,j=strlen(str);i;i++,j--){m=str[i];str[i]=;str[j-1]=m;}printf(“%s\n”,str);}2、指出下列各变量的存储属性,分析程序的应得结果,并上机验证。#includestdio.hintn=1;voidfunc(){staticinta=2;intb=5;a+=2;b+=5;n+=12;printf(a=%d,b=%d,n=%d\n,a,b,n);}voidmain(){inta=0,b=-10;printf(a=%d,b=%d,n=%d\n,a,b,n);func();printf(a=%d,b=%d,n=%d\n,a,b,n);func();}3、写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用者两个函数,并输出结果。两个整数有键盘输入。4、有一个班,有4个学生,5门课。①求各门课的平均分;②找出有两门以上课程不及格的学生,输出它们的学号和全部课程成绩及平均成绩。③找出平均成绩在90分以上或全部课程成绩在85分以上的学生,输出它们的学号和全部课程成绩。分别编三个函数实现以上三个要求。五、实验总结和实验报告的撰写实验六:指针变量定义、赋值与指针和数组的应用一、实验目的1、掌握C语言中指针的概念,定义和使用指针变量;2、掌握指针数组和数组指针的使用方法;3、掌握字符串指针和指向字符串的指针变量的使用方法;4、掌握指向函数的指针变量的使用方法;5、掌握指向指针的指针概念的使用方法;二、实验意义指针是C语言的一个重要概念,也是C语言的一个重要特色,正确而灵活地运用它,可以使程序简洁,紧
本文标题:C语言程序设计II实验指导书
链接地址:https://www.777doc.com/doc-2908112 .html