谁有刘汝佳算法竞赛入门经典这本书的习题答案 谁有刘汝佳算法竞赛入门经典这本书的习题答案 给我参考下 多谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 [Url=http://download.csdn.net/source/2325610]参考[\Url] 第一章习题1-1#include <stdio.h>int main(){ int a,b,c; double d; scanf("%d%d%d",&a,&b,&c); d=(double)(a+b+c); printf("%.3lf\n",d/3.0); return 0;}习题1-2#include <stdio.h>int main(){ int f; double c; scanf("%d",&f); c=5*(f-32)/9; printf("%.3lf\n",c); return 0;}习题1-3#include <stdio.h>int main(){ int n; scanf("%d",&n); printf("%d\n",(n*(1+n))/2); return 0;}习题1-4#include <stdio.h>#include <math.h>#define pi 4.0*atan(1.0)int main(){ int n; scanf("%d",&n); printf("%lf\n",sin((pi*n)/180)); printf("%lf\n",cos((pi*n)/180)); return 0;}习题1-5#include <stdio.h>int main(){ double x1,y1,x2,y2,a; scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2); a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); printf("%lf\n",a); return 0;}习题1-6#include <stdio.h>int main(){ int n; scanf("%d",&n); if(n%2==0) { printf("YES\n"); } else { printf("NO\n"); } return 0;}习题1-7 #include <stdio.h>int main(){ int n; double a; scanf("%d",&n); a=n*95.0; if(a<300) { printf("%.2lf\n",a); } else { printf("%.2lf\n",a*0.85); } return 0;}习题1-8#include <stdio.h>#include <math.h>int main(){ double n; scanf("%lf",&n); printf("%.2lf",fabs(n)); return 0;}习题1-9#include <stdio.h>int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a==b&&b==c) { printf("no\n"); } if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a)) { printf("yes\n"); } else { printf("no\n"); } return 0;}习题1-10#include <stdio.h>int main(){ int n; scanf("%d",&n); if(n%4==0) { if(n%100!=0) { printf("no\n"); } else { if(n%400==0) { printf("yes\n"); } else { printf("no\n"); } } } else { printf("no\n"); } return 0;}第二章习题2-1#include <stdio.h>int main(){ int n,count=0; scanf("%d",&n); while(n>0) { count++; n=n/10; } printf("%d\n",count); return 0;}习题2-2#include <stdio.h>int main(){ int a,b,c; for(int i=100;i<=999;i++) { a=i%10; b=i/10%10; c=i/100; if(i==a*a*a+b*b*b+c*c*c) { printf("%d\n",i); } } return 0;}习题2-3#include <stdio.h>int main(){ int i,a,b,c; 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); } } if(i==101) { printf("no answer\n"); } return 0;}习题2-4#include <stdio.h>int main(){ int i,j,k,n; scanf("%d",&n); for(i=n;i>0;i--) { for(k=0;k<n-i;k++) { printf(" "); } for(j=0;j<2*i-1;j++) { printf("#"); } printf("\n"); } return 0;}习题2-5文件题,南邮竞赛基本不涉及习题2-6#include <stdio.h>int main(){ int i,n; double sum=1.0; scanf("%d",&n); for(i=2;i<=n;i++) { sum+=(1.0/i); } printf("%.3lf\n",sum); return 0;}习题2-7#include <stdio.h>#include <math.h>int main(){ int t=-1; double a=1.0,sum=1.0; while(fabs(a)>=0.000001) { a=1.0/(a+2); a=a*t; sum=sum+a; t=t*(-1); } printf("%.9lf\n",sum); return 0;}习题2-8#include <stdio.h>int main(){ int i,n,m,temp; double sum=0; scanf("%d%d",&n,&m); if(n>m) { temp=n; n=m; m=temp; } for(i=n;i<=m;i++) { sum=sum+(1.0/i/i); } printf("%.5lf\n",sum); return 0;}习题2-9 printf的特殊用法:对于m.n的格式可以用如下方法表示 char ch[20]; printf("%*.*s\n",m,n,ch); 前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。 这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。 #include <stdio.h>int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%.*lf\n",c,(double)a/b); return 0;}习题2-10#include <stdio.h>int main(){ int a,b,c,d,e,f,g,h,i; for(a=1;a<=9;a++) { for(b=1;b<=9;b++) { for(c=1;c<=9;c++) { for(d=1;d<=9;d++) { for(e=1;e<=9;e++) { for(f=1;f<=9;f++) { for(g=1;g<=9;g++) { for(h=1;h<=9;h++) { for(i=1;i<=9;i++) { if((2*(a*100+b*10+c)==1*(d*100+e*10+f))&&(3*(a*100+b*10+c)==1*(g*100+h*10+i))&&(a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(a!=h)&&(a!=i)&&(b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&&(b!=g)&&(b!=h)&&(b!=i)&&(c!=d)&&(c!=e)&&(c!=f)&&(c!=g)&&(c!=h)&&(c!=i)&&(d!=e)&&(d!=f)&&(d!=g)&&(d!=h)&&(d!=i)&&(e!=f)&&(e!=g)&&(e!=h)&&(e!=i)&&(f!=g)&&(f!=h)&&(f!=i)&&(g!=h)&&(g!=i)&&(h!=i)) { printf("%d,%d,%d\n",a*100+b*10+c,d*100+e*10+f,g*100+h*10+i); } } } } } } } } } } return 0;} 第三章习题3-1#include <stdio.h>#include <string.h>int main(){ int i,a[101],n,max; memset(a,sizeof(a),0); while(scanf("%d",&n)==1) { a[n]++; } max=a[0]; for(i=1;i<101;i++) { if(a[i]>=max) { max=a[i]; } } for(i=0;i<101;i++) { if(a[i]==max) { printf("%d ",i); } } printf("\n"); return 0;}习题3-2#include <stdio.h>#include <ctype.h>char s[1000];int main(){ char ch; int i,j,m=0,sumlong=0,count=0; while(1) { scanf("%c",&ch); if(ch=='\n'||ch==EOF) { break; } else { s[m++]=ch; } } for(i=m-1;i>0;i--) { if(s[i]==' '&&s[i-1]==' ') { for(j=i-1;j<m-1;j++) { s[j]=s[j+1]; } m--; } } for(i=0;i<m;i++) { if(isalpha(s[i])) { sumlong++; } else if(s[i]==' ') { count++; } } printf("%.2lf\n",(double)((sumlong+count+1)/(count+1))); return 0;}习题3-3(重新做!!!)#include <stdio.h>#include <ctype.h>#define mod 1000char s[10000];char buf[10000];int main(){ int i,m=0,n=0,sum=1; char ch; while(1) { scanf("%c",&ch); if(ch==EOF||ch=='\n') { break; } else { s[m++]=ch; } } for(i=0;i<m;i++) { if(isdigit(s[i])) { buf[n++]=s[i]-'0'; } } for(i=0;i<n;i++) { sum=sum*buf[i]; } printf("%d\n",sum%mod); return 0;}习题3-4习题3-5#include <stdio.h>char a[1000][1000];int main(){ int i,j,n; scanf("%d",&n); scanf(" "); char temp; for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%c",&a[i][j]); } } for(i=0;i<n;i++) { for(j=i;j<n;j++) { temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } } for(i=n-1;i>=0;i--) { for(j=0;j<n;j++) { printf("%c ",a[i][j]); } printf("\n"); } return 0;}习题3-6#include <stdio.h>int main(){ int b,n,m=0; char p[100]; scanf("%d%d",&b,&n); while(b!=0) { p[m++]=b%n+'0'; b=b/n; } for(int i=m-1;i>=0;i--) { printf("%c",p[i]); } printf("\n"); return 0;}习题3-7#include <stdio.h>int ndjc(int n,int m){ int i,a=1; for(i=0;i<n;i++) { a*=m; } return a;}int main(){ int i,b,n,p[100],m=0,a=0; scanf("%d %d",&n,&b); while(n>0) { p[m++]=n%10; n=n/10; } m--; for(i=m;i>=0;i--) { a+=p[i]*ndjc(i,b); } printf("%d\n",a); return 0;} 怎么快速合并 byte[] 数组 救命啊,datagridview更新不了 NullableDateTimePicker C#中如何实现像飞信和QQ的自定义头像把图片缩小并且要清晰 XML new string('-',4);该如何理解! asp.net绘图问题!怎样让网页的内容和图画兼得????? 苏州的程序员注意了! 急!c#中调用存储过程,有何数据类型对应sqlserver2000中的numeric?可以传值? c#中cookies怎样使用? 一道算法题,请大家帮忙,help, WPF listview 获取值问题
习题1-1
#include <stdio.h>
int main()
{
int a,b,c;
double d;
scanf("%d%d%d",&a,&b,&c);
d=(double)(a+b+c);
printf("%.3lf\n",d/3.0);
return 0;
}习题1-2
#include <stdio.h>
int main()
{
int f;
double c;
scanf("%d",&f);
c=5*(f-32)/9;
printf("%.3lf\n",c);
return 0;
}习题1-3
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",(n*(1+n))/2);
return 0;
}习题1-4
#include <stdio.h>
#include <math.h>
#define pi 4.0*atan(1.0)
int main()
{
int n;
scanf("%d",&n);
printf("%lf\n",sin((pi*n)/180));
printf("%lf\n",cos((pi*n)/180));
return 0;
}习题1-5
#include <stdio.h>
int main()
{
double x1,y1,x2,y2,a;
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf("%lf\n",a);
return 0;
}习题1-6
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n%2==0)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
return 0;
}习题1-7
#include <stdio.h>
int main()
{
int n;
double a;
scanf("%d",&n);
a=n*95.0;
if(a<300)
{
printf("%.2lf\n",a);
}
else
{
printf("%.2lf\n",a*0.85);
}
return 0;
}习题1-8
#include <stdio.h>
#include <math.h>
int main()
{
double n;
scanf("%lf",&n);
printf("%.2lf",fabs(n));
return 0;
}习题1-9
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==b&&b==c)
{
printf("no\n");
}
if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}习题1-10
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n%4==0)
{
if(n%100!=0)
{
printf("no\n");
}
else
{
if(n%400==0)
{
printf("yes\n");
}
else
{
printf("no\n");
}
}
}
else
{
printf("no\n");
}
return 0;
}
第二章习题2-1#include <stdio.h>
int main()
{
int n,count=0;
scanf("%d",&n);
while(n>0)
{
count++;
n=n/10;
}
printf("%d\n",count);
return 0;
}习题2-2
#include <stdio.h>
int main()
{
int a,b,c;
for(int i=100;i<=999;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("%d\n",i);
}
}
return 0;
}习题2-3
#include <stdio.h>
int main()
{
int i,a,b,c;
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);
}
}
if(i==101)
{
printf("no answer\n");
}
return 0;
}习题2-4
#include <stdio.h>
int main()
{
int i,j,k,n;
scanf("%d",&n);
for(i=n;i>0;i--)
{
for(k=0;k<n-i;k++)
{
printf(" ");
}
for(j=0;j<2*i-1;j++)
{
printf("#");
}
printf("\n");
}
return 0;
}习题2-5
文件题,南邮竞赛基本不涉及
习题2-6
#include <stdio.h>
int main()
{
int i,n;
double sum=1.0;
scanf("%d",&n);
for(i=2;i<=n;i++)
{
sum+=(1.0/i);
}
printf("%.3lf\n",sum);
return 0;
}习题2-7
#include <stdio.h>
#include <math.h>
int main()
{
int t=-1;
double a=1.0,sum=1.0;
while(fabs(a)>=0.000001)
{
a=1.0/(a+2);
a=a*t;
sum=sum+a;
t=t*(-1);
}
printf("%.9lf\n",sum);
return 0;
}习题2-8
#include <stdio.h>
int main()
{
int i,n,m,temp;
double sum=0;
scanf("%d%d",&n,&m);
if(n>m)
{
temp=n;
n=m;
m=temp;
}
for(i=n;i<=m;i++)
{
sum=sum+(1.0/i/i);
}
printf("%.5lf\n",sum);
return 0;
}习题2-9
printf的特殊用法:对于m.n的格式可以用如下方法表示
char ch[20];
printf("%*.*s\n",m,n,ch);
前边的*定义的是总的宽度,后边的定义的是输出的个数。分别对应外面的参数m和n 。 这种方法的好处是可以在语句之外对参数m和n赋值,从而控制输出格式。
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%.*lf\n",c,(double)a/b);
return 0;
}习题2-10#include <stdio.h>
int main()
{
int a,b,c,d,e,f,g,h,i;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
for(c=1;c<=9;c++)
{
for(d=1;d<=9;d++)
{
for(e=1;e<=9;e++)
{
for(f=1;f<=9;f++)
{
for(g=1;g<=9;g++)
{
for(h=1;h<=9;h++)
{
for(i=1;i<=9;i++)
{
if((2*(a*100+b*10+c)==1*(d*100+e*10+f))&&(3*(a*100+b*10+c)==1*(g*100+h*10+i))&&(a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(a!=f)&&(a!=g)&&(a!=h)&&(a!=i)&&(b!=c)&&(b!=d)&&(b!=e)&&(b!=f)&&(b!=g)&&(b!=h)&&(b!=i)&&(c!=d)&&(c!=e)&&(c!=f)&&(c!=g)&&(c!=h)&&(c!=i)&&(d!=e)&&(d!=f)&&(d!=g)&&(d!=h)&&(d!=i)&&(e!=f)&&(e!=g)&&(e!=h)&&(e!=i)&&(f!=g)&&(f!=h)&&(f!=i)&&(g!=h)&&(g!=i)&&(h!=i))
{
printf("%d,%d,%d\n",a*100+b*10+c,d*100+e*10+f,g*100+h*10+i);
}
}
}
}
}
}
}
}
}
}
return 0;
}
第三章
习题3-1#include <stdio.h>
#include <string.h>
int main()
{
int i,a[101],n,max;
memset(a,sizeof(a),0);
while(scanf("%d",&n)==1)
{
a[n]++;
}
max=a[0];
for(i=1;i<101;i++)
{
if(a[i]>=max)
{
max=a[i];
}
}
for(i=0;i<101;i++)
{
if(a[i]==max)
{
printf("%d ",i);
}
}
printf("\n");
return 0;
}习题3-2#include <stdio.h>
#include <ctype.h>
char s[1000];
int main()
{
char ch;
int i,j,m=0,sumlong=0,count=0;
while(1)
{
scanf("%c",&ch);
if(ch=='\n'||ch==EOF)
{
break;
}
else
{
s[m++]=ch;
}
}
for(i=m-1;i>0;i--)
{
if(s[i]==' '&&s[i-1]==' ')
{
for(j=i-1;j<m-1;j++)
{
s[j]=s[j+1];
}
m--;
}
}
for(i=0;i<m;i++)
{
if(isalpha(s[i]))
{
sumlong++;
}
else if(s[i]==' ')
{
count++;
}
}
printf("%.2lf\n",(double)((sumlong+count+1)/(count+1)));
return 0;
}
习题3-3(重新做!!!)#include <stdio.h>
#include <ctype.h>
#define mod 1000
char s[10000];
char buf[10000];
int main()
{
int i,m=0,n=0,sum=1;
char ch;
while(1)
{
scanf("%c",&ch);
if(ch==EOF||ch=='\n')
{
break;
}
else
{
s[m++]=ch;
}
}
for(i=0;i<m;i++)
{
if(isdigit(s[i]))
{
buf[n++]=s[i]-'0';
}
}
for(i=0;i<n;i++)
{
sum=sum*buf[i];
}
printf("%d\n",sum%mod);
return 0;
}习题3-4习题3-5
#include <stdio.h>
char a[1000][1000];
int main()
{
int i,j,n;
scanf("%d",&n);
scanf(" ");
char temp;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%c",&a[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
for(i=n-1;i>=0;i--)
{
for(j=0;j<n;j++)
{
printf("%c ",a[i][j]);
}
printf("\n");
}
return 0;
}习题3-6
#include <stdio.h>
int main()
{
int b,n,m=0;
char p[100];
scanf("%d%d",&b,&n);
while(b!=0)
{
p[m++]=b%n+'0';
b=b/n;
}
for(int i=m-1;i>=0;i--)
{
printf("%c",p[i]);
}
printf("\n");
return 0;
}习题3-7
#include <stdio.h>
int ndjc(int n,int m)
{
int i,a=1;
for(i=0;i<n;i++)
{
a*=m;
}
return a;
}
int main()
{
int i,b,n,p[100],m=0,a=0;
scanf("%d %d",&n,&b);
while(n>0)
{
p[m++]=n%10;
n=n/10;
}
m--;
for(i=m;i>=0;i--)
{
a+=p[i]*ndjc(i,b);
}
printf("%d\n",a);
return 0;
}