Advertisement

《算法竞赛入门经典》(第二版)第一章笔记

阅读量:

第一章 程序设计入门

笔记

算术表达式→保留小数点后1位的方法(“%.1f”,a.0/b.0);
控制输出格式:%3d(保证输出有3位)
(int)整数用%d输出,(double)实数用lf%输入,%f输出(比较特殊,一般用这个不用float)
整数-浮点数=浮点数(整数才能求余)
const表示变量不允许被改变(定义常量)
赋值是个动作,先计算右边的值再赋给左边的值,覆盖它原来的值。
{i++:①先赋i的值→②i的值加1 ++i: ①i的值加1→②再赋改变后的i的值}
if可以用整数值1或0来表示真或假,常用做输出刚好不同时候的flag。
学会使用伪代码来写思路(先写框架再写细节,主程序→对函数的调用→实现函数本身),以及用手过程序的检验方法(多动脑多动手)。

敲了一些书上的代码和后面自己写的习题↓↓↓

代码

(不保证全对 有错误欢迎指出555):
习题1-7 年份

复制代码
    int n;
    	scanf("%d",&n);
    	if(n%4==0&&n%100!=0||n%400==0)//闰年能被400整除或者能被4整除但不能被100整除 
    		printf("yes");
    	else
    		printf("no");

习题1-6 三角形

复制代码
    int a,b,c;
    	scanf("%d %d %d",&a,&b,&c);
    	if(a*a+b*b==c*c)
    		printf("yes");
    	else if(b*b+c*c==a*a)
    		printf("yes");
    	else if(c*c+a*a==b*b)
    		printf("yes");
    	else if(a+b<=c)
    		printf("no a triangle");
    	else if(a+c<=b)
    		printf("no a triangle");
    	else if(b+c<=a)
    		printf("no a triangle");
    	else
    		printf("no");

习题1-5 打折

复制代码
    double n;
    	int money=95;
    	scanf("%lf",&n);
    	if(n>3)
    		printf("%.2lf",0.85*money*n);
    	else
    		printf("%.2lf",money*n);

习题1-4 正弦和余弦

复制代码
    const double pi=acos(-1.0);
    	double r,h,s1,s2,s;
    	scanf("%lf%lf",&r,&h);
    	s1=pi*r*r;
    	s2=2*pi*r*h;
    	s=s1*2.0+s2;
    	printf("%.3f\n",s);

习题1-3 连续和

复制代码
    int n,sum=0;
    	scanf("%d",&n);
    	for(int i=0;i<=n;i++)
    	{sum=sum+i;}
    	printf("%d\n",sum);

习题1-2 温度

复制代码
    	double f,c; 
    	scanf("%lf",&f);
    	c=5*(f-32)/9;//会自动四舍五入 
    	printf("%.3lf\n",c);

习题1-1 平均数

复制代码
    double a,b,c,z;//一开始把double写成了float 
    	scanf("%lf %lf %lf",&a,&b,&c);
    	z=(a+b+c)/3.0;
    	printf("%.3lf\n",z);

程序1-14 三整数排序

复制代码
    int a,b,c,t;
    	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;}
    	printf("%d %d %d",a,b,c);

程序1-11 鸡兔同笼

复制代码
    int n,m,x,y;
    	scanf("%d %d",&n,&m);
    	x=(4*n-m)/2;
    	y=(m-2*n)/2;
    	if(x%2==1||x<0||y<0)
    		printf("No answer\n");
    	else
    		printf("%d %d",x,y);

程序1-7 三位数反转

复制代码
    int n,x,y,z,t;
    	scanf("%d",&n); 
    	x=n/100;y=n/10%10;z=n%10;
    	t=z*100+y*10+x;
    	printf("%03d",t);

全部评论 (0)

还没有任何评论哟~