一、知识积累

1、自动类型转换

#include<iostream>
using anmespace std;
int main(){int a=1,b=2;
/*int指的是数据类型中的整型变量,用来定义整数,为等号左边的变量赋予整数;*/double c,d;
/*double指的是双精度实型变量,实型即实数,包含整数和分数,所以可以用来定义带有小数点的数,这种带有小数点的数也称为浮点数;精度指的是可以显示的有效数字,一般来说单精度是六位有效数字,双精度是15位有效数字;*/c=a+b;
/*这里的等于号不是数学意义上的相等,而是一个指令,也可以看成是一个动作,将等于号右边的数值赋给等于号左边的变量名;可以观察到,等于号左边的c是浮点数,而右边的a和b是整数,但赋值时,右边的整数会被自动转化为浮点数,再赋给左边;*/d=a/c;
/*由于在这里,等号两边分别有d和c这两个浮点数,所以不会发生自动类型转换;cout<<c<<" "<<d<<endl;return 0;
}//若是浮点数被转换为整数,则会直接把小数点连同后面的小数都去掉。

2、数据类型

#include<iostream>
using namespace std;
int main(){char ans1,ans2;//char可以表示字符,尤其可以用它来输出ASCII表里的单个字符;int a,b,c;//int是最常见的整数类型了,既可以是正整数也可以是负整数,不过值会比较小;signed int d,e,f;//signed是带符号的意思,也就是负号;unsigned int g;//这个在signed前加了个un,是相反的意思,所以只能表示正整数;long long int h,i,j;//顾名思义,能表示较大的正整数;unsigned long long k;//从上面也大概能知道了;float water;//float本就有浮在水面的意思,这里指的是浮点数,也就是带小数点的数;double hh,mm;//double有翻倍的意思,它也是可以表示浮点数,而且能表示的范围比较大;a='M'-'A'+1;//ASCII表里的数字和字符可以相互转换,只看是定义的char还是int;ans1='A'+18-1;//记住几个常识,A是第65个字符,A和a相差32,前31个字符表示不出来;cout<<a<<" "<<as1<<endl;return 0;
}

3、强制类型转换

    double l;cout<<(int)l<<endl;//cout语句里,既可以是(int)l,也可以是int(l);l=(double)m;cout<<l<<endl;//赋值语句,只能在赋值号右边转换;printf("%d",int(m));//C语言的输出语句,可以在里面转换,在外边转不了;

4、四舍五入

    double ans;cout<<int(ans+0.5)<<endl;/*将浮点数转换为整数时,会无情地将小数点后面一串都抛弃掉,所以这里加个0.5,举个例子,这个数是1.4的话,四舍五入为1,加了0.5成了1.9,结果依旧是1;这个数要是1.9,那若不加0.5,四舍五入就是1,明显错了,所以加上0.5,四舍五入为2,正确。*/#include<cmath>double ans;cout<<round(ans)<<endl;/*这里用到了数学函数里的四舍五入,用round()函数就可以了*/

5、典例:数字反转

法一:C++数字型做法

#include<iostream>
using namespace std;
int main(){int a,b,c,d,w;double m;cin>>m;w=m*10;a=w/1000;b=w/100%10;c=w/10%10;d=w%10;cout<<d<<"."<<c<<b<<a<<endl;return 0;
}

法二:C++字符型做法

#include<iostream>
using namespace std;
int main(){char a,b,c,dot,d;cin>>a>>b>>c>>dot>>d;cout<<d<<dot<<c<<b<<a<<endl;return 0;
}

法三:C语言字符型做法

#include<cstdio>
using namespace std;
int main(){char a,b,c,d;scanf("%c%c%c.%c",&a,&b,&c,&d);
/*在这里我们可以看到占位符%c,相当于一个可以放char型数据的位置,此外,还有如下类型:%d是整数的占位符,%f是浮点数的,既可以做输出也可以做输入,但%lf只能做输入浮点数的占位符;%nf也是浮点数的,但这里不再默认保留六位小数,而是保留n位小数;%nd和%0nd也是整数的占位符,n表示数字需要是n位,如果数字不到n位,则用空格或0补到n位;%l64d是long long类型整数的占位符;*/printf("%c.%c%c%c",d,c,b,a);return 0;
}

6、保留小数

#include<iostream>
#include<cstdio>
#include<iomanip>
using namespace std;
int main(){double PI=3.1415926;printf("%f",PI);cout<<fixed<<setprecision(5);cout<<"保留五位小数 PI="<<PI<<endl;cout<<setiosflags(ios::fixed)<<setprecision(4);cout<<"保留四位小数 PI="<<pi<<endl;cout.setf(ios::fixed);cout<<setprecision(3);cout<<"保留三位小数 PI="<<PI<<endl;return 0;
}

7、拓展知识

在保留小数的代码中,我们用到了新的头文件 #include<iomanip>,在这里面,iomanip是输入输出操纵器的意思,用这个头文件,就可以在代码里写一些对输出进行特殊操作的函数,具体如下

控     制     符 作     用
dec 设置整数为十进制
hex 设置整数为十六进制
oct 设置整数为八进制
setbase(n) 设置整数为n进制(n=8,10,16)

setfill(c)

设置字符填充,c可以是字符常量或字符变量
setprecision(n) 设置浮点数的有效数字为n位
setw(n) 设置字符宽度为n位
setiosflags(ios::fixed) 设置浮点数以固定的小数位数显示
setiosflags(ios::scientific) 设置浮点数以科学计数法表示
setiosflags(ios::left) 设置输出左对齐
setiosflags(ios::right) 设置输出右对齐
setiosflags(ios::skipws) 忽略字符前端空格
setiosflags(ios::uppercase) 科学计数法十六进制用X,十进制用E
setiosflags(ios::showpos) 输出正数时输出“+”号
setiosflags(ios::showpoint) 强制显示小数点
resetiosflags() 终止已经设置的输出格式状态,括号应指定内容

二、习题答案

习题2-1

(1)

#include<iostream>
using namespace std;
int main(){double n1,n2,t1,t2,r1,r2;cin>>n1>>t1>>r1>>n2>>t2;r2=n1/t1/r1*n2*t2;cout<<r2<<endl;return 0;
}

(2)

#include<iostream>
using namespace std;
int main(){int he,cha;cin>>he>>cha;cout<<((he-cha)/2)*((he-cha)/2+4)<<endl;return 0;
}

(3)

#include<iostream>
using namespace std;
int main(){double he,beishu,r1,r2;cin>>he>>beishu;r2=he/(1.0+beishu);r1=beishu*r2;cout<<r1<<" "<<r2<<endl;return 0;
}

(4)

#include<iostream>
using namespace std;
int main(){int a,b,c,d,student,apple;cin>>a>>b>>c>>d;student=-1*(d*(-1)-(-1*b)*(-1))/(a*(-1)-c*(-1));apple=(a*d-c*(-1*b))/(a*(-1)-c*(-1));cout<<student<<" "<<apple<<endl;return 0;
}

(5)

#include<iostream>
using namespace std;
int main(){int v1,v2,t1,t2;cin>>v1>>v2>>t1;t2=v2*t1/(v1-v2);cout<<t2<<endl;return 0;
}

(6)

#include<iostream>
using namespace std;
int main(){int a,b,c,d,n1,n2;cin>>a>>b>>c>>d;n1=(c*b-d*1)/(1*b-a*1);n2=(1*d-a*c)/(1*b-a*1);cout<<n1<<" "<<n2<<endl;return 0;
}

(7)

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main(){double p1,p2,m,t,m1,m2;cin>>p1>>p2>>m>>t;m1=m*pow(1+p1,t);m2=m*(1+p2*t);cout<<fixed<<setprecision(2);cout<<m1<<" "<<m2<<endl;return 0;
}

习题2-2

求三角形面积。一个三角形的三边长分别是a、b、c,那么它的面积是多少?输入a、b、c这三个数字,计算三角形的面积,四舍五入精确到一位小数。

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main(){double a,b,c,p,s;cin>>a>>b>>c;p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));cout<<fixed<<setprecision(1);cout<<s<<endl;return 0;
}

