C语言:循环控制结构习题
1水仙花数是指各个位数的立方和等于本身的三位数。例如:153是水仙花数,因为153=1的立方+5的立方+3的立方。 编程计算并输出所有的水仙花数。
第一种做法
思路:
1三位数:百位,十位和个位,除了百位是1-9,其他的范围是0-9;
2三位数是百位*100+百位*10+个位,拿这个结果与各个位数的立方和做比较
#include <stdio.h>
int main()
{
int x,y,z; //百位x,十位y,个位z
for(x=1;x<=9;x++) //遍历百位的每个数
{
for(y=0;y<=9;y++) //遍历十位
{
for(z=0;z<=9;z++) //遍历个位
{
if(100*x+10*y+z==x*x*x+y*y*y+z*z*z) //做比较,判断水仙花数
{
printf("%d\n",100*x+10*y+z);
}
}
}
}
}
第二种做法
#include <stdio.h>
int main()
{
int x,y,z,num; //百位x,十位y,个位z,水仙花数num
for(num=100;num<=999;num++)
{
x=num/100; //分出百位
y=(num-100*x)/10; //分出十位
z=num%10; //分出个位
if(100*x+10*y+z==x*x*x+y*y*y+z*z*z)
{
printf("%d\n",num);
}
}
}
2已知不等式:1!+2!+...+m!< n,请编程对用户指定的n值计算并输出满足该不等式的m的整数解。
#include<stdio.h>
int main()
{
int m,n;
long term=1,sum=0; //数字大,用长整形
printf("please enter n:");
scanf("%d",&n);
for(m=1;;m++)
{
term=m*term; //每个单项
sum=sum+term; //阶乘的总和
if(sum<n)
{
printf("1!+2!+...+%d!<%d\n",m,n);
}
else
{
break;
}
}
}
3 卡车违反了交通规则。现场有3人目击该时间,但都没有记住车牌号。只提供以下信息:
1车牌的前两位数字相同;2车牌后两位数字相同; 3、4位数车牌正好是一个整数的平方
请帮助警方确定车牌。
#include<stdio.h>
int main()
{
int a,b; //分别表示车牌的12,34位
int num,y;
for (a=0;a<=9;a++)
{
for(b=0;b<=9;b++)
{
if(a!=b)
{
y=1000*a+100*a+10*b+b;
for (num=30;num<100;num++) //for里面必须给num规定范围,为空出不来结果
{
if(y== num*num)
printf("车牌号=%d\n",y);
}
}
}
}
}