栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言案例程序集

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言案例程序集

文章目录

一、程序控制结构

(一)输出斐波拉契数(二)打印杨辉三角形(三)打印乘法九九表(四)百钱买百鸡问题(五)打印水仙花数

一、程序控制结构 (一)输出斐波拉契数

斐波那契数列,又称黄金分割数列,指的是这样一个数列: 1 、 1 、 2 、 3 、 5 、 8 、 13 、 21 、 34 、 … … 1、1、2、3、5、8、13、21、34、…… 1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以递推的方法定义: F ( 0 ) = 1 , F ( 1 ) = 1 , F ( n ) = F ( n − 1 ) + F ( n − 2 ) ( n ≥ 2 , n ∈ N ∗ ) F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) F(0)=1,F(1)=1,F(n)=F(n−1)+F(n−2)(n≥2,n∈N∗)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 1963 1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。源代码

#include "stdio.h"

int main()
{
	int i, a, b, c, f[40];

	printf("方法一:利用简单变量进行迭代n");
	a = 1;
	b = 1;
	printf("%-8d %-8d ", a, b);

	for (i = 3; i <= 40; i++)
	{
		c = a + b;
		printf("%-8d ", c);
		a = b;
		b = c;
		if (i % 5 == 0)
			printf("n");
	}

	printf("nn方法二:利用一维数组进行递推n");

	f[0] = 1;
	f[1] = 1;
	for (i = 2; i < 40; i++)
	{
		f[i] = f[i - 1] + f[i - 2];
	}

	for (i = 0; i < 40; i++)
	{
		printf("%-8d", f[i]);
		if ((i + 1) % 5 == 0)
			printf("n");
	}
	
	return 0;
}

运行结果
(二)打印杨辉三角形

杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623 ~ 1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

( a + b ) 1 = a + b (a+b)^1=a+b (a+b)1=a+b

( a + b ) 2 = a 2 + 2 a b + b 2 (a+b)^2=a^2+2ab+b^2 (a+b)2=a2+2ab+b2

( a + b ) 3 = a 3 + 3 a 2 b + 3 a b 2 + b 3 (a+b)^3=a^3+3a^2b+3ab^2+b^3 (a+b)3=a3+3a2b+3ab2+b3

( a + b ) 4 = a 4 + 4 a 3 b + 6 a 2 b 2 + 4 a b 3 + b 4 (a+b)^4=a^4+4a^3b+6a^2b^2+4ab^3+b^4 (a+b)4=a4+4a3b+6a2b2+4ab3+b4
……

源代码

#include "stdio.h"
int main()
{
	int i, j, k, m[14][14];

	for (i = 0; i < 14; i++)
	{
		for (j = 0; j < 15; j++)
		{
			m[i][j] = 1;
		}
	}

	for (i = 2; i < 14; i++)
	{
		for (j = 1; j < i; j++)
		{
			m[i][j] = m[i - 1][j - 1] + m[i - 1][j];
		}
	}

	for (i = 0; i < 14; i++)
	{
		for (k = 1; k < 40 - 3 * i; k++)
		{
			printf(" ");
		}

		for (j = 0; j <= i; j++)
		{
			printf("%-5d ", m[i][j]);
		}
		printf("n");
	}
	return 0;
}

运行结果
(三)打印乘法九九表

作为启蒙教材,我们都背过九九乘法表:一一得一、一二得二、……、九九八十一。而古代是从“九九八十一”开始,因此称“九九表”。九九表的使用,对于完成乘法是大有帮助的。齐桓公纳贤的故事说明,到公元前7世纪时,九九歌诀已不稀罕。也许有人认为这种成绩不值一提。但在古代埃及作乘法却要用倍乘的方式呢。举个例子说明:比如计算23×13,就需要从23开始,加倍得到23×2,23×4,23×8,然后注意到13=1+4+8,于是23+23×4+23×8加起来的结果就是23×13。通过对比,不难看出使用九九表的优越性了。源代码

#include 

int main()
{
	int i, j;

	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d×%d=%-2d ", i, j, i * j);
		}
		printf("n");
	}
}

运行结果
(四)百钱买百鸡问题

我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?

翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

需要定义三个整型变量 c o c k cock cock, h e n hen hen, c h i c k chick chick,分别代表公鸡、母鸡和小鸡的购买数量。
有两方面的条件:关于钱的条件与关于鸡的条件
– 钱的条件: c o c k × 5 + h e n × 3 + c h i c k 3 = 100 cock times5+hentimes3+displaystylefrac{chick}{3}=100 cock×5+hen×3+3chick​=100
– 鸡的条件: c o c k + h e n + c h i c k = 100 cock+hen+chick=100 cock+hen+chick=100

源代码

#include "stdio.h"
int main()
{

	int cock, hen, chick, count = 0;

	for (cock = 0; cock <= 20; cock++)
	{
		for (hen = 0; hen <= 34; hen++)
		{
			for (chick = 0; chick <= 100; chick++)
			{
				if (cock + hen + chick == 100 &&
					cock * 5 + hen * 3 + chick / 3.0 == 100)
				{
					count++;
					printf("cock = %-2d, hen = %-2d, chick = %-2d n", cock, hen, chick);
				}
			}
		}
	}
	printf("百钱买百鸡购买方案数:%dn", count);
}

运行结果
(五)打印水仙花数

所谓水仙花数,是指等于其各位数字立方和的三位数。

qquad 153 = 1 3 + 5 3 + 3 3 153=1^3+5^3+3^3 153=13+53+33
qquad 370 = 3 3 + 7 3 + 0 3 370=3^3+7^3+0^3 370=33+73+03
qquad 371 = 3 3 + 7 3 + 1 3 371=3^3+7^3+1^3 371=33+73+13
qquad 407 = 4 3 + 0 3 + 7 3 407=4^3+0^3+7^3 407=43+03+73

分析问题,首先水仙花数是三位数,那么我们可以确定范围:100~999,这个我们可以通过循环结构来搞定:

for (n = 100; n <= 999; n++) {
    ...
}

然后对于这个范围的每个数n,我们要去判断它是否等于其各位数字的立方和,这里的难点或关键在于如何分解一个三位数,得到它的每位数字。

假设我们已经把三位数n分解成百位数p3,十位数p2,个位数p1,
这样我们的筛选条件就可以写出来:n == p3 * p3 * p3 + p2 * p2 * p2 + p1 * p1 * p1。

如何拆分一个三位数n呢?

首先求n的个位数:n % 10
然后要将三位数变成两位数:n = n / 10;
对于新的两位数n,又求它的个位数:n % 10
然后要将两位数变成一位数:n = n / 10;

也就是说我们可以交替使用求余和整除运算将一个三位数拆分,得到它的个位数、十位数和百位数。当然这个分解方法可以推广到任何多位数的拆分。

源代码

#include 

int main()
{
	int n;
	int p3; // 百位数
	int p2; // 十位数
	int p1; // 个位数
	
	for (n = 100; n <= 999; n++) // 循环头:初始条件、循环条件、更新条件
	{
		p1 = n % 10;	  // 得到个位数
		p2 = n / 10 % 10; // 得到十位数
		p3 = n / 100;	  // 得到百位数
		if (n == p1 * p1 * p1 + p2 * p2 * p2 + p3 * p3 * p3) // if负责筛选工作
		{ 
			printf("%d = %d^3 + %d^3 + %d^3n", n, p3, p2, p1);
		}
	}

	return 0;
}

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767198.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号