习题2-3

(1)

#include<cstdio>
using namespace std;
int main(){int v_a=5,v_yao=8,distance=100;double delta,ans;delta=v_yao-v_a;ans=distance/delta;printf("%.4f",ans);return 0;
}

(2)

#include<cstdio>
using namespace std;
int main(){int ans1;char ans2;ans1='M'-'A'+1;ans2='A'+18-1;printf("%d\n%c",ans1,ans2);return 0;
}

(3)

#include<cstdio>
#include<cmath>
#define PI 3.141593
using namespace std;
int main(){int r1=4,r2=10;double v,l;v=4.0/3*PI*(r1*r1*r1+r2*r2*r2);l=pow(v,1.0/3);l=int(l+0.5);printf("%d",int(l));
//这是一个好地方,用C风格最后输出转换类型的话,可以在printf语句里转。 return 0;
}

(4)

#include<cstdio>
#include<cmath>
using namespace std;
int main(){double a=1,b=-100,c=2400;double delta,ans;delta=pow(b,2)-4*a*c;ans=(-b+sqrt(delta))/(2*a);ans=110-int(ans+0.5);printf("%d",int(ans));//教训! return 0;
}

(5)

#include<cstdio>
using namespace std;
int main(){int t,n;scanf("%d %d",&t,&n);printf("%d",t*n);return 0;
}

