小粉書第2章
阿新 • • 發佈:2018-06-10
韓信點兵 swe 例題 倒三角 h+ color tdi %d clas
例題 2-3 近似計算
1 #include<stdio.h> 2 int main() 3 { 4 int t=1,n=1; 5 double term,sum=0; 6 do{ 7 term = 1.0/n; 8 sum += term*t; 9 n += 2; 10 t = -t; 11 }while(term > 1e-6); 12 printf("%.6f\n",sum); 13 14 }
例題 2-1 水仙花數
#include<stdio.h> intmain() { for(int i=100; i<=999; ++i){ int a = i/100, b = i/10%10, c = i%10; if(i == a*a*a + b*b*b + c*c*c) printf("%d ",i); } return 0; }
例題 2-2 韓信點兵
1 #include<stdio.h> 2 int main() 3 { 4 int a,b,c,cnt=1,flag=1; 5 while(scanf("%d%d%d",&a,&b,&c)!=EOF){6 for(int i=10; i<=100; ++i) 7 if(i%3==a && i%5==b && i%7==c){ 8 printf("Case %d:%d\n",cnt++,i); 9 flag=0; 10 break; 11 } 12 if(flag) 13 printf("Case %d: No answer\n",cnt++); 14 flag = !flag;15 } 16 return 0; 17 }
例題 2-3 倒三角形
1 #include<stdio.h> 2 int main() 3 { 4 int n,t; 5 scanf("%d",&n); 6 t=n; // 將n的值復制給t 7 for(int i=0; i<n; ++i){ // 找到圖形每行空格和層數之間的關系 8 for(int j=0; j<i; ++j) 9 printf(" "); 10 for(int j=0; j<2*t-1; ++j) 11 printf("#"); 12 printf("\n"); 13 t--; 14 } 15 return 0; 16 }
例題 2-4 子序列的和
1 #include<stdio.h> 2 int main() 3 { 4 long long n,m; 5 double sum=0; 6 while(scanf("%lld%lld",&n,&m)!=EOF){ 7 if(n==0 || m==0) 8 break; 9 for(long long i=n; i<=m; ++i){ 10 double x = 1.0 / (i * i); 11 sum += x; 12 } 13 printf("%.5f\n",sum); 14 sum = 0; // 註意歸零 15 } 16 return 0; 17 }
例題 2-5 分數化小數
1 #include<stdio.h> 2 int main() 3 { 4 int a,b,c,x,cnt=1; 5 while(scanf("%d%d%d",&a,&b,&c)!=EOF){ 6 if(a==0 && b==0 && c==0) 7 break; 8 printf("Case %d: %d.",cnt++,a/b); // 打印整數部分 9 10 for(int i=1; i<c; ++i){ // 打印小數部分 11 x = a % b * 10 / b; 12 printf("%d",x); 13 a = a % b * 10 % b; 14 } 15 if(a % b * 10 / b >= 5) // 最後一位四舍五入 16 printf("%d\n",x+1); 17 else 18 printf("%d\n",x); 19 } 20 return 0; 21 }
例題 2-6 排列
1 #include<stdio.h> 2 int main() 3 { 4 int r1,r2,r3; 5 for(int i=123; i<=329; ++i){ // 987/3 = 329 6 r1 = i; 7 r2 = 2 * i; 8 r3 = 3 * i; 9 int a = r1 % 10, b = r1 / 10 % 10, c = r1 / 100; 10 int d = r2 % 10, e = r2 / 10 % 10, f = r2 / 100; 11 int g = r3 % 10, h = r3 / 10 % 10, m = r3 / 100; 12 if(a+b+c+d+e+f+g+h+m == 45 && a*b*c*d*e*f*g*h*m == 362880) 13 printf("%d %d %d\n",r1,r2,r3); 14 } 15 return 0; 16 }
思考題 題目2
1 #include<stdio.h> 2 int main() { 3 double i=0; 4 printf("%.1f\n",i+0.1); 5 for(i=0; i!=10; i+=0.1) 6 printf("%.lf\n",i); 7 return 0; 8 }
程序會一直跑下去,沒有搞明白,看了一篇帖子,說是和double的精度有關,留坑待填。
順便吐槽一下,一遍腰疼一遍寫代碼,女性是多麽需要關愛的群體。
小粉書第2章