顺序结构
程序中的语句从上到下依次执行,每条语句都执行1次。
一般流程
例:求梯形面积
输入梯形的上底、下底、高分别是a、b、h,请设计一个算法求他的面积(结果保留2位小数)。
?
1 2 3 4 5 6 7 8 9 10 | #include <bits/stdc++.h> using namespace std; int main(){ ???? int a, b, h; ???? double s; ???? scanf ( "%d%d%d" , &a, &b, &h); ???? s = (a+b) * h / 2.0; ???? printf ( "%.2lf" , s); ???? return 0; } |
这道题目,计算处理部分可以代入公式;对于没有公式的题目,需要自己列出数学关系式再求解。
运算符
为了更好地调用计算机的计算能力,我们需要学会更多的运算符!
运算规则
1、优先级
一般地,算术 > 关系 > 逻辑 > 位运算
当然,有特殊情况,比如左移右移比关系运算符优先,个别位运算符比逻辑运算符优先。
因此,在不确定优先级的情况下,加小括号!
2、类型转换
运算时转换:当两个数据进行运算的时候,如果类型不同,会先自动转成相同类型:
char
int
double
long long
float
不难发现,按照箭头方向进行类型转换,精度丢失最少。
赋值时转换
int a = 2.5;
那么最终a的值是2,因为int无法保存小数部分。
强制转换
char a = (char)65;
那么变量a保存的是字符'A'。
常用函数
调试代码
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | //为什么说比较两个浮点数是否相等是不安全的 #include <stdio.h> #define lld I64d int main(){ ???? int a; ???? long long b; ???? char c; ???? float d; ???? double e; ???? a = 1; ???? b = a++; ???? b = ++a; ???? a = 1 + 2 << 2; ???? a = 1 + 2 << 2 - 1; ???? a = 12345678910; // runtime error ???? b = 12345678910; ???? a = 12345678; ???? b = 1; ???? a = b || ++b; ???? a = 0 && ++b; ???? a = b && ++b; ???? a = 3==3<5; ???? a = 3<5==1; ???? a = 1==3<5; ???? a = 3==3==1; ???? a = 1 < 2 < 3; ???? a = 3 > 2 > 1; ???? b = 1; ???? /*a = 2; ???? b = 3; ???? a = ab; ???? a = (a+b*[a+b]) * 2;*/ ???? d = 4 / 3; ???? d = 4.0 / 3; ???? d = 1.0 * 4 / 3; ???? d = 1.23456789; ???? e = 1.23456789; ???? c = 'a' ; ???? //c = "a"; ???? //scanf("%d%lld%c", &a, &b, &c); ???? //printf("%d %lld %c %.9f %.9lf\n", a, b, c, d, e); ???? return 0; } |
?
1 2 3 4 5 6 7 8 | #include <bits/stdc++.h> using namespace std; int main(){ ???? float a=123456789123456789; ???? double b=123456789123456789; ???? printf ( "%.1f\n%.1lf" , a, b); ???? return 0; } |
|