小粉书第2章
Posted meng2ya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小粉书第2章相关的知识,希望对你有一定的参考价值。
例题 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 ",sum); 13 14 }
例题 2-1 水仙花数
#include<stdio.h> int main() { 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 ",cnt++,i); 9 flag=0; 10 break; 11 } 12 if(flag) 13 printf("Case %d: No answer ",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(" "); 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 ",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 ",x+1); 17 else 18 printf("%d ",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 ",r1,r2,r3); 14 } 15 return 0; 16 }
思考题 题目2
1 #include<stdio.h> 2 int main() { 3 double i=0; 4 printf("%.1f ",i+0.1); 5 for(i=0; i!=10; i+=0.1) 6 printf("%.lf ",i); 7 return 0; 8 }
程序会一直跑下去,没有搞明白,看了一篇帖子,说是和double的精度有关,留坑待填。
顺便吐槽一下,一遍腰疼一遍写代码,女性是多么需要关爱的群体。
以上是关于小粉书第2章的主要内容,如果未能解决你的问题,请参考以下文章