内容发布更新时间 : 2024/11/16 21:32:43星期一 下面是文章的全部内容请认真阅读。
(2)算法分析:排序是指将一组无序的数据按从小到大(升序)或从大到小(降序)的次序重新排列。下面算法采用的是冒泡法排序。 #include
for i=0 to N-1 输入a[i]
for i=1 to N-1 for j=0 to N-i-1 真假
a[j]与a[j+1]交换 for i=0 to N-1 输出a[i]
图5.1 冒泡法排序流程图 a[j]>a[j+1] #include
cout<<\ for (i=0;i<=N-1;i++) cin>>a[i];
for (i=1;i<=N-1;i++) for (j=0;j<=N-i-1;j++) if (a[j]>a[j+1]) { temp=a[j];
a[j] =a[j+1]; a[j+1]=temp; }
for (i=0;i<=N-1;i++)
cout< 下面算法采用的是选择法排序。 #include cout<<\ for (i=0;i<=N-1;i++) cin>>a[i]; for(i=0;i { temp=a[i]; a[i]=a[j]; a[j]=temp;} } for (i=0;i<=N-1;i++) cout< 运行结果: Input score:90 78 68 96 88 75 67 85 92 84 68 75 78 84 85 88 90 92 96 (3) #include { float a[N][N],max,min,sum; int i,j,r1=0,r2=0,c1=0,c2=0; cout<<\ for(i=0; i for(i=0; i { max= a[i][j]; r1=i;c1=j; } else if (a[i][j] if (i==j || i+j==N-1) sum+=a[i][j]; } cout<<\ cout<<\ cout<<\} 运行结果: Input a[5][5]: 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 max=9 row1=4 col1=4 min=1 row2=0 col2=0 sum=45 (4) #include { int a[M][N],b[M][N],c[M][N],i,j; cout<<\ for (i=0;i cout<<\ for (i=0;i c[i][j]= a[i][j]+b[i][j]; for (i=0;i cout< 运行结果: Input a[M][N]: 1 2 3 4 5 6 7 8 9 Input b[M][N]: 3 2 1 6 5 4 9 8 7 4 4 4 10 10 10 16 16 16 实验五 1.实验目的 通过本次实验 (1)初步掌握有序数组的查找、增加、删除的编程方法; (2)初步掌握字符数组的定义、赋初值与字符串处理函数的使用方法; (3)初步掌握字符串复制、连接、测长等程序的编写方法; (4)学会打印杨辉三角形的编程方法; (5)学会二维数据表的排序编程方法。 2.实验要求 (1)编写实验程序; (2)在VC++运行环境中,输入源程序; (3)编译运行源程序; (4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容 (1)已有一按从小到大次序排序好的数组,现输入一数,要求用折半查找法找出该数在数组中的位置。 实验数据: 数组值为:10,12,14,16,18,20,22,24,26,28 输入数: 16 (2)编写程序,实现str=str1+str2的操作,此处运算符“+”表示将两个字符串str1、str2连接成一个字符串str。用键盘将两个字符串输入字符数组str1与str2中,连接后的字符串存放在字符数组str中,并输出连接后的字符串str。 1)用C++提供的字符串处理函数完成上述要求。 2)不用C++提供的字符串处理函数完成上述要求。 实验数据:abcde fghij (3)设计一个程序,按习题4.12的要求打印杨辉三角形。 (4)在表4.4中求每个学生的平均成绩及每门课的最高分与最低分,对学生成绩表用擂台法按平均成绩降序排序后输出。 表4.4 学生成绩情况表 学 号数 学语 文外 语平均成绩 1001908085 1002707580 1003657075 1004855060 1005809070 最高分 最低分 4.解答参考 (1)分析:对已排好序的数,折半查找法总是将要找的数与中间的元素比较,若大于它,则到后半部分去找,否则到前半部分去找。 #include int low,high,i,mid; cout<<\:\ //输入10个有序数 for(i=0;i cout<<\ //输入要查找的数 cin>>b; low=0; //设置查找的区间,开始时是全部 high=i-1; mid=(low+high)/2; while(a[mid]!=b&&low if (b==a[mid]) //找到 cout< else //没找到 cout<<\} 运行结果: Input sort array a[10]: 10 12 14 16 18 20 22 24 26 28 Input number b: 16 16 is on 3 (2) 解:解法一 #include { char str1[N],str2[N],str[2*N]; cout<<\ first String\ cin>>str1; cout<<\ second String\ cin>>str2; strcpy(str,str1); strcat(str,str2);