C++视频课程小结(1)

C++远征之起航篇

章节介绍:

每章小结:

  • 第一章:C++诞生于贝尔实验室,C++包含C语言。

  • 第二章:介绍了IDE环境(虽然没怎么懂),还推荐使用visual stdio 2010 旗舰版(姑且下了安装包,但还是在用devC++)。

  • 第三章:见到了一些新的东西(原来看不懂一些同学的代码,原来就是C++啊):

      #include<stdlib.h>
      #include<iostream>
      using namespace std;
      int main()
      {
       cout<<"Hello C++"<<endl;
       system("pause");
       return 0;
      }
    
  • 第四章:一看就知道是重点章节啊。

  • 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就相当于 ,当然也可以按要求的类型输出,像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
    题目:

    思路:题目看了半天也没怎么懂,只知道是多项式的加法运算。还有输入有两行,每行输入的第一个数决定了每行要输入的组数。一组有两个数,分别表示多项式每项的次数和系数(反正就是要对应相加的意思,从样例大概来看是这样)。想到这里我又想到用数组来解决:先定义一个足够长的数组(题目是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;
       }
    
  • 所想:题目要认真看,看不懂就猜,猜着猜着就出来了(至今没搞懂这多项式的加法还能这么算,但题目就是这个意思)。

原文地址:https://www.cnblogs.com/mingyueanyao/p/5184171.html