杨辉三角和魔方阵的实现(12.14学习总结)

今天上完C语言课,感觉受益匪浅,渐渐地觉得自己喜欢上了编程,不容易呀,本科四年就是也学编程,当时为啥觉得那么枯燥难懂呢,虽然现在也觉得挺难,但是可以接受。嘻嘻。

今天主要讲了函数指针和课后题讲解。

1.函数指针

int Max(int a,int b)
{
	return a>b ? a : b;
}

int Min(int a,int b)
{
	return a<b ? a : b;
}

int Avg(int a,int b)
{
	return (a+b)/2;
}

int main()
{
	int (*p)(int,int);//指向函数的指针
	//int (*p1)[4];

	//1常规使用
	p = &Max;
	int x = (*p)(10,20);
	printf("%d\n",x);
	//&p因为是普通局部变量,所以存在栈中, 而p因为是函数,所以存在代码段
	//2函数名表示函数本身的入口地址
	p = Min;//Min等价&Min
	x = p(10,20);
	printf("%d\n",x);

	return 0;
}

2.static 和  const区别

//static用于修饰链接属性
//const定义常量

3.选择法排序

每次从待排序序列找到最小值,和待排序序列第一个值交换

void SelectSort(int *arr,int len)
{
	int tmp;
	int minIndex;//保存最小值的下标
	for(int i=0;i<len-1;i++)
	{
		minIndex = i;
		for(int j=i;j<len;j++)
		{
			if(arr[minIndex] > arr[j])
			{
				minIndex = j;
			}
		}
		
		tmp = arr[i];
		arr[i] = arr[minIndex];
		arr[minIndex] = tmp;
	}
}

void Show(int *arr,int len)
{
	for(int i=0;i<len;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n");
}

int main()
{
int arr[] = {6,9,0,1,4,8,12,34,8,99,22,33,11};


	SelectSort(arr,sizeof(arr)/sizeof(arr[0]));
	Show(arr,sizeof(arr)/sizeof(arr[0]));
}

主要思想是保存最小值下标。


4.杨辉三角

void PascalTriangle()
{
#define SIZE 10
	int arr[SIZE][SIZE];
	int i;
	int j;
	for(i=0;i<SIZE;i++)
	{
		for(j=0;j<=i;j++)
		{
			if(j==0 || i==j)
			{
				arr[i][j] = 1;
			}
			else
			{
				arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
			}
		}
	}
	for(i=0;i<SIZE;i++)
	{
		for(j=0;j<=i;j++)
		{
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
}

杨辉三角的思想是第一列和对角线全为1,其他数字是上一行同一列数字加上上一行前一列数字。



猜你喜欢

转载自blog.csdn.net/sihuo521/article/details/78808722