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赋值,从而控制输出格式。
#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; }