二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 今日快报 » 正文

C语言经典100例_11_15

放大字体  缩小字体 发布日期:2022-06-29 17:54:28    作者:郭辰宇    浏览次数:232
导读

题目11题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月得兔子总数为多少?程序分析:兔子得规律为数列1,1,2,3,5,8,13,21....#includecstdiolong long f1,f2,f;int main(){f1 = f2 = 1;printf("1 1");for(int i = 1;i = 20;i+

题目11

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月得兔子总数为多少?

程序分析:兔子得规律为数列1,1,2,3,5,8,13,21....

#include<cstdio>long long f1,f2,f;int main(){ f1 = f2 = 1; printf("1 1"); for(int i = 1;i <= 20;i++) { f = f1 + f2; f1 = f2; f2 = f; printf(" %d",f); } // 斐波那契数列,f_(i+1) = f_(i) + f_(i-1) // 可以试试什么时候会超范围 }题目12

题目:判断101-200之间有多少个素数,并输出所有素数。

程序分析:判断素数得方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

#include<cstdio>bool is_prime(int x){ for(int i = 2;i * i <= x;i++) if(x % i == 0) return false; return true;}int main(){ for(int i = 101;i <= 200;i++) if(is_prime(i)) printf("%d\n",i); // 感兴趣得同学可以去查查线性筛素数。 // 这里算法复杂度大概为O(n^{3/2}) // 好久不算了忘记怎么算复杂度了。。。 }题目13

题目:打印出所有得“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1得三次方+5得三次方+3得三次方。

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

(1)如果这个质数恰等于n,则说明分解质因数得过程已经结束,打印出来即可。
(2)如果n<>k,但n能被k整除,则应打印出k得值,并用n除以k得商,作为新得正整数n,重复执行第壹步。

(3)如果n不能被k整除,则用k+1作为k得值,重复执行第壹步。

#include<cstdio>int main(){ for(int a,b,c,i = 100;i < 1000;i++) { //可以猜猜abc分别代表个位十位百位千位 a = i / 100; b = (i / 10) % 10; c = i % 10; //虽然运算符等级有限定,但是加括号是个好习惯 if((a*a*a + b*b*b + c*c*c) == (a*100 + b*10 + c)) printf("%-5d",i);//还记不记得-5d代表什么 }}题目14

题目:将一个正整数分解为质因数。例如:输入90,打印出90=233*5。

程序分析:对n进行分解质因数,应先找到一个最小得质数k,然后按下述步骤完成:

#include<cstdio>//可以先了解一下唯一分解定理 //写这个程序前建议先判断一下是不是素数。(或许没用int x; int main(){ scanf("%d",&x); for(int i = 2;i <= x;i++) { while(x != i) { if(x % i) break; printf("%d*",i); x /= i; } } printf("%d", x);//想想为什么要最后输出一个这个 }题目15

题目:利用条件运算符得嵌套来完成此题:学习成绩>=90分得同学用A表示,60-89分之间得用B表示,60分以下得用C表示。

程序分析:(a>b)?a:b这是条件运算符得基本例子

#include<cstdio>int score;char grade;// (a > b) ? 1:2 如果a>b成立我们得到得值为1,否则得到2 int main(){ scanf("%d",&score); //按照运算符运算顺序来看无所谓,个人偏向加括号。 grade = (score >= 90) ? 'A' : ((score >= 60) ? 'B' : 'C'); printf("your grade is %c",grade);}

 
(文/郭辰宇)
免责声明
• 
本文仅代表发布者:郭辰宇个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