其他分享
首页 > 其他分享> > 2021.11.30 C语言课上练习题目

2021.11.30 C语言课上练习题目

作者:互联网

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语言版本的区别:

  1. 把 main 函数上面的全部忽略掉,上面一部分相当于C语言里面的 #include<stdio.h>
  2. cin 相当于 scanf
  3. 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;
}
  1. 使用一个变量记录下这个值应该存放的位置
  2. 多申请一个大小相同的数组
  3. 把新的结果往新的数组里面填充

第二种方法(改进):

#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;
}
  1. 省去新申请数组这个操作
  2. 从数组末尾遍历到应当插入数值的地方
  3. 把每一个数据都往后移动一位
  4. 最后将数值填充进指定位置

标签:int,30,C语言,++,课上,a2,printf,杨辉三角,main
来源: https://blog.csdn.net/qq_42940836/article/details/121642116