中段自评

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)遇到的问题:不知道可以边输入边输出、对选择排序法不了解、对指针作为函数参数的应用不熟练,通过查找书籍、及网上的资料参考解决。

posted @ 2018-11-27 13:39  超高校级的院长  阅读(229)  评论(0编辑  收藏  举报