题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....,即下个月是上两个月之和(从第三个月开始)。
-
- #include
-
- int main()
- {
- int f1=1,f2=1,i;
- for(i=1;i<=20;i++)
- {
- printf("%12d%12d",f1,f2);
- if(i%2==0) printf("\n");
- f1=f1+f2;
- f2=f1+f2;
- }
-
- return 0;
- }
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
- #include
-
- int main()
- {
- int i,j;
- int count=0;
-
- for (i=101; i<=200; i++)
- {
- for (j=2; j
- {
- // 如果j能被i整出在跳出循环
- if (i%j==0)
- break;
- }
- // 判断循环是否提前跳出,如果j
- if (j>=i)
- {
- count++;
- printf("%d ",i);
- // 换行,用count计数,每五个数换行
- if (count % 5 == 0)
- printf("\n");
- }
- }
- return 0;
- }
13.打印出所有的"水仙花数"
题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
- #include
-
- int main()
- {
- int i,x,y,z;
- for(i=100;i<1000;i++)
- {
- x=i%10;
- y=i/10%10;
- z=i/100%10;
-
- if(i==(x*x*x+y*y*y+z*z*z))
- printf("%d\n",i);
-
- }
- return 0;
- }
14.将一个正整数分解质因数
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于(小于的时候,继续执行循环)n,则说明分解质因数的过程已经结束,另外 打印出即可。
(2)但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n.重复执行第二步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
- #include
- int main()
- {
- int n,i;
- printf("请输入整数:");
- scanf("%d",&n);
- printf("%d=",n);
- for(i=2;i<=n;i++)
- {
- while(n%i==0)
- {
- printf("%d",i);
- n/=i;
- if(n!=1) printf("*");
- }
- }
-
- printf("\n");
- return 0;
- }
15.利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示
程序分析:(a>b)?a:b这是条件运算符的基本例子。
- #include
- int main()
- {
- int score;
- char grade;
- printf("请输入分数: ");
- scanf("%d",&score);
- grade=(score>=90)?'A':((score>=60)?'B':'C');
- printf("%c\n",grade);
- return 0;
- }