收藏 分销(赏)

算法竞赛入门经典第二版习题答案.docx

上传人:二*** 文档编号:4612040 上传时间:2024-10-07 格式:DOCX 页数:15 大小:14.76KB 下载积分:5 金币
下载 相关 举报
算法竞赛入门经典第二版习题答案.docx_第1页
第1页 / 共15页
本文档共15页,全文阅读请下载到手机保存,查看更方便
资源描述
求int的上限与下限 #include <stdio.h> //运行时间长,请等待. int main() { int min ,max; FILE *fin,*fout; fin=fopen("min of int.out","wb"); fout=fopen("max of int.out","wb"); for(min=-1;min<0;) { min-- ; } fprintf(fin,"%d\n",min+1); for(max=1;max>0;) { max++ ; } fprintf(fout,"%d\n",max-1); fclose(fin); fclose(fout); return 0; } 1-1 #include <stdio.h> int main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); double average; average=(a+b+c)/3.0; //一定要将int型转为浮点型 printf("Average=%.3lf",average ); system("pause"); return 0; } 1-2 #include <stdio.h> int main() { double f,c; printf("请输入华氏温度f\n"); scanf("%lf",&f); c=(f-32)*5/9 ; printf("摄氏温度c=%.3lf\n",c); system("pause"); return 0; } 1-3 #include <stdio.h> int main() { int n; scanf("%d",&n); printf("%d\n",(1+n)*n/2) ; system("pause"); return 0; } 1-4 #include <stdio.h> #include <math.h> int main() { const double pi =4.0*atan(1.0); int n; scanf("%d",&n); while(n>=360) { printf("请输入小于360°的角\n"); scanf("%d",&n); } printf("正弦:%lf\n余弦:%lf",sin(n*pi/180),cos(n*pi/180)); system("pause"); return 0; } 1-5 #include <stdio.h> #include <math.h> int main() { double x1,y1,x2,y2; printf("请输入点A的坐标\n"); scanf("%lf%lf",&x1,&y1); printf("请输入点B的坐标\n"); scanf("%lf%lf",&x2,&y2); double d; d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf("%.3lf\n",d); system("pause"); return 0; } 1-6 #include <stdio.h> int main() { int a; scanf("%d",&a); if(a%2==0)printf("该数是偶数"); else printf("该数非偶数"); system("pause"); return 0; } 1-7 #include <stdio.h> int main() { const int a=95; int n; printf("你要买多少件衣服\n"); scanf("%d",&n); if(a*n>=300)printf("需要%.2lf元\n",a*n*0.85); else printf("需要%.2lf元\n",(double)a*n); //由于输出是小数%.2lf,故一定要将int型转化为浮点型 system("pause"); return 0; } 1-8 #include <stdio.h> #include <stdio.h> int main() { double a; scanf("%lf",&a); if(a>0)printf("%.2lf",a); else printf("%.2lf",-a); system("pause"); return 0; } 1-9(方法一) #include <stdio.h> int main() { int a,b,c,max,min,middle; scanf("%d%d%d",&a,&b,&c); while(a<0||b<0||c<0) { printf("三边必须都是大于零的正整数"); scanf("%d%d%d",&a,&b,&c); } min=a;if(a>b)min=b;if(a>c)min=c; max=a;if(a<b)max=b;if(a<c)max=c; middle=a+b+c-min-max; if(min+middle>max)printf("yes"); else printf("no"); system("pause"); return 0; } 1-9(方法二) #include <stdio.h> int main() { int a,b,c,t=0; scanf("%d%d%d",&a,&b,&c); while(a<0||b<0||c<0) { printf("三边必须都是大于零的正整数"); scanf("%d%d%d",&a,&b,&c); } if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;} if(a+b>c)printf("yes"); else printf("no"); system("pause"); return 0; } 1-10 #include <stdio.h> int main() { int n; scanf("%d",&n); if(n%4==0) { if(n%100==0) { if(n%400==0) { printf("yes"); } else printf("no"); } else printf("yes"); } else printf("no"); system("pause"); return 0; } 3n+1解决篇1 #include <stdio.h> int main() { int count=0;double i,m; scanf("%lf",&i); for(;i>1;) { m=i/2; if(floor(m+0.5)!=m){i=3*i+1;i/=2;count+=2;}//floor(x)取x的整数部分. else {i/=2;count++;} } printf("%d\n",count); system("pause"); return 0; } 3n+1解决篇2 #include<stdio.h> int main(){ long long n, count = 0;//long long 的取值范围:-2^63~2^63-1 scanf("%I64d", &n); while(n > 1) { if(n % 2 == 1) n = n*3+1; else n /= 2; count++; } printf("%I64d\n", count); return 0; } 数据统计解决篇 #include <stdio.h> int main() { int x,n=0,s=0,min,max; while(scanf("%d",&x)==1) { if(n==0){min=max=x;}//读取第一个数的时候将第一个数赋值给min和max s+=x; if(x<min)min=x; if(x>max)max=x; n++; } printf("%d %d %.3lf\n",min,max,(double)s/n); system("pause"); return 0; } 2-1(fin) #include <stdio.h> int main() { FILE *fin,*fout; fin=fopen("digit.in","rb"); fout=fopen("digit.out","wb"); /*fin=stdin; fout=stdout;*/ int a,i=0; fscanf(fin,"%d",&a); while(1) { a/=10; i++; if(a<1)break; } fprintf(fout,"%d\r\n",i); fclose(fin); fclose(fout); //system("pause"); return 0; } 2-1(freopen) #include <stdio.h> //#define LOCAL//在编译选项中定义LOCAL int main() { #ifdef LOCAL freopen("digit.in","r",stdin); freopen("digit.out","w",stdout); #endif int a,i=0; scanf("%d",&a); while(1) { a/=10; i++; if(a<1)break; } printf("%d\n",i); return 0; } 2-2(freopen) #include <stdio.h> //#define LOCAL//编译选项中定义 int main() { #ifdef LOCAL freopen("daffodil.out","w",stdout); #endif int a,b,c,m; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for (c=0;c<=9;c++) { m=a*100+b*10+c; if(m==a*a*a+b*b*b+c*c*c)printf("%d\n",m); } } } //system("pause"); return 0; } 2-2(fin) #include <stdio.h> int main() { FILE *fout; fout=fopen("daffodil.out","wb"); int a,b,c,m; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=0;c<=9;c++) { m=a*a*a+b*b*b+c*c*c; if(m==a*100+b*10+c) fprintf(fout,"%d\r\n",m); } } } fclose(fout); return 0; } 2-3(fin) #include<stdio.h> int main() { FILE *fin,*fout; fin=fopen("hanxin.in","rb"); fout=fopen("hanxin.out","wb"); //fin=stdin; //fout=stdout; int a,b,c,x,temp=0;//temp用来判断是否在10到100内存在这样的数 fscanf(fin,"%d%d%d",&a,&b,&c); for(x=10;x<=100;x++) { if(x%3==a&&x%5==b&&x%7==c) { fprintf(fout,"%d\r\n",x); temp=1; break; } } if(!temp)fprintf(fout,"No answer\r\n"); fclose(fin); fclose(fout); return 0; } 2-3(freopen) #include<stdio.h> int main() { //会在编译选项中定义LOCAL #ifdef LOCAL freopen("hanxin.in","r",stdin); freopen("hanxin.out","w",stdout); #endif int a,b,c,x,temp=0; scanf("%d%d%d",&a,&b,&c); for(x=10;x<=100;x++) { if(x%3==a&&x%5==b&&x%7==c) { printf("%d\n",x); temp=1; break; } } if(!temp)printf("No answer\n"); return 0; } 2-4(fin) #include<stdio.h> int main() { FILE *fin,*fout; fin=fopen("triangle.in","rb"); fout=fopen("triangle.out","wb"); //fin=stdin; //fout=stdout; int n,i,j,k; fscanf(fin,"%d\r\n",&n); for(i=1;i<=n;i++) { for(j=1;j<i;j++)fprintf(fout," "); for(k=-2*i+2*n+1;k>=1;k--)fprintf(fout,"*"); fprintf(fout,"\r\n"); } fclose(fin); fclose(fout); return 0; } 2-4(freopen) #include<stdio.h> int main() { //在编译选项内定义LOCAL #ifdef LOCAL freopen("triangle.in","r",stdin); freopen("triangle.out","w",stdout); #endif int n,i,j,k; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<i;j++)printf(" "); for(k=2*n+1-2*i;k>=1;k--)printf("*"); printf("\n"); } return 0; } 2-5(fin) #include<stdio.h> int main() { FILE *fin,*fout; fin=fopen("stat.in","rb"); int n,a,i,m,count=0; fscanf(fin,"%d",&n); for(i=1;i<=n+1;i++) { fscanf(fin,"%d",&a); if(i==n+1)m=a; } fclose(fin); fin=fopen("stat.in","rb"); for(i=0;i<=n;i++) { fscanf(fin,"%d",&a); if(i!=0) { if(a<m) count++; } } fclose(fin); fout=fopen("stat.out","wb"); fprintf(fout,"%d\r\n",count); fclose(fout); return 0; } 2-5(freopen) #include<stdio.h> int main() { freopen("stat.in","r",stdin); freopen("stat.out","w",stdout); int n,a,i,m,count=0; scanf("%d",&n); for(i=1;i<=n+1;i++) { scanf("%d",&a); if(i==n+1)m=a; } freopen("stat.in","r",stdin); for(i=0;i<=n;i++) { scanf("%d",&a); if(i!=0) { if(a<m) count++; } } printf("%d\n",count); return 0; } 2-6(fin) #include<stdio.h> int main() { FILE *fin,*fout; fin=fopen("harmony.in","rb"); int n,i; double H=0; fscanf(fin,"%d",&n); for(i=1;i<=n;i++) { H+=(double)1/i; } fclose(fin); fout=fopen("harmony.out","wb"); fprintf(fout,"%.3lf\r\n",H); fclose(fout); return 0; } 2-6(freopen) #include<stdio.h> int main() { #ifdef LOCAL freopen("harmony.in","r",stdin); freopen("harmony.out","w",stdout); #endif int n,i; double H=0; scanf("%d",&n); for(i=1;i<=n;i++) { H=H+double/i; } printf("%.3lf",H); return 0; } 2-7(fin) #include<stdio.h> int main() { FILE *fout; int i; double H=0; for(i=1;2*i-1<1000000;i++) { if(i%2==1)H+=(double)1/(2*i-1); else H-=(double)1/(2*i-1); } fout=fopen("approximation.out","wb"); fprintf(fout,"%lf\r\n",H); return 0; } 2-7(freopen) #include<stdio.h> int main() { #ifdef LOCAL freopen("approximation.in","r",stdin); freopen("approximation.out","w",stdout); #endif int i; double H=0; for(i=1;2*i-1<1000000;i++) { if(i%2==1)H+=(double)1/(2*i-1); else H-=(double)1/(2*i-1); } printf("%lf",H); return 0; } 2-8(fin,double) #include<stdio.h> #include<time.h> int main() { FILE *fin,*fout; fin=fopen("subsequence.in","rb"); fout=fopen("subsequence.out","wb"); int n,m,i; double H=0; double ii; fscanf(fin,"%d%d",&n,&m); for(i=n;i<=m;i++) { ii=(double)i*i; H+=1/ii; } fprintf(fout,"%.5lf\r\n",H); fprintf(fout,"%.2lf\r\n",(double)clock()/CLOCKS_PER_SEC);//比较double和long long运行效率 fclose(fin); fclose(fout); return 0; } 2-8(fin,long long) #include<stdio.h> #include<time.h> int main() { FILE *fin,*fout; fin=fopen("subsequence.in","rb"); fout=fopen("subsequence.out","wb"); int n,m,i; double H=0; fscanf(fin,"%d%d",&n,&m); for(i=n;i<=m;i++) { long long ii=1;//定义 ii=ii*i*i; //不用ii=i*i也不是ii*=i*i,这样做是为了防止i*i溢出; 可以认为这一步将int型转化为long long 型 H+=1/(double)ii;//不是(double)1/ii } fprintf(fout,"%.5lf\r\n",H); fprintf(fout,"%.2lf\r\n",(double)clock()/CLOCKS_PER_SEC); ////比较double和long long运行效率 fclose(fin); fclose(fout); return 0; } 2-8(freopen) #include<stdio.h> #define LOCAL int main() { #ifdef LOCAL freopen("subsequence.in","r",stdin); freopen("subsequence.out","w",stdout); #endif int n,m,i; double H=0,ii; scanf("%d%d",&n,&m); for(i=n;i<=m;i++) { H+=1/((double)i*i); } printf("%.5lf\n",H); return 0; } 2-9(fin) #include<stdio.h> int main() { FILE *fin,*fout; fin=fopen("decimal.in","rb"); fout=fopen("decimal.out","wb"); int a,b,c; fscanf(fin,"%d%d%d",&a,&b,&c); fprintf(fout,"%.*lf\r\n",c,(double)a/b); fclose(fin); fclose(fout); return 0; } 2-9(freopen) #include<stdio.h> int main() { #ifdef LOCAL freopen("decimal.in","r",stdin); freopen("decimal.out","w",stdout); #endif int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%.*lf",c,(double)a/b); return 0; } 2-10(全书看完再看这段代码) #include<cstdio> #include<algorithm> using namespace std; int main() { freopen("permutation.ans","w",stdout); int d[]={1,2,3,4,5,6,7,8,9}; do { int a=d[0]*100+d[1]*10+d[2]; int b=d[3]*100+d[4]*10+d[5]; int c=d[6]*100+d[7]*10+d[8]; if(c==3*a&&b==2*a)printf("%d %d %d\n",a,b,c); }while(next_permutation(d,d+9)); return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服