🍉内容专栏:【C/C++要打好基础啊】
🍉本文脉络:1.科学计数法,printf常用输出;2.运算易错点;3.for循环的break和contiune;4.善用条件运算符;5.if语句用嵌套来优化(注意看注释!!);6.最大公因数最小公倍数 7.找100~999的水仙花数(注意个位十位百位怎么找)8.判断一个数是不是回文数
🍉本文作者:Melon_西西
🍉发布时间 :2023.1.27
目录
1.科学计数法
e后面如果是整数就是10的n次方,负数就是0.1的n次方
float f2 = 3e2;//3*10^2;
float f3 = 3e-2;//3^0,1^2
printf输出常用规则:
2.易错运算
加减乘除运算+-*/ 除数不可以是0
int两个整数相除结果是整数舍去小数部分
double两个小数相除结果可以是小数
%取模运算:只取余数 两个小数不可以
布尔运算,整数除了0都是ture都是1
前置后置递增递减:
++m1 n1++;
这两种都是让变量加1
区别:前置是先让变量+1然后进行表达式运算
后置是先进行表达式运算,后让变量+1
int m2 = 10;
int n2 = ++m2 * 10;
cout << "m2=" << m2 << endl;//11
cout << "n2=" << n2 << endl;//110
int m3 = 10;
int n3 = m3++ * 10;
cout << "m3=" << m3 << endl;//11
cout << "n3=" << n3 << endl;//100
混合运算时,会把不同类型的数据转化成同一类型(较高精度的)
float→double char,shoprt→int→unsigned→long→double
优先级比较:|| &&低于关系,!高于算数,()改变优先级 百度搜索运算符优先级表 逻辑运算符的短路性(优化): 从左至右运算:(|| &&为左结合,!为右结合) 当能确定逻辑表达式的值时,立即结束运算
int q = -1, w = 0, e = -1, r=0;
r = q++ || ++w && ++e;
cout << "r=" << r << endl;//r=1
q = -1, w = 0, e = -1, r=0;
r = q++ || ++w || e;
cout << "r=" << r << endl;//r=1
q = -1, w = 0, e = -1, r=0;
r = q++ || ++w && ++e;
cout << "r=" << r << endl; //r=1
int qq = -1, ww = 0, ee = -1, rr=0;
r = q++ | ++w & ++e;
cout << "rr=" << rr << endl; //rr=0
qq = -1, ww = 0, ee = -1, rr;
rr = qq++ | ++ww | ee;
cout << "rr=" << rr << endl; //rr=-1
qq = -1, ww = 0, ee = -1, rr;
rr = qq++ | ++ww & ++ee;
cout << "rr=" << rr << endl; //rr=-1
3.for循环中的break和contiune
int i8 = 0, sum8 = 0;
for (i8 = 0; i8 <= 100; i8++)
{
if (i8 == 50)
break;
sum8 += i8;
}
cout << sum8 << endl;//sum8只加了1~49,结果是1225
int i9 = 0, sum9 = 0;
for (i9 = 0; i9 <= 100; i9++)
{
if (i9 == 50)
continue;
sum9 += i9;
}
cout << sum9 << endl;//上述结果sum9==5000,没有加50
4.条件运算符:
eg.1:计算一个数是不是3和7的倍数:
int n = 0; cin >> n;
(n / 3 == 0 && n / 7 == 0) ? cout << "能" : cout << "不能" ;
也可以嵌套使用:
cin >> n;
n % 3 == 0) ?
((n % 5 == 0) ? cout << "yes" : cout << "no")
: cout << "no";
eg.2:两个数比较大小
int a = 0, b = 0; cin >> a >> b;
( a > b ) ? cout << a : cout << b ;
eg.3:是不是闰年
int year = 0; cin >> year;
((year % 4 == 0) && (year % 100 != 0) || year % 400 == 0) ?
cout << "是闰年" : cout << "不是闰年";
eg.4:三个数比较大小
int a=0, b=0, c=0, m=0;
cout << "请输入三个数比较大小" << endl;
cin >> a >> b >> c;
m = a;
if (b > m) m = b;
if (c > m) m = c;
cout << m << "最大" << endl;
5.if语句用嵌套来优化(注意看注释!!)
cout << "输入分数判断等级,嵌套的写法" << endl;
int fenshu2=0;
char grade = 'Z'; //对grade初始化,随便赋一个值就可以
cout << "输入分数:";
cin >> fenshu2;
if (fenshu2 < 60 || fenshu2>100)
{
cout << "无效分数"; return;
}
if (fenshu2 >= 60)
{
if (fenshu2 >= 70)
{
if (fenshu2 >= 80)
{
if (fenshu2 >= 90) grade = 'A';
else grade = 'B'; //这里一定记得要有个对80~90区间的讨论,没有的话这里是空的
}
else grade = 'C';
}
else grade = 'D';
}
else grade = 'E';
cout << grade << endl;
6.最大公因数最小公倍数
{
cout << "求两个整数的最大公约数和最小公倍数" << endl;
int n;
int a = 0, b = 0;
cin >> a >> b;
int big = 0, small = 0;
big = (a > b) ? a : b;
small = a + b - big;
n = small;
while (n)
{
if ((a % n == 0) && (b % n == 0))
{
break;
}
n--;
}
int gongbeishu = a * b / n;
cout << "最大公因数是" << n << endl;
cout << "最小公倍数是" << gongbeishu << endl;
}
7.找100~999的水仙花数
(注意个位十位百位怎么找)
{
int g = 0, s = 0, b = 0;
for (int i = 100; i <= 999; i++)
{
g = i % 10; //个位数=数字除以10的余数
s = i / 10 % 10; //十位数先/10得到百位十位组成的两位数再取余数得十位数
b = i / 100; //百位数直接/100可以得到
if (i == g * g * g + s * s * s + b * b * b)
cout << i << " ";
}
}
8.判断一个数c是不是回文数
{
int a = 0, b = 0, c = 0;
cout << "请输入一个数字";
cin >> c;
a = c;
while (a)
{
b = b * 10 + a % 10;
a /= 10;
}
(c == b) ? cout << c << "是回文数" : cout << c << "不是回文数";
}
写在最后: