标签:选择排序 总结 oid lse 书籍 没有 std 元素 指针
1.薄弱环节:
①有时会出现无脑错误:忘记赋初值、==写成=等,中段测试时,
int MyStrlen(char src[]) { int x=0,s=0; for(;src[x]!=‘\0‘;x++) s++; return s; }
由于s忘记赋初值导致答案错误;
②对字符串处理函数的运用不够熟练,导致有些简单题目被复杂化,如新手赛中的problemA;
③指针作为函数参数的应用不够了解,有时会混淆传值调用和传地址调用,如练习九题7-1,定义函数void sort(int *a,int n),但在使用时没有用指针的运算导致错误;
2.有挑战性的题:
(1)题目大意:
输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入一个正整数 n (1<n<=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元素按升序排列,最后输出排序后的数组元素。
要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。
(2)解题思路:先定义函数void sort(int *a,int n),运用指针变量作为函数参数(传递至调用)进行选择排序,再输出;
(3)代码思路:
#include <iostream> using namespace std; void sort(int *a,int n) { int i,j,p,t; for(i=0;i<n-1;i++) { p=i; for(j=i+1;j<n;j++) { if(*(a+j)<*(a+p)) { p=j; if(p!=i) { t=*(a+p); *(a+p)=*(a+i); *(a+i)=t; } } } } } int main() { int repeat,i,k,p; cin >> repeat; int n[repeat],a[100]; for(i=0;i<repeat;i++) { cin >> n[i]; p=n[i]; for(k=0;k<p;k++) { cin >> a[k]; } sort(a,p); cout << "After sorted: "; for(k=0;k<n[i];k++) { cout << a[k]; if(k!=n[i]-1) { cout << " "; } else { cout << endl; } } } }
(4)核心技术总结:选择排序法的运用、指针变量作为函数参数的运用;
(5)遇到的问题:不知道可以边输入边输出、对选择排序法不了解、对指针作为函数参数的应用不熟练,通过查找书籍、及网上的资料参考解决。
标签:选择排序 总结 oid lse 书籍 没有 std 元素 指针
原文地址:https://www.cnblogs.com/XuanChan/p/10025894.html