1.endl ‘\n’ 换行符
eg: cout<<”hello world”<<’\n’;
2.对于“/”,当参与运算的数含有实数,运算结果是两数相除的值;当两个数都是整数时,运算结果是两数相除的商。 整数之间的运算结果为整数,实数之间的运算结果为实数。
3. setprecision 设置精度;设置输出的位数
#include <iomanip>
cout<<fixed<<setprecision(8)<<9.0/8.0<<endl;
注:括号内表示输出值保留小数点后8位小数;
算式放于setprecision后面方可设置精度
一般实数除法最多保留4位小数
4. 变量只能含有字母、数字及下划线且第一个字符不能为数字
5. int整形占用4字节,为-2147483648~2147483647范围内的整数
float浮点型占用4字节,为-3.4E+38~3.4E+38(7位有效数字)范围内的实数
char字符型占用1字节,存放-128~127范围内对应的字符,一般用于存放键盘字符(ASCII码表)’A’代表字母A
6.简单赋值= 支持连等赋值 a=b=3 将右边值赋给左边变量
复合算数赋值+=、-=、*=、/=、%=
a+=b比a=a+b 运算速度快
复合位运算赋值&=、|=、^=、>>=、<<=
7. 交换两数位置的方法
t=x; x=y; y=t;
x+=y; y=x-y; x-=y;
8.单独使用自增时 a++与++a结果相同
赋值时 b=a++ 先用原始a给b或算式赋值,a再加1,结果不同 b=++a a先加1再赋值给b,结果相同
9. #include <cmath> !!!!!!!
A=sqrt(90.0/67) 开平方根
B=ceil(3.14) B=4 取上整
C=floor(3.14) C=3 取下整
D=pow(4,3.0) D=64 幂 次方 ()内应为double型实数。
计算机一般输出结果为8位数,若超过则会溢出需使用setprecision函数控制精度。
10.常量名通常用大写字母表示;
11.数据类型转换:
Double>float>int/long>char/short
赋值运算中,将右边表达式值的类型转换为左边变量的类型
参加运算的两个数类型不统一时,从简单类型向复杂类型转换
(类型名)(表达式) 或 (类型名)变量
12.输入时char类型只接受一个键盘字符
13.海伦公式:p=(a+b+c)/2
S=根号下p(p-a)(p-b)(p-c)
注意*!!!
14.输出大数据时,scanf与printf效率高,速度快 为标准库函数,对于不同数据类型变量和数据的输入与输出,有严格对应的配对格式
#include <cstdio>
printf(“格式控制字符串”,输出列表)
格式控制字符串指定输出格式,由格式字符串与非格式字符串组成,格式字符串是以%开头的字符串,在%后面跟有各种格式字符,说明输出数据的类型、形式、长度。小数位数等。
15.scanf函数
16.生成随机数
17.基本数据类型
18.常用数学函数
19.条件式中是否等于的书写是==,而不是=,条件式书写时加括号
不等于!=
20.对于整数的除法可以直接使用/
对于含小数的除法取整数部分可以使用floor函数和include <cmath>取下整
21.5%7=5 5/7=0
if语句只执行下一行的语句 若要执行代码块需要用{}
22.运算优先级!>&&>|| 非>与>或
!x==0与x!
23. 能被4整除却不能被100整除或能被400整除的年份就是闰年!
(Year%4==0&&year%100!=0)||year%400==0
24.true为1,false为0. 将一个非零的整数赋给逻辑型变量,按真处理
25.三目运算符
<表达式1>?<表达式2>:<表达式3>
先计算1,若1的值为真,计算表达式2并输出;否则计算表达式3并输出
26.等于为==,赋值为=
27.switch语句:
Switch(表达式)
{
Case 空格 常量表达式1:【语句组1】【break;】
Case 常量表达式n:【语句组2】【break;】
【default:语句组n+1】
}
功能:首先计算表达式的值,case后的常量表达式值逐一与之匹配,当某一个case分支中的常量表达式与之匹配时,则执行该分支后的语句组,然后顺序执行之后的所有语句,直到遇到break语句或switch语句的右括号}为止。若switch语句中包含default,default表示表达式与各常量表达式都不匹配时,执行其后面的语句组,通常将default放在最后。
Switch表达式中只能为整型、字符型、布尔型、枚举型
示例:
switch(op)
{
case'+':cout<<num1<<op<<num2<<"="<<num1+num2<<endl; break;
case'-':cout<<num1<<op<<num2<<"="<<num1-num2<<endl; break;
case'*':cout<<num1<<op<<num2<<"="<<num1*num2<<endl; break;
case'/':if(num2!=0) cout<<num1<<op<<num2<<"="<<num1/num2<<endl;
else cout<<"Devided by zero!"<<endl; break;
default:cout<<"Invalid operator";
}
case 'A': case 'a': cout<<"excellent"; break;
switch语句支持多个常量表达式共用同一语句组
28.恩格尔系数
int n;
float x,y;
cin>>x>>y;
n=x/y*100+0.5; 求恩格尔系数,对小数后一位四舍五入取整
switch(n/10) 用整除10后的个位数表示相应范围的恩格尔系数
{
case 0:case 1: cout<<"极其富裕"<<endl; break;
case 2:cout<<"富裕"<<endl; break;
case 3:cout<<"相对富裕"<<endl; break;
case 4:cout<<"小康"<<endl; break;
case 5:cout<<"温饱"<<endl; break;
default:cout<<"贫穷"<<endl; break;
}
29.IC卡电话计费标准:首次为0.5元/3分钟,之后是0.2元/1分钟。
if (x<=0.5) t=3;
else t=3+ceil((x-0.5)/0.2);
30.for(循环变量初始化;循环条件;循环变量增量)
初始化、条件和增量可省略,但分号不能省略。
31.计算机中科学计数法的表示:
计算机表达10的幂是一般是用E或e,即
1.03乘10的9次方,可简写为“1.03E+09”的形式
-1.03乘10的9次方,可简写为“-1.03E+09”的形式
1.03乘10的-9次方,可简写为“1.03E-09”的形式
-1.03乘10的-9次方,可简写为“-1.03E-09”的形式
1.03e+09相当于小数点向右移动了9位 1.0310^(9)
1.03e-09相当于小数点向左移动了9位 1.0310^(-9)
32.局部变量要赋值:否则会随机变出来一个初始值
定义局部变量,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的(脏的,上次用完没清零的),所以说使用栈来实现的局部变量定义时如果不显式初始化,值就是脏的。如果你显式初始化怎么样?
C语言是通过一个小手段来实现局部变量的初始化的。
int a = 15; // 局部变量定义时初始化
C语言编译器会自动把这行转成:
int a; // 局部变量定义
a = 15; // 普通的赋值语句
33.while 当型循环
While(表达式)
语句
当表达式的值非0时,不断地执行循环体中的语句。当表达式值为0时,跳出循环。
while(n)
n是bool型变量时,就是代表n为true时运行循环
n是int型时,就是代表不为0时运行循环
n为表达式,就代表表达式成立时运行循环
34.判断质数:
方法1:while语句中,当n不能被i整除且i未超过n-1时,重复操作;退出循环时,i超过了n-1,则为质数
while (n%i!=0&&i<=n-1)
i++;
if (i>=n-1) cout<<"yes"<<endl;
else cout<<"no"<<endl;
方法2:while语句中,当n不能被i整除且i未超过n-1时,重复操作;退出循环时,被不能整除的次数为n-2时,为质数。
while (n%i!=0&&i<=n-1)
{
x++;
i++;
}
if (x==n-2) cout<<"yes"<<endl;
else cout<<"no"<<endl;
方法3:for语句
for(int i=2;i<=n-1;i++)
{
if(n%i==0) x++;
}
if (x!=0) cout<<"No"<<endl;
else cout<<"Yes"<<endl;
35.最大公约数:
质因数分解法;短除法;辗转相除法;更相减损法
辗转相除法:(欧几里得算法)
求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29)
∴ (319,58)=(58,29);
∵ 58÷29=2(余0)
∴ (58,29)= 29;
∴ (319,377)=29。
用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。
if (a<b)
{
c=a; a=b; b=c; //保证大数除以小数
}
c=a%b;
while (c!=0)
{
a=b;
b=c;
c=a%b;
}
cout<<b<<endl;
或
while (tmp=a%b)
{
a=b;
b=tmp;
}
cout<<b<<endl;
更相减损法:(等值算法)
第一步:任意给定两个正整数;判断它们是否都是偶数。若是,则用2约简;若不是则执行第二步。
第二步:以较大的数减较小的数,接着把所得的差与较小的数比较,并以大数减小数。继续这个操作,直到所得的减数和差相等为止。
则第一步中约掉的若干个2与第二步中等数的乘积就是所求的最大公约数。
例.用更相减损术求98与63的最大公约数。
解:由于63不是偶数,把98和63以大数减小数,并辗转相减:
98-63=35
63-35=28
35-28=7
28-7=21
21-7=14
14-7=7
所以,98和63的最大公约数等于7。
while (a%2==0&&b%2==0)
{
a/=2; b/=2;
}
if (a<b)
{
c=a; a=b; b=c;
}
c=a-b;
while (c!=b)
{
a=(b>c)?b:c;
b=(b>c)?c:b;
c=a-b;
}
cout<<b<<endl;