《算法笔记》学习记录002

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

一、今日学习概览

p14~27

2.1.5运算符
1.算术运算符
2.关系运算符
3.逻辑运算符
4.条件运算符
C语言中唯一的三目运算符
5.位运算符
2.2顺序结构
2.2.1赋值表达式
2.2.2使用scanf和printf输入/输出
printf的三种实用输出格式
2.2.3使用getchar和putchar输入/输出字符
2.2.4注释
2.2.5typedef
2.2.6常用math函数
8个

备注:

  1. i++与++i的区别:i++是先使用再将i+1;++i是先将i+1再使用i。
  2. 无穷大的数INF的表示:
   const int INF = (1<<30)-1;
   const int INF = 0x3fffffff;
  1. 左移右移:

指定 A = 60(0011 1100):

(1) 按位左移(<<) 将操作数的所有位向左移动指定的位数。

下图展示了11111111 << 1(11111111 左移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。
按位左移(图源百度经验)
(A << 2)结果为 240, 二进制为 1111 0000 位

(2) 按位右移(<<) 将操作数的所有位向右移动指定的位数。

下图展示了11111111 >> 1(11111111 右移一位)的结果。蓝色数字表示被移动位,灰色表示被丢弃位,空位用橙色的0填充。
按位右移(图源百度经验)
A >> 2 结果为 15, 二进制为 0000 1111

  1. 下面两行代码等价,但最好加上括号。(避免不熟练时犯错)
   n/= m+1 ;
   n/=(m+1);
  1. 数组名称前不需要加取地址运算符&。在 scanf 中,除了char数组(字符串)整个输入的情况不加&之外,其他变量类型都 需要加&
  2. double的scanf是%lf;printf是%f。
  3. 如何输出%和\:
   printf("%%");
   printf("\\"); 
  1. printf的三种实用输出格式:%md %0md %.mf(m是常数)
  2. “四舍六入五成双”

“四舍六入五成双”,也即“4舍6入5凑偶”,这里“四”是指≤4 时舍去,"六"是指≥6时进上。"五"指的是根据5后面的数字来定,当5后有数时,舍5入1;当5后无有效数字时,需要分两种情况来讲:5前为奇数,舍5入1;5前为偶数,舍5不进(0是偶数)。

一、具体计算规则:

(1)被修约的数字小于5时,该数字舍去;

(2)被修约的数字大于5时,则进位;

(3)被修约的数字等于5时,要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉,即修约后末尾数字都成为偶数;若5的后面还有不为“0”的任何数,则此时无论5的前面是奇数还是偶数,均应进位。

二、来由:

这一方式的另一个常见名称为“银行家舍入”,是IEEE754标准的推荐舍入标准。这一方式跟通常的四舍五入相比,平均数方面更能保持原有数据的特性

三、举例:

9.8249=9.82, 9.82671=9.83

9.8350=9.84, 9.8351 =9.84

9.8250=9.82, 9.82501=9.83

  1. getchar可以识别换行符,输出的时候就会换一行。
    空行也会输出!
  2. 常用math函数:使用时程序前面要加头文件
  #include <math.h>

1.fabs(double x) //绝对值函数
2.floor(double x)ceil(double x) //向下/向上取整
3.pow(double r,double p) //返回r^p
4.sqrt(double x) //返回算术平方根
5.log(double x) //返回自然对数,其他对数用换底公式
6.sin(double x)cos(double x)tan(double x) //参数要求是弧度制pi*45/180
7.asin(double x)acos(double x)atan(double x) 
8.round(double x) //四舍五入,返回类型是double型,强制转换取整

  1. 角度制与弧度制

角度制与弧度制

  1. 角度制(Degree Measure)
    degrees 360
    把一个圆周平均分成360份,其中的每一份都是1o的角。这种以“度”作为单位来度量角度单位制叫做角度制。下图是我们常见的180o角度尺Protractor。

角度尺

  1. 弧度制(Radian Measure)
    1radian
    长度为半径长的弧,所对的圆心角是 1 弧度(Radian),用符号rad表示。
    正角度弧度数是一个正数,负角度弧度数是一个负数,零角度弧度数。半径为r的圆的圆心角α 所对的弧度长为l,那么角α 的弧度数的绝对值是 | α
    | = l / r。

  2. 角度制与弧度制的换算
    角度制与弧度制的换算
    常用的角度与弧度对照图
    角度与弧度对照

  1. π的精确值 pi=acos(-1.0)
  2. %f默认保留六位小数。

二、今日代码分析

2.02

#include <stdio.h>
int main(){
	char c1,c2,c3;
	c1=getchar();
	getchar();
	c2=getchar();
	c3=getchar();
	putchar(c1);
	putchar(c2);
	putchar(c3);
	return 0;
}

?b去哪儿了?
b去哪儿了?
——声明三个变量,输出三个变量。getchar就是接字符的啊,朋友,a接到了,没赋值出去,不就凭空消失了。c1接收a;getchar()接收b,没保存因此凭空消失;c3接收c;c4接收d。

三、2.2练习

总览

2.03A

#include <stdio.h>
int main(){
	printf("This is my first c program!");
	return 0;
}

2.03

2.04B

#include <stdio.h>
int main(){
	printf("********************\nVery Good!\n********************");
	return 0;
}

2.04

2.05C

#include <stdio.h>
int main(){
	int a=123;
	int b=456;
	int sum=a+b;
	printf("sum=%d",sum);
	return 0;
}

2.05

2.06D

#include <stdio.h>
int main(){
	int a,b;
	scanf("%d%d",&a,&b);
	printf("%d",a+b);
	return 0;
}

2.06

2.07E

#include <stdio.h>
#include <math.h>
int main(){
	double a,b,c,r1,r2;
	scanf("%lf%lf%lf",&a,&b,&c);
	if(a=0||b*b-4*a*c<=0){
		printf("a=0或b^2-4ac不大于0,请重新输入参数!"); 
	}
	else{
		r1 = ((-b) + sqrt(b*b - 4*a*c))/(2*a);	
		r2 = ((-b) - sqrt(b*b - 4*a*c))/(2*a);
		printf("r1=%.2f\n",r1);	
		printf("r2=%.2f",r2);	
	}
	return 0;
}

数据太大而溢出(除数为0了)

#include <stdio.h>
#include <math.h>
int main(){
	double a,b,c,r1,r2;
	scanf("%lf%lf%lf",&a,&b,&c);
	if(b*b-4*a*c<=0){
		printf("a=0或b^2-4ac不大于0,请重新输入参数!"); 
	}
	else{
		r1 = ((-b) + sqrt(b*b - 4*a*c))/(2*a);	
		r2 = ((-b) - sqrt(b*b - 4*a*c))/(2*a);
		printf("r1=%.2f\n",r1);	
		printf("r2=%.2f",r2);	
	}
	return 0;
}

a=0放在逻辑运算符里也会赋值?
又改了一下,虽然还是过不去。

#include <stdio.h>
#include <math.h>
int main(){
	double a,b,c,r1,r2;
	scanf("%lf%lf%lf",&a,&b,&c);
	if(a!=0||b*b-4*a*c>0){
		r1 = ((-b) + sqrt(b*b - 4*a*c))/(2*a);	
		r2 = ((-b) - sqrt(b*b - 4*a*c))/(2*a);
		printf("r1=%.2f\n",r1);	
		printf("r2=%.2f",r2);	
	}
	else	
	{
		printf("a=0或b^2-4ac不大于0,请重新输入参数!"); 
	}
	return 0;
}

2.08F

#include <stdio.h>
#include <math.h>
int main(){
	char str[10];
	scanf("%s",str);
	printf("%s\n",str);	
	return 0;
}

2.08

猜你喜欢

转载自blog.csdn.net/kingloveccc/article/details/94393581
今日推荐