(6)

#include<cstdio>
using namespace std;
int main(){char ch,ans;scanf("%c",&ch);ans=ch-'a'+'A';printf("%c",ans);return 0;
}

(7)

#include<cstdio>
using namespace std;
int main(){double p;int q,a,b,c,d;scanf("%lf",&p);q=int(p*10);a=q/1e3;b=q/100%10;c=q/10%10;d=q%10;printf("%d.%d%d%d",d,c,b,a);return 0;
}

(8)

#include<cstdio>
using namespace std;
int main(){char a,b,c,d;scanf("%c%c%c.%c",&a,&b,&c,&d);printf("%c.%c%c%c",d,c,b,a);return 0;
}

习题2-4

#include<cstdio>
using namespace std;
int main(){float a=0.1;printf("%.10f",int(2-a*a*100));return 0;
}

习题2-5

小玉买文具。班主任给小玉一个任务,到文具店里买尽量多的签字笔。已知一支签字笔的价格是1元9角,而班主任给小玉的钱是a元b角,小玉想知道,她最多能买多少支签字笔呢?

#include<iostream>
using namespace std;
int main(){int a,b,n1,n2,ans;cin>>a>>b;n1=1*10+9;n2=a*10+b;ans=n2/n1;cout<<ans<<endl;return 0;
}

习题2-6

Apples Prologue。八尾勇喜欢吃苹果。她现在有m个苹果,吃完一个苹果需要花费t min,吃完一个后立即开始吃下一个。现在时间过去了s min,请问她还有几个完整的苹果?

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int main(){int m,t,s,ans;double Max;cin>>m>>t>>s;Max=max(m*t-s,0);cout<<ceil(1.0*Max/t)<<endl;return 0;
}

拓展知识

头文件 #include<algorithm>

max(a,b)

取整数a和整数b中的最大值,注意不能用于浮点数

min(a,b) 取整数a和整数b中的最小值
swap(a,b) 交换整数a和整数b的值

习题2-7

对角线。对于一个有N个顶点的凸多边形,它的任何三条对角线都不会交于一点。请求出这个多边形内部对角线交点的个数。

#include<iostream>
using namespace std;
int main(){unsigned long long n;cin>>n;cout<<n*(n-1)/2*(n-2)/3*(n-3)/4<<endl;return 0;
}

【洛谷】洛谷深基学习记录 第二章 顺序结构程序设计相关推荐

  1. 《SysML精粹》学习记录--第二章

    <SysML精粹>学习记录 第二章:系统建模语言概览 SysML介绍 SysML与UML SysML图概览 SysML通用图 小结 第二章:系统建模语言概览 SysML介绍   SysML ...

  2. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  3. Python基础练习题--第二章 顺序结构

    第二章 顺序结构 目录 1007:[例2.1]交换a和B的值 1008:[例2.2]打招呼Hello 1009:[例2.3]购买笔记本 1010:[例2.4]最适宜运动心率 1011:[例2.5]求3 ...

  4. Solidity学习记录——第二章

    Solidity学习记录 第一章 创建生产僵尸的工厂 第二章 设置僵尸的攻击功能 第三章 编写DAPP所需的基础理论 第四章 完善僵尸功能 第五章 ERC721 标准和加密资产 文章目录 Solidi ...

  5. 洛谷 深基 第1部分 语言入门 第2章 顺序结构程序设计

    P5703 [深基2.例5]苹果采购 [深基2.例5]苹果采购 - 洛谷 P5703 [深基2.例5]苹果采购(python3实现) P5703 [深基2.例5]苹果采购(python3实现)_青少年 ...

  6. 第二章 循环结构程序设计

    第二章 笔记 aabb 阶乘之和 水仙花数 韩信点兵 倒三角形 子序列的和 分数化小数 排列 扩展 笔记 1.函数 double floor(double x) 向下取整,返回不超过x的最大整数:函数 ...

  7. C语言深度剖析书籍学习记录 第二章 符号

    \ 连接符号,// \  可以把下一行也注释调 编译器 删除注释时,会使用空格进行替代  

  8. 编译原理语法分析_斯坦福大学《编译原理》学习记录 - 第二章:语法分析器

    05-01: Introduction to Parsing 语法分析 parser的作用: 05-02: Context Free Grammars 上下文无关文法 CFG(上下文无关文法)回答了一 ...

  9. 《算法竞赛入门经典》 第二章 循环结构程序设计 习题

    注:这里为了便于测试,直接使用stdin,stdout进行输出,没有进行文件读写操作. 习题2-1 位数(digit) 输入一个不超过10^9的正整数,输出它的位数.例如12735的位数是5.请不要使 ...

最新文章

  1. linux 下 vi 块编辑
  2. linux+tomcat+oracle_第二步
  3. 为Java应用程序编写数据驱动的测试
  4. android struts2 图片上传,xhEditor struts2实现图片上传
  5. FTP安装及用户及权限配置
  6. 【Java从0到架构师】Nginx 拓展 - HTTPS支持、缓存、Http请求防盗链、限流、高可用(Keepalived)
  7. “Oracle 不会放弃 Java!”
  8. qt读oracle时间戳,QT解析时间戳与微秒级精度
  9. ios开发学习--选项卡(Tab Bar) 效果源码分享--系列教程
  10. Reinforcement Learning by David Silver 学记记录
  11. h5策划书_一个成功的H5策划方案有哪些注意的点
  12. java 浏览器设置字体大小_css 字体设置(不同浏览器设置效果)
  13. android 8 奕骆,这才是超级手机 奕骆6000mAh称霸全球 USB Type-C
  14. IEEE会议latex模板参考文献转为bibitem
  15. 计算机无法连接网络显示错误651,电脑连接路由器提示错误651解决办法
  16. exe4j工具使jar包生成exe可执行文件
  17. PS修图台式机装机方案
  18. One Chin Per Person
  19. 《Whale 帷幄隐私保护白皮书》重磅发布!
  20. 手把手教你 springboot 自定义注解 (含代码)

热门文章

  1. [每日一题]C语言:将输入的一句话的单词倒置,但标点符号不倒置
  2. 【MySQL】—入门介绍
  3. JavaScript学习--我的第一次作业
  4. 读书笔记:-----《第四次工业革命转型的力量》
  5. Centos 查看 CPU 核数 和 型号 和 主频
  6. 带轮轮毂长度l和带轮宽b表_B型V带轮的轮缘宽B_轮毂孔径D和轮毂长L.doc
  7. Qgis教程12:动态展示
  8. 【C4D】材质+渲染自学宝典(纯干货)
  9. 【Ubuntu】虚拟机屏幕大小共享文件
  10. Android 华为手机获取相册图片路径,获取不到问题