码迷,mamicode.com
首页 > 其他好文 > 详细

中段自评

时间:2018-11-27 14:41:59      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:选择排序   总结   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!