2-1
#include <stdio.h>
int main()
{
int n,count=0;
scanf("%d",&n);
while(n>0)
{
count++;
n/=10;
}
printf("%d\n",count);
return 0;
}
2-2
#include <stdio.h>
int main()
{
int i,ge,shi,bai;
for(i=100;i<1000;i++)
{
ge=i%10;
shi=i/10%10;
bai=i/100;
if(i==ge*ge*ge+shi*shi*shi+bai*bai*bai)
printf("%d\n",i);
}
return 0;
}
2-3
#include <stdio.h>
int main()
{
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)
{
printf("%d\n",i);
return 0;
}
}
printf("No Answer");
return 0;
}
2-4
#include <stdio.h>
int main()
{
int n,i,j,k;
scanf("%d",&n);
for(i=n;i>0;i--)
{
for(k=0;k<5-i;k++)
printf(" ");
for(j=0;j<2*i-1;j++)
printf("#");
printf("\n");
}
return 0;
}
2-6
#include <stdio.h>
int main()
{
int n,i;
float hn;
scanf("%d",&n);
for(i=1;i<=n;i++)
hn+=1.0/i;
printf("%.3f\n",hn);
return 0;
}
2-7
#include <stdio.h>
int main()
{
int i,t=1;
float sum=0;
for(i=1;;i+=2)
{
if(1.0/i<0.0000001)
break;
sum+=(1.0/i*t);
t*=-1;
}
printf("%.9f\n",sum);
return 0;
}
2-8
#include <stdio.h>
int main()
{
int i,m,n,temp;
scanf("%d%d",&m,&n);
float sum=0;
if(m<n)
{
temp=n;
n=m;
m=temp;
}
for(i=n;i<=m;i++)
sum+=(1.0/i/i);
printf("%.5f\n",sum);
return 0;
}
2-9
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.*f\n",c,a*1.0/b);
return 0;
}
解析:
printf的特殊用法:
对于m.n的格式还可以用如下方法表示
char ch[20];
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。我想这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
2-10
#include <stdio.h>
void sort(int a[])
{
int i,j,temp;
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
int abc,def,ghi,flag,i;
int a[9];
for(abc=123;abc<334;abc++)
{
flag=1;
def=2*abc;
ghi=3*abc;
a[0]=abc/100;a[1]=abc/10%10;a[2]=abc%10;
a[3]=def/100;a[4]=def/10%10;a[5]=def%10;
a[6]=ghi/100;a[7]=ghi/10%10;a[8]=ghi%10;
sort(a);//升序排列
for(i=0;i<9;i++) //判断排序后数组a是否是1-9
{
if(a[i]!=i+1)
{
flag=0;
break;
}
}
if(flag)
printf("abc=%d,def=%d,ghi=%d\n",abc,def,ghi);
}
return 0;
}