宁波网站建设高端,想注册一个公司怎么注册,做网站的设计文档怎么做,seo怎么优化排名前言#xff1a;感谢您的关注哦#xff0c;我会持续更新编程相关知识#xff0c;愿您在这里有所收获。如果有任何问题#xff0c;欢迎沟通交流#xff01;期待与您在学习编程的道路上共同进步。 今天#xff0c;我们主要分享三个问题如何用C语言去求解#xff0c;1.斐波…前言感谢您的关注哦我会持续更新编程相关知识愿您在这里有所收获。如果有任何问题欢迎沟通交流期待与您在学习编程的道路上共同进步。 今天我们主要分享三个问题如何用C语言去求解1.斐波那契数列问题2.素数列举问题3.人数分配问题。 一. 斐波那契数列问题 1问题叙述斐波那契数列问题。输人正整数 n(1n46)输出斐波那契(Fibonacci)数列的前n项:11235813,·····每行输出 5个。Fibonacci 数列就是满足任一项数字是前两项的和(最开始两项均定义为 1)的数列。
2问题分析计算斐波那契数列时从第 3 项开始每一项的值就是前 2项的和。用两个变量存储最近产生的两个序列值计算出新一项数据后需要更新这两个变量的值。假定最开始两项分别用x11和x21表示则新项xx1x2然后更新x1和x2:x1x2及x2x为计算下一个新项x作准备。题目要求输出n项循环次数确定可采用 for 语句。
3方法总结迭代法也称辗转法是一个不断从变量的旧值递推新值的过程跟迭代法相对应的是直接法(或者称为一次解法)即一次性解决问题。迭代法是用计算机解决问题的一种基本方法它利用计算机运算速度快、适合做重复性操作的特点让计算机对一组指令(或一定步骤)进行重复执行在每次执行这组指令(或这些步骤)时都从变量的原值推出新值。
4源程序
#include stdio.h
int main()
{int i, n, x, x1, x2; //x1和x2依次代表前两项x表示其后一项 printf(Enter n:); //提示输入所需输出项的个数 scanf(%d, n);if (n1||n46){printf(Invalid.\n);}else if (n1){printf(%10d, 1); //n为1时输出1 }else{x11;x21;printf(%10d%10d, x1, x2); //先输出前两项 for (i3; in; i) //循环输出n-2项 {xx1x2; //计算新的一项 printf(%10d, x);if (i%50){printf(\n); //项数为5的倍数就换行 }//重新定义前两项 x1x2; x2x;}}return 0;} 二. 素数问题 1问题叙述素数问题。输人2个正整数 m和n(1mn500)输出m到n之间的全部素数每行输出 10个。素数就是只能被 1 和自身整除的正整数1 不是素数2 是素数。
2问题分析可参照之前发的博客如何判断素数。
3源程序
#include stdio.h
#include math.h
int main()
{int count, i, k, flag, limit, m, n; //flag表示是否为素数 printf(Enter m n:);scanf(%d %d, m, n);count0; //count记录素数的个数 if (m1||n500||mn){printf(Invalid.\n);}else {for (km; kn; k){if (k1){flag0;}else if (k2){flag1;}else{flag1;limitsqrt(k)1;for (i2; ilimit; i){if (k%i0){flag0;break;}}}if (flag1){printf(%6d, k);count;if (count%100) //count为10的倍数就换行 {printf(\n);}}}}return 0;
} 三. 搬砖问题 1问题叙述搬砖问题。某工地需要搬运砖块已知男人一人搬 3 块女人一人搬 2块小孩两人搬1块。如果想用n人正好搬n块砖问有哪些搬法。
2问题分析用枚举的思路枚举对象是男人、女人和小孩的人数将其分别设为变量 men、women和 children以总人数 menwomenchildren n 和搬砖总数 men *3women *2children/2n为判定条件变量的取值范围都是[0n]。3 个变量在各自的取值范围内遍历采用三重循环嵌套找出所有满足条件的解。
3源程序
#include stdio.h
int main()
{int children, cnt, men, n, women;printf(Enter n:);scanf(%d, n);cnt0;for (men0; menn; men){for (women0; womenn; women){for (children0; childrenn; children){if((menwomenchildrenn)(men*3women*2children*0.5n)){printf(men%d, women%d, children%d\n, men, women, children);cnt;}}}}if (cnt0){printf(None!\n);}return 0;} 感谢老铁的浏览希望老铁可以一键三连加个关注您的支持和鼓励是我前进的动力后续会分享更多学习编程的内容。