5.6杨辉三角:
C++版本
https://blog.csdn.net/qq_42940836/article/details/120611995?spm=1001.2014.3001.5501
Python版本
https://blog.csdn.net/qq_42940836/article/details/120612847?spm=1001.2014.3001.5501
C++版本中,和C语言版本的区别:
- 把 main 函数上面的全部忽略掉,上面一部分相当于C语言里面的 #include<stdio.h>
- cin 相当于 scanf
- cout 相当于 printf
改进: 参考打印菱形的程序,通过计算,每一行输出相应的空格数量,使杨辉三角的形状规范,趋近于一个正三角形
注意点: 杨辉三角每一层的数字数量既有奇数又有偶数,不能仅考虑奇数的情况,需要画出图找规律,经过计算,每一层的前置空格数符合等差数列
5.4
第一种方法:
#include <stdio.h>
int main(void)
{
int a[6] = {1,2,3,4,5};
int a2[6] = {0};
int b = 2;
int c = 0;
for (int i = 0; i < 4; ++i)
{
if (b >= a[i] && b < a[i + 1])
{
c = i;
a2[i] = a[i];
break;
}
else
{
a2[i] = a[i];
}
}
a2[c + 1] = b;
for (int i = c + 1; i < 6; ++i)
{
a2[i + 1] = a[i];
}
for (int i = 0; i < 6; ++i)
{
printf("%d ",a2[i]);
}
return 0;
}
- 使用一个变量记录下这个值应该存放的位置
- 多申请一个大小相同的数组
- 把新的结果往新的数组里面填充
第二种方法(改进):
#include <stdio.h>
int main(void)
{
int a[6] = {1,2,3,4,5};
int b = 2;
int c = 0;
for (int i = 0; i < 4; ++i)
{
if (b >= a[i] && b < a[i + 1])
{
c = i;
break;
}
}
for (int i = 4; i >= c; --i)
{
a[i + 1] = a[i];
}
a[c] = b;
for (int i = 0; i < 6; ++i)
{
printf("%d ",a[i]);
}
return 0;
}
- 省去新申请数组这个操作
- 从数组末尾遍历到应当插入数值的地方
- 把每一个数据都往后移动一位
- 最后将数值填充进指定位置
|