C++视频课程小结(1)
2016-02-06 16:26
447 查看
C++远征之起航篇
章节介绍:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/d5aa09c2daa1c5c1456bba9b288cfbf8.png)
每章小结:
第一章:C++诞生于贝尔实验室,C++包含C语言。第二章:介绍了IDE环境(虽然没怎么懂),还推荐使用visual stdio 2010 旗舰版(姑且下了安装包,但还是在用devC++)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/378bce57204c3f988cc5f662c440a44f.png)
第三章:见到了一些新的东西(原来看不懂一些同学的代码,原来就是C++啊):
#include<stdlib.h> #include<iostream> using namespace std; int main() { cout<<"Hello C++"<<endl; system("pause"); return 0; }
第四章:一看就知道是重点章节啊。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/ba1627d0fc2f03d4cf36002088b6afba.png)
C++的新特性:1、新的数据类型:布尔型(bool),也叫逻辑类型,优点是会让代码更简洁,更易懂。2、新的初始化方法:直接初始化,也就是
int x(1024);这样,至于好处会在接下来的课程中介绍,姑且先记着。3、随用随定义:这个好处就不用说了,
for(int i;;)也是合法的(用c的时候老是忘记定义i)。
C++的输入输出方式:cin和cout,也是很好记。使用除了要声明
#include<iostream>,还要有
using namespce std;(因为没有.h吗,像要用
system("pause");,直接
#include<stdlib.h>就好)。输入一个量存到变量x里,只要
cin>>x;,不需要再强调量的类型(话说定义x的时候还是要考虑类型不是)。输出也是直接
cout<<x<<endl;,
endl就相当于
\n,当然也可以按要求的类型输出,像
cout<<det<<x<<endl;就是按十进制输出。
C++之namespace:感觉是个很重要的东西,这样调用不同函数里相同名称的东西也没问题。定义函数的时候加上
namespace 空间名{}就好。使用的时候可以先声明说
using namespace 空间名;,或者用到的时候加上
空间名::。像输入输出没写
using namespace std;的话,就要写成
std::cin>>x;,
std::cout<<x<<std::endl;。
练习:
C++#include<stdlib.h> #include<iostream> using namespace std; int main() { int x,y; cin>>x>>y; cout<<x+y<<endl; system("pause"); return 0; }
C
题目:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202005/05/0cb24c8d63450cff2b1441432effa10c.png)
思路:题目看了半天也没怎么懂,只知道是多项式的加法运算。还有输入有两行,每行输入的第一个数决定了每行要输入的组数。一组有两个数,分别表示多项式每项的次数和系数(反正就是要对应相加的意思,从样例大概来看是这样)。想到这里我又想到用数组来解决:先定义一个足够长的数组(题目是0~1000,那就1001),并初始化为0,储存第一行时把次数和数组名对应起来,再定义一个数组一样存第二行,这样就可以把对应的数相加。考虑到输出,还要记录一下最高的次数是多少(我认为是从最高次数按顺序倒输,样例是这样的,看不懂就猜。。。)。还有就是小数的问题要注意数据类型,输出也是要控制%.1lf。再有就是输出的格式,注意空格。第一次尝试样例是过了,但交上去只对了两个。重新看题目注意到了要非零,所以也不一定是按顺序倒输,还要有一个判断才行。最终的代码长这样:
#include<stdio.h> int main() { int k,i,j=0,x,max=0; double a[1001],b[1001]; scanf("%d",&k); for(i=0;i<k;i++) { scanf("%d",&x); if(x>max)max=x; scanf("%lf",&a[x]); } //对应输入第一行数据,max记录第一行最高次数。 scanf("%d",&k); for(i=0;i<k;i++) { scanf("%d",&x); if(x>max)max=x; scanf("%lf",&b[x]); } //对应输入第二行数据,max记录两行中最高的次数。 for(i=0;i<max+1;i++) { b[i]=b[i]+a[i]; if(b[i]!=0)j++; } //利用max对应次数相加,j记录非零个数。 printf("%d",j); //按要求输出结果中的非零个数。 for(i=max;i>=0;i--) { if(b[i]!=0) printf(" %d %.1lf",i,b[i]); } //判断并从最高次数开始输出结果。 return 0; }
所想:题目要认真看,看不懂就猜,猜着猜着就出来了(至今没搞懂这多项式的加法还能这么算,但题目就是这个意思)。
相关文章推荐
- C++SIGUSR1和SIGUSR2的学习
- IOS学习第十三天 OC语言 封装,继承,多态
- IOS学习第十二天 OC语言 OC对象和方法
- 【C++11】完美转发的使用
- 【C++11】POD数据类型
- HDU 2037 今年暑假不AC
- C语言 优先级
- C++重载类型转换操作符
- WIndow下使用QT C++开发生成带Logo的二维码的程序
- C++ Primer学习笔记——顺序容器操作
- C语言scanf函数详解
- c++ const在重载overload和覆盖override上使用区别
- c++primer5e学习笔记,第三章
- C语言实现循环队列
- 解决VS2010子目录中的.cpp文件引用上一级目录的stdafx.h找不到定义的问题
- C语言可变参函数的实现原理浅析
- 快速排序---C语言实现
- c++拷贝函数
- [c++基础]valarray模板详解
- 栈的简单实现——使用C++容器库(STL Stack)