题目11:
古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
思路:
- 首先根据题目,可以找出兔子生崽的规律是第三个月的兔子总数是前两个月的兔子总数之和。
- 然后确定第一个月和第二个月的兔子总数,设定变量sum,在每次循环开始时需要清零。
- 设变量i,j,令sum=i+j就满足了第三个月的兔子总数等于前两个月兔子总数之和。
- 但是i和j是在变化的,通过规律和循环利用变量赋值即可。
代码:
#include"stdio.h"
int main()
{
int i=1,j=0,sum,n;
printf("第1个月的兔子总数为%d\n",i);
for(n=2;n<=40;n++)
{
sum=0;
sum=i+j;
j=i;
i=sum;
printf("第%d个月的兔子总数为%d\n",n,sum);
}
return 0;
}
结果:
题目12:
判断 101 到 200 之间的素数。
思路:
- 首先明晰素数的概念,素数的因数只有1和它本身。
- 通过循环判断因数是否为1和本身。
- 最后输出101到200之间的素数即可。
代码:
#include"stdio.h"
int main()
{
int i,j;
for(i=101;i<=200;i++)
{
for(j=2;j<=i;j++)
{
if(i%j==0)
break;
}
if(i==j)
printf("%d\t",i);
}
return 0;
}
结果:
题目13:
打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
思路:
- 根据固定公式来判断就行。
- 数abc=a2+b2+c2
代码:
#include"stdio.h"
int main()
{
int a,g,s,b;
for(a=100;a<1000;a++)
{
g=a%10;
s=(a/10)%10;
b=a/100;
if(a==g*g*g+b*b*b+s*s*s)
printf("%d\t",a);
}
return 0;
}
结果:
题目14:
将一个正整数分解质因数。
思路:
- 首先找出这个正整数的因数。
- 然后判断这个因数是不是质数。
- 最后后退格符把多出来的*号删除。
- 退格符后面有空格。
代码:
#include"stdio.h"
int main()
{
int n,i,j,num=0,k=0;
scanf("%d",&n);
int a[n];
printf("%d=",n);
for(i=2;i<=n;i++)
{
if(n%i==0)
{
for(j=2;j<=i;j++)
{
if(i%j==0)
break;
}
if(i==j)
{
printf("%d*",i);
num++;
}
}
}
printf("\b ");
return 0;
}
结果:
题目15:
利用条件运算符的嵌套来完成此题:
学习成绩>=90分的同学用A表示,
60-89分之间的用B表示,
60分以下的用C表示。
思路:
- 首先明晰条件运算符(a>b)?a:b
- 根据题目条件来输出等级即可。
代码:
#include"stdio.h"
int main()
{
float grade;
scanf("%f",&grade);
printf("%c",(grade>=90)?'A':(grade>=60)?'B':'C');
return 0;
}