//2-1 题目:输入一个不超过10^9的正整数,输出它的位数。
//例如12735的位数是5。请不要使用任何数学函数,只用四则运算和
总结:
//例如12735的位数是5。请不要使用任何数学函数,只用四则运算和
//循环语句实现
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int n,k=0;
scanf("%d",&n);
while(n)
{
n/=10;
k++;
}
printf("位数为%d\n",k);
}
//2-2 输出100 ~ 999中的所有水仙花数
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int a,b,c,sum;
for(a=1;a<=9;a++)
{
for(b=0;b<=9;b++)
{
for(c=0;c<=9;c++)
{
sum=a*100+b*10+c;
if(a*a*a+b*b*b+c*c*c==sum)
{
printf("%d是水仙花数\n",sum);
}
}
}
}
}
//2-3 韩信点兵(hanxin)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int a,b,c,i;
scanf("%d%d%d",&a,&b,&c);
for(i=10;i<=100;i++)
{
if(i%3==a&&i%5==b&&i%7==c)
{
break;
}
}
if(i<=100)
{
printf("%d\n",i);
}
else
{
printf("No answer\n");
}
}
//2-6
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int n,i;
double result=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
result+=1.0/i;
}
printf("%.3lf\n",result);
}
//2-7
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int n,i;
double result=0;
int f=1;
for(i=1;;i=i+2)
{
if(fabs(1.0/i)<1e-6)
{
break;
}
result+=(1.0/i)*f;
f=-f;
}
printf("%.3lf\n",result);
}
//2-8
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int n,m;
int i;
double result=0;
scanf("%d%d",&n,&m);
for(i=n;i<=m;i++)
{
result+=(1.0/i)*(1.0/i);
}
printf("%.5f\n",result);
}
//2-9
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int a,b,c,i;
<span style="white-space:pre"> </span> double result=0;
<span style="white-space:pre"> </span> scanf("%d%d%d",&a,&b,&c);
<span style="white-space:pre"> </span> result=a*(1.0/b);
<span style="white-space:pre"> </span> printf("%.*f\n",c,result);
}
//2-10用1,2,3……9组成3个三位数abc,def和ghi,
//每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。输出所有解。
//参考网友的做法,换个角度思考问题
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
int p[10]={0};
int i,n,m;
for(i=100;i<333;i++)
{
n=i*2;
m=i*3;
p[i/100]=1;
p[i/10%10]=1;
p[i%10]=1;
p[n/100]=1;
p[n/10%10]=1;
p[n%10]=1;
p[m/100]=1;
p[m/10%10]=1;
p[m%10]=1;
int k,s=0;
for(k=1;k<=9;k++)
{
if(p[k]==0)
{
break;
}
}
if(k>9)
{
printf("该解为%d:%d:%d\n",i,n,m);
}
for(k=1;k<=9;k++)
{
p[k]=0;
}
}
}
总结:
计时函数的用法
printf("timeused =%.2lf\n",(double)clock()/CLOCKS_PER_SEC);
编程过程中要注意乘法溢出问题!!!