高级语言程序设计实验指导书
DOS操作系统或 Windows 操作系统 Turbo C 程序集成环境
四.实验步骤
1.编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。 要求:
(1)数组为整型数组(10个元素)。
(2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。
(3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。
(4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?
2.编程实现:在给定的字符串中查找满足条件的第一个字符。 要求:
(1)字符串采用初始化的方式处理。 (2)通过scanf函数读入一个任意字符。
(3)在字符串中查找该字符,如果存在该字符,输出该字符在字符串中的位置以及相应的说明。如果不存在该字符,则要给出相应的信息。
3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ? n),形成n ? n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。
例如:原始数据: n=4 结果数据: 1 2 3 4 8 11 14 16 3 5 9 10 3 5 9 10 8 11 14 16 1 2 3 4 15 2 7 6 15 2 7 6 要求:
(1)本题中所涉及到的循环都采用for语句。 (2)在输入/输出时进行必要的说明。
(3)对输入的2~10之间的整数(例如4)以n=4的格式输出。
(4)输入一个n ? n矩阵(假定最大值与最小值不在同一行上),输出原始矩阵数据(按上述矩阵形式)。
17
高级语言程序设计实验指导书
(5)查找最大值与最小值,将矩阵中最大元素所在的行和最小元素所在的行对调,输出对调后的矩阵数据。
(6)修改程序,对最大值与最小值可能出现在一行上的情况做出说明。
(7)对n为3,4,5时,输入数组元素是要注意哪些问题?执行程序,检查程序的正确性。 输入程序
#include
int a[10]; int i,j,t;
printf(\ for(i=0;i<10;i++) scanf(\ printf(\ for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i]>a[i+1])
{
t=a[i]; a[i]=a[i+1]; a[i+1]=t; }
printf(\for(i=0;i<10;i++) printf(\
printf(\
} 运行结果
4.编程实现“折半查找”的过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半部继续进行折半查找。
要求:
18
高级语言程序设计实验指导书
(1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。
(2)用scanf函数输入一个要找的数。
(3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。
(4)任意输入一些数据,检查程序的正确性。
(5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”。最后通过测试几组差别较大的数据检查程序的正确性。
(6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已排好序的数据进行查找。在主函数中输入数据(无序),调用上述函数,输出结果。
5.编程实现:三个学生、五门课程的成绩分别存放在4×6矩阵的前3×5列,计算出每个学生的平均成绩存放在该数组的最后一列的对应行上。计算单科的成绩总和存放在最后一行的对应列上,并输出单科成绩的平均分。输入/输出格式举例如下:
Input(输入成绩):
65 87 68 56 78
65 87 68 56 78 70.5 83 94 67 85 91 84.0 71 75 69 84 89 77.5 219.0 256.0 204.0 258.0 232.0 0 average:
73.0 85.3 68.0 86.0 77.3 要求:
(1)数组类型为实型,输入成绩由scanf函数实现。 (2)输出已输入的原始成绩数据(3×5)。
(3)计算每个学生的平均成绩以及单科的成绩总和并按要求填入到数组中,输出填入结果后的数组(4×6)。
(4)j计算单科平均成绩后输出。 输入程序
19
高级语言程序设计实验指导书
#include
float average(float array[10]); float score[10],aver; int i;
printf(\ for(i=0;i<10;i++) scanf(\ printf(\ aver=average(score);
printf(\}
float average(float array[10]) { int i;
float aver,sum=array[10]; for(i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } 运行结果
20
相关推荐: