17.5实验5循环结构程序设计
1.实验目的
(1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。
(2)掌握在程序设计中循环的方法实现一些常用的算法(如穷举、迭代、递推等)。(3)进一步学习调试程序。
2.实验内容
编程并上机调试运行
(1)输入一行字符、分别统计出其中的英文字母、空格、数字和其他字符的个数(本题是教材第5章第4题)
在得到正确结果后,请修改程序使之能分别统计大小写字母、空格、数字和其他字符的个数。
(2)输出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其个位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=1³+5³+3³(本题是教材第五章第8题)。
(3)猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃,只剩一个桃子了。求第一天共摘了多少桃子(本题是教材第五章第12题)。
再得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序并运行,检查结果是否正确。
(4)用牛顿迭代法求方程2X³=4x²+3x-6=0在1.5附近的根(本题是教材第五章第13题,学过高等数学的读者可选做此题)。
再得到正确结果后,请修改程序所设的X初始值由1.5改为100,1000,1000,再运行,观察结果,分析不同的x初值对结果有什么影响,为什么?
修改程序,使之能输出迭代的次数和每次迭代的结果,分析不同的x初始值对迭代的次数有无影响。
3.预习内容
预习教材第5章。
17.6实验6数组
1.实验目的
(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法。
(2)掌握字符数组和字符串函数的使用。
(3)掌握与数组有关的算法(特别是排序算法)。
2.实验内容
编程序并上机调试运行。
(1)用选择法对10个整数排序。10个整数用scanf函数输入(本题是教材第6章第2题)。
(2)已有一个已排好序的数组,求输入一个数后,按原来排序的规律将它插入数组中(本题是教材第6章第4题)。
(3)有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数(本题是教材第6章第10题)。
(4)出一个二维数组的“鞍点”,及该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点
(本题是教材第6章第8题)。
应当至少准备两组测试数据;
○1二维数组有鞍点,例如;
98020540
90-60961
210-310189
○2二维数组没有鞍点
98020540
90-601961
210-310189
45541567
用scanf函数从键盘输入各数组各元素的值,检查结果是否正确。题目并未指定二维数组的行数和列数,程序应处理任意行数和列数的数组。因此,从理论上来说,应当准备许多种不同函数和列数的数组数据,但这样的工作量太大,一般来说不需要这样做,只需准备典型的数据即可。
如果已制定了数组的行数和列数,可以在程序中对数组元素赋初值,而不用scanf函数。请读者修改程序以实现之。
3.预习内容
预习教材第6章。
17.7实验7函数(一)
1.实验目的
(1)熟悉定义函数的方法。
(2)熟悉声明函数的方法。
(3)熟悉调用函数时实参与形参的对应关系,以及“值传递”的方式。
(4)学习对多文件的程序的编译和运行。
2.实验内容
编程序并伤及调试运行之。
(1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息(本题是第七章第三题)。
本程序应当准备以下测试数据:17,34,2,1,0。分别运行并检查结果是否正确。要求所编写的程序,主函数的位置在其它函数之前,在主函数中对其所调用的函数做声明。运行以下工作:
a)输入自己编写的程序,编译和运行程序,分析结果。
b)将主函数的函数声明删掉,再进行编译。分析编译结果。
c)把主函数的位置改为其他函数之后,在主函数中不含函数声明。
d)保留判别素数的函数,修改主函数,要求实现输出100到200之间的素数。
(2)写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出(本题是第7章第七题)
1)输入程序,编译和运行程序,分析结果。
2)分析函数声明中参数的写法。先后用以下两种形式。
(a)函数声明中参数的写法与定义函数时的形式完全相同,如:
void cpy(char s[],char c[]);
(b)函数声明中参数的写法与定义函数时的形式基本相同,但省略写数组名。如:void cpy(char[],cha[]);
分别编译和运行,分析结果。
思考形参数组为什么可以不指定数组大小。
(c)如果随便制定数组大小行不行,如:
Void cpy(char s[40],char c[40]);
请分别上机试一下。
(3)输入10个学生5门课的成绩,分别用函数实现下列功能;
1)计算每个分数平均分;
2)计算每门课的平均分
3)出所有50个分数中最高的分数所对应的学生和课程(本题是第7章第14题)(4)用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数(本题是第7章第10题)。
1)把两个函数放在同一个程序文件中,作为一个文件进行编译和运行。
2)把两个函数分别房子两个程序文件中,作为两个文件进行编译、连接和运行。3.预习内容
(1)教材第七章。
(2)本书第三部分中有关对多文件程序进行编译和连接方法。
17.8实验8函数(二)
1.实验目的
(1)进一步熟悉怎样利用函数实现制定的任务。
(2)熟悉函数的嵌套调用和递归的调用的方法。
(3)熟悉全局变量和局部变量的概念和用法。
2.实验内容
(1)写一个函数,用起泡法对输入的10个字符按由小到大顺序排列(本题是第七章第11题)。
1)输入程序,进行编译和运行,分析结果。
2)将要排序的字符串改为5个,按由从小到大的顺序排列。
(2)用递归法将一个整数位n转换成字符串。例如,输入483,应输出字符串“483”。N的位数不确定,可以使任意的整数(本题是第七章第17题)
1)输入程序,进行编译和运行,分析结果。
2)分析递归调用的形式和特点。
3)思考如果不用递归法,能否改用其他方法解决此问题,上级试一下。
(3)编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
1)在程序中用全局变量。编译和运行程序。分析结果。分析结果,讨论为什么要用全局变量。
2)能否不用更全局变量,修改程序并运行之。
(4)求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数。用另一个函数根据求出的最大公约数求最小公倍数。
1)不用全局变量,分别用两个函数求最大公约数和最小公倍数,两个整数在函数中输入,并传送给函数hcf,求出最大的公约数返回主函数,然后再与两个整数一起作为实参传递函数lcd,求出最小公倍数,返回到主函数输出最大公约数和最小公倍数。
2)用全局变量的方法。用两个全局变量分别代表最大公约数和最小公倍数。用两个函数分别求出最大公约数和最小公倍数,但其数值不由函数带回,而是赋给全局变量。在主函数中输出他们的数值。
分别用以上两种方法编程并运行,分析对比。
3.预习内容
教材第七章
17.9实验9指针(一)
1.实验目的
(1)掌握指针和间接访问的概念,会定义和使用指针变量。
(2)能正确使用数组的指针和指向数组的指针变量。
(3)能正确使用字符串的指针和指向字符串的指针变量。
2.实验内容
编程序并上机调试运行以下程序(都要求用指针处理)。
(1)输入3个整数,按由小到大的顺序输出,然后将程序改为:输入3个字符串,按由小
到大的顺序输出(本题是第八章第1-2题)。
○1先编写一个程序,以处理输入3个整数,按由小到大的顺序输出。运行此程序,分析结果。
○2把程序改为能处理输入3个字符串,按由小到大的顺序输出。运行此程序,分析结果。
○3比较以上两个程序,分析处理整数与处理字符串有什么不同?例如:
(a)怎样得到指向整数(或字符串)的指针。
(b)怎么比较两个整数(或字符串)的大小。
(c)怎样交换两个整数(或字符串)。
(2)将一个3×3的整型二维数组转置,用一函数实现之(本题是第8章第9题)。
在主函数中用scanf函数输入以下数组元素:
135
7911
131519
将数组0行0列元素的地址作为函数实参,再执行函数的过程中实现行列交换,函数调用结束后在主函数中输出已转置的二维数组。
请思考:
○1二维数组的指针,某一行的指针、某一元素的指针各代表什么含义?应该怎样表示?
○2怎样表示低i行j列元素及其地址。
(3)将n个数按输入时的顺序的逆序排列,用函数实现(本题是教材第8章第14题)。
○1在调用函数时用数组名作为函数实参。
○2函数实参改为用指向数组元素首元素的指针,形参不变。
○3分析以上二者的异同。
(4)写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度(本题是教材第8章第6题)。
分别在程序中按以下两种情况处理:
○1函数形参用指针变量。
○2函数形参用数组名。
作比较分析,掌握其规律。
3预习内容
预习教材第8章
17.10实验10指针(二)
1.实验目的
(1)进一步掌握指针的应用。
(2)能正确使用数组的指针和指向数组的指针变量。
(3)能正确使用字符串的指针和指向字符串的指针变量。
scanf输入整型数组
(4)了解指向指针的指针的用法。
2.实验内容
根据题目要求,编写程序(要求用指针处理),运行程序,分析结果,并进行必要的讨论分析。
(1)有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的人(本题是第8章第5题)。
(2)将一个5×5的矩阵(二维数组)中最大的元素放在中心,4个角放最小的元素(顺序为从左到右,从上到下一次从小到大存放),写一函数实现之。用main函数调用(本题是第8章第10题)。
(3)有一个班4个学生,5门课程。
○1求第一门课程的平均分。
○2出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩。
○3出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。