88 条题解
-
5
稍微复杂的问题
- 这道题相对于前面难度又有了一定的提升。
- 已经不再是单纯将题目转化成语言可以解决的了。题目虽然没有情景,但是看上去也有点绕口。
- 这时候,读题方法就更显重要。
读题
题目:
数学中有一个绝对值的概念, 正数的绝对值是本身, 负数的绝对值是它的相反数 (相反数的概念,5的相反数数-5,-2的相反数是2), 0的绝对值仍然是0。请从键盘读入一个整数n(n可能是正整数,也可能是负数), 求出n的绝对值。(7.1)
- 这题也是要先看后面的题。
请从键盘读入一个整数n(n可能是正整数,也可能是负数), 求出n的绝对值。(7.1)
- 题意就是输入一个出他的绝对值。
- 这时我们就要去前面找了,绝对值是什么?
- 正数的绝对值是它本身。
- 负数的绝对值是它的相反数。
- 0的绝对值仍然是0。
- 显然,1、3步很好理解,但第二句的绝对值是什么意思?
- 再到前面找,相反数是什么意思?
- 原来相反数就是一个数正号改成负号,负号改成正号。
总结思路
col1 col2 col3 col4 col5 col6 col7 col8 col9 ↗ 如果是正数 → 输出它本身 输入一个数n → 输出它的绝对值 → 如果是0 输出0 ↘ 如果是负数 输出他的相反数 → 正好变负号,负号变正号
根据上面的思路整理,我们可以得到以下代码
AC代码(求赞):
/*题目: 数学中有一个绝对值的概念, 正数的绝对值是本身, 负数的绝对值是它的相反数 (相反数的概念,5的相反数数-5,-2的相反数是2), 0的绝对值仍然是0。请从键盘读入一个整数n(n可能是正整数,也可能是负数), 求出n的绝对值。(7.1) */ #include <bits/stdc++.h> using namespace std; int main() { int n;//定义一个数n cin>>n;//输入n(第一步) if (n>=0) //如果n大于等于0(0也是它本身,所以一起判断)(1、2行) { cout<<n;//输出它本身(第七步) } else//是负数(第三行) { cout<<0-n; //输出他的相反数,如: //0-(-5)因为负负得正,所以=5,从而得到去符号的效果。 } return 0; }
扩展方法
其实再c++中,有绝对值符号,就是abs(),虽然这题不建议这么用,但如果在后面也有需要求绝对值的情况,那大可不写那么多代码,用abs()即可。
扩展AC代码:
#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; cout<<abs(n); return 0; }
-
5
c++语言
。 题目给出了绝对值的说明, 那么我们就可以写出代码如下:if(n>=0) cout<<n<<endl; else cout<<0-n<<endl;
好,那么好,其实不用这样麻烦。
#include<cmath>
或#include<math.h>
math库中有一个abs()函数求绝对值, 函数原型:
int abs(int n); // 用于整型 long abs(long n); // 用于长整型 float abs(float n); // 用于单精度浮点型 double abs(double n); // 用于双精度浮点型 long double abs(long double n); // 用于 long double 类型
所以代码可以直接写成:
#include<iostream> #include<cmath> using namespace std; int main(){ int n; cin>>n; cout<<abs(n)<<endl; return 0; }
-
1
这道题可以从输入数值(n)的大小入手。 当n>=0, 它的绝对值就是它本身。 当n<0, 它的绝对值是他的相反数,也就是-n(n*-1),是一个大于0的数。 因此,根据以上原理,可以写出代码如下:
#include <bits/stdc++.h>//万能头文件 using namespace std;//输入输出命名空间 int n;//定义要输入的变量 int main()//主函数 { cin>>n;//输入变量 if(n>=0)//判断这个数是否为非负数 { cout<<n;//直接输出n } else//否则为负数 { cout<<n*-1;//输出相反数 } return 0;//结束程序 }
嫌麻烦?还可以用绝对值函数来简化
cout<<abs(n);
值得一提的是,在人教版数学教材里,相反数和绝对值的知识是初一上册第一单元里出现的,有看不懂作者上面讲的,可以去翻一翻人教版初一上学期数学教材哦~ 本人刚刚学到L8-4,代码有什么缺陷也请各位大佬们指点,本人洗耳恭听。 最后,感谢老师的教导和大家的意见与支持❤️
-
1
这道题也是作者最拿手的
if
分支判断,所以直接"Daima time"#include<bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; if(n<0){//判断n是否小于0 cout<<n*-1;//输出了n的相反数 }else{ cout<<n;//如果不是,直接输出原数 } return 0; }
这道题最重要的一点便是,一个正数的绝对值是它本身,而不是输出它的负数(555作者就是这点搞错了) 最后结尾一定要记得加上
return 0
!!!(dian ge zan ba❤️ 555)
信息
- ID
- 345
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 5
- 标签
- 递交数
- 11362
- 已通过
- 4708
- 上传者