码迷,mamicode.com
首页 > 编程语言 > 详细

19天学完C++Primer【1】

时间:2016-01-02 00:54:23      阅读:599      评论:0      收藏:0      [点我收藏+]

标签:

1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行第2页的main程序。

解答:跳过不影响学习。

 

1.2:改写程序,让它返回-1。返回值-1通常被当做程序错误的标示。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。

解答:跳过不影响学习。

 

1.3:编写程序,在标准输出上打印Hello, World.

解答:

include <isotream>
using namespace std;
int main()
{
     cout<<”Hello, World”<<endl;
     return 0;
}

 

1.4:我们的程序使用加法运算符+来将两个数相加。编写程序使用乘法运算符*,来打印两个数的积。

解答:

 

include <isotream>
using namespace std;
int main()
{
     int v1=0,v2=0;
     cin>>v1>>v2;
     cout<<”The sum of”<<v1<<”and”<<dv2<<”is”<<v1-v2<<endl;   
     return 0;
}

 

1.5:我们将所有输出操作放在一条很长的语句中。重写程序,将每个运算对象的打印操作放在一条独立的语句中。

解答:

include <isotream>
using namespace std;
int main()
{
     int v1=0,v2=0;
     cin>>v1;
     cin>>v2;
     cout<<”The sum of”;
     cout<<v1;
     cout<<”and”;
     cout<<v2;
     cout<<”is”;
     cout<<v1-v2;
     cout<<endl;   
     return 0;
}

 

1.6:解释下面程序片段你是否合法。

std::cout<<”The sum of”<<v1;
<<”is”<<v1+v2<<std::endl; 

 

如果程序是合法的,它输出什么?如果程序不合法,原因何在?应该如何修正?

解答:不合法。

std::cout<<”The sum of”<<v1;
std::cout<<”is”<<v1+v2<<std::endl; 

 

1.7:编译一个包含不正确的嵌套注释的程序,观察编译器返回的错误信息。

解答:

 

1.8:指出下列哪些输出语句是合法的(如果有的话)

std::cout<<”/*”;
std::cout<<”*/”;
std::cout<</**/”*/;
std::cout<</**//*”/*”*/;  

 

预测编译这些语句会产生什么样的结果,实际编译这些语句来验证你的答案(编写一个小程序,每次将上述一条语句作为其主体),改正每个编译错误。

解答:12是合法的。会分别输出:/**/

 

 

1.9:编写程序,使用while循环将50100的整数相加。

解答:

include <isotream>
using namespace std;
int main()
{
    int i=50,sum=0;
    while(i<=100)
    {
       sum += i++;
    }
    return 0;
}

 

1.10:除了++运算符将运算对象的值增加1之外,还有一个递减运算符(--)实现将值减少1。编写程序,使用递减运算符咋循环中按递减顺序打印100之间的整数。

解答:

include <isotream>
using namespace std;
int main()
{
    int i=10;
    while(i>=0)
    {
       cout<<i<<endl;
       i--;
    }
    return 0;
}

 

1.11:编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数。

解答:

#include <iostream>
using namespace std;
int main()
{
  int v1,v2;
  cin>>v1>>v2;
  for(int i=v1;i<=v2;i++)
  cout<<i<<endl;
  return 0;
}

 

1.12:下面的for循环完成了什么功能?sum的终值是多少?

int sum=0;
for(int i = -100;i<=100;++i)
    sum+=i

 

解答:完成了-100自加1到100的运算,终值是0。

1.13:使用for循环重做1.4.1节中的所有练习(第11页)。

解答:

sum=0;
for(int i=50;i<=100;i++)
{
sum+=i;
}

 

for(int i=10;i>=0;i--)
{
cout<<i<<endl;
}

 

for(int i=a;i<b;i++)
{
cout<<i<<endl;
}

 

 

1.14:对比for循环和while循环,两种形式的优缺点各是什么?

解答:在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。两种形式各有优点,但它们在功能上是等价的,可以相互转换。

1.15:编写程序,包含第14页“再探编译”中讨论的常见错误。熟悉编译器生成的错误信息。

解答:

1.16:编写程序,从cin读取一组数,输出其和。

解答:

while(cin>>i)
{
  sum+=i;
}
cout<<sum;

 

1.17:如果输入的所有值都是相等的,本节的程序会输出什么?如果没偶有重复值,输出又会怎样?

解答:

#include <iostream>
using namespace std;
int main()
{
  int currVal=0,val=0;
  if(cin>>currVal){
  int cnt=1;
  while(cin>>val){
    if(val==currVal)
        ++cnt;
    else{
        cout<<currVal<<”occurs”<<cnt<<”times”<<endl;
        currVal=val;
        cnt=1;
      }
    cout<<currVal<<”occurs”<<cnt<<”time”<<endl;
    }
  retun 0;
  }
}

 

1.18:编译并运行本节的程序,给它输入全部相等的值。再次运行程序,输入没有重复的值。

解答:

 

1.19:修改你为1.4.1节练习1.10所编写的程序(打印一个范围内的数),使其能处理用户输入的第一个数比第二个数小情况。

解答:

#include <iostream>
using namespace std;
int main()
{
  int v1,v2;
  cin>>v1>>v2;
  if(v2<v1)
  {
    int tmp=v1;
    v1=v2;
    v2=tmp;
  }
  for(int i=v1;i<=v2;i++)
    cout<<i<<endl;
  return 0;
}

 

 

1.20:在网站http://www.informit.com/title/0321714113上,第1章的代码目录中包含了头文件Sales_item.h。将它拷贝到你自己的工作目录中。用它编写一个程序,读取一组是书籍销售记录,将每条记录打印到标准输出上。

解答:

#include <iostream>
#include "Sales_item.h"
using namespace std;
int main()
{
  Sales_item book;
  cin >> book;
  cout << book << endl;
  system("pause");
  return 0;
}

 

1.21:编写程序,读取两个ISBN相同的Sales_item对象,输出它们的和。

解答:

#include <iostream>
#include "Sales_item.h"
using namespace std;
int main()
{
  Sales_item item1, item2;
  cin >> item1>>item2;
  cout << item1+item2 << endl;
  system("pause");
  return 0;
}

 

1.22:编写程序,读取多个具有相同ISBN的销售记录,输出所有记录的和。

解答:

 

1.23:编写程序,读取多条销售记录,并统计每个ISBN(每本书)有几条销售记录。

解答:

#include <iostream>
#include "Sales_item.h"
using namespace std;
int main(void)
{
  Sales_item sum;
  if (cin >> sum){
    Sales_item book;
    while (cin >> book){
      if (sum.isbn() == book.isbn())
        sum += book;
      else{
        cout << sum << endl;
        sum = book;
      }
    }
    cout << sum << endl;
  }
  else{
    cerr << "没有数据!" << endl;
    return -1;
    }
  system("pause");
  return 0;
}

 

1.24:输入标识多个ISBN的多条销售记录来测试上一个程序,每个ISBN的记录应该聚在一起。

解答:

1.25:借助网站上的头文件,编译并运行本节给出的书店程序。

解答:

注:头文件Sales_item.h1目录下,其中包含的Version_test.h头文件在上级目录下。

19天学完C++Primer【1】

标签:

原文地址:http://www.cnblogs.com/fastcam/p/5093914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!