您的位置:首页 > 其它

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

2017-12-15 00:02 225 查看
今天上完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,其他数字是上一行同一列数字加上上一行前一列数字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: