
顺序结构
程序中的语句从上到下依次执行,每条语句都执行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;
}
|