c++ primer5 第一章练习题答案 尚未完成 后续补充(基本已经完结)

1.3

//1.3
#include <iostream>

//如果加上这一行就不需要 std::cout 直接cout就可以了总是忘记 加std 这里出于和书籍
上代码配套 所以还是 std::cout std::endl 这样吧 _(:з」∠)_
using namespace std;

int main(){

        std::cout << "hello world" << std::endl;
        return 0;
}

1.4

#include <iostream>
#include <stdio.h>
using namespace std;
int main(){


        std::cout<<"请输入2个数字"<<endl;

        int a=0;
        int b=0;
        std::cin>>a;
        std::cin>>b;
        //printf("%d\n",a);
        //cout << a<<endl;
        std::cout<<"one number is " <<a<<std::endl;
        std::cout <<"two number is " <<b<<std::endl;
        std::cout<<"one * two = " << a*b<<endl;

        //好想用 printf啊啊啊啊啊啊 得引用stdio.h头文件
        return 0;

}

1.5 没啥意义 跳过了

我1.4和1.5 基本上一样 

1.6 如果加了分号 需要 重新std::cout

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

其实就是把第一行和第二行的分号给他去掉 就没别的了

继续跳过毫无意义

1.9

#include <iostream>
using namespace std;

int main(){

        int num=50,sum=0;
        while(num<=100){

                sum+=num;
                num++;
        }

        cout <<"50+51+...100="<<sum<<endl;

        return 0;
}

     1.10

#include <iostream>
using namespace std;
int main(){

        int num=10;

        while(num>=0){

                cout<<num<<endl;
                num--;

        }

        return 0;
}
~           
#include <iostream>
using namespace std;
int main(){


	cout<<"请输入2个数在2个数"<<endl;

	int a=0,b=0,temp=0;

	cin>>a;
	cin>>b;
	if(a<b){

		temp=a;
		a=b;
		b=temp;
		
	}

	cout <<"输入的范围之内的递减值"<<endl;
	while(a>=b){
		
		cout<<a<<endl;
		a--;	

	}


	return 0;
}

1.12那个就是从-100+到100 最后输出结果等于0  - - 

1.13没心情重新刷 跳过

1.16  

#include <iostream>

using namespace std;

int main(){

        int num=0,sum=0;


        cout <<"请输入一组数字然后求和"<<endl;

        while(cin>>num){

                sum = num+sum;

        }


        cout<<"求和结果为="<<sum<<endl;

        return 0;

}

1.17-1.18自己的代码如下 没按参考书

#include <iostream>

using namespace std;

int main(){
        cout<<"统计输入一组连续数字的出现的个数"<<endl;

        int num=0,count=0,last=0,current=0,now_count=0;

        while(cin>>num){
                //判断是否是第一次 用了多个变量 防止一上来是0和初始值冲突
                now_count++;
                //赋值给当前值
                current = num;
                //是否第一次
                if(now_count==1){
                        //保存当前值 存在下一次循环 当上一个值判断
                        last=current;
                        //计数器+1
                        count++;

                //不是第一次
                }else{

                        //如果和上一个之前相等 计数器+1
                        if(last==current){
                                count++;
                        //不相等 输出 计数器初始化
                        }else{
                                cout<<last<<"出现次数为"<<count<<endl;
                                count = 1;
                        }
                        //赋值给上下一次循环的前一个 说白了就是存储当前值 下一次循环当上一个值用
                        last=current;
                }
        }
        //最后不满足条件是 输出最后一个数字
        cout<<last<<"出现次数为"<<count<<endl;
        return 0;

}

1.19那个 可以直接用1.10的代码 已经做好处理 重新贴一下 多一个临时变量 把值大的赋值给a 值小的赋值给b

#include <iostream>
using namespace std;
int main(){


	cout<<"请输入2个数在2个数"<<endl;

	int a=0,b=0,temp=0;

	cin>>a;
	cin>>b;
	if(a<b){

		temp=a;
		a=b;
		b=temp;
		
	}

	cout <<"输入的范围之内的递减值"<<endl;
	while(a>=b){
		
		cout<<a<<endl;
		a--;	

	}


	return 0;
}

120 Salse_item.h


#ifndef SALESITEM_H
// we're here only if SALESITEM_H has not yet been defined 
#define SALESITEM_H
 
 
// Definition of Sales_item class and related functions goes here
#include <iostream>
#include <string>
 
class Sales_item {
	// these declarations are explained section 7.2.1, p. 270 
	// and in chapter 14, pages 557, 558, 561
	friend std::istream& operator>>(std::istream&, Sales_item&);
	friend std::ostream& operator<<(std::ostream&, const Sales_item&);
	friend bool operator<(const Sales_item&, const Sales_item&);
	friend bool
		operator==(const Sales_item&, const Sales_item&);
public:
	// constructors are explained in section 7.1.4, pages 262 - 265
	// default constructor needed to initialize members of built-in type
#if defined(IN_CLASS_INITS) && defined(DEFAULT_FCNS)
	Sales_item() = default;
#else
	Sales_item() : units_sold(0), revenue(0.0) { }
#endif
	Sales_item(const std::string &book) :
		bookNo(book), units_sold(0), revenue(0.0) { }
	Sales_item(std::istream &is) { is >> *this; }
public:
	// operations on Sales_item objects
	// member binary operator: left-hand operand bound to implicit this pointer
	Sales_item& operator+=(const Sales_item&);
 
	// operations on Sales_item objects
	std::string isbn() const { return bookNo; }
	double avg_price() const;
	// private members as before
private:
	std::string bookNo;      // implicitly initialized to the empty string
#ifdef IN_CLASS_INITS
	unsigned units_sold = 0; // explicitly initialized
	double revenue = 0.0;
#else
	unsigned units_sold;
	double revenue;
#endif
};
 
// used in chapter 10
inline
bool compareIsbn(const Sales_item &lhs, const Sales_item &rhs)
{
	return lhs.isbn() == rhs.isbn();
}
 
// nonmember binary operator: must declare a parameter for each operand
Sales_item operator+(const Sales_item&, const Sales_item&);
 
inline bool
operator==(const Sales_item &lhs, const Sales_item &rhs)
{
	// must be made a friend of Sales_item
	return lhs.units_sold == rhs.units_sold &&
		lhs.revenue == rhs.revenue &&
		lhs.isbn() == rhs.isbn();
}
 
inline bool
operator!=(const Sales_item &lhs, const Sales_item &rhs)
{
	return !(lhs == rhs); // != defined in terms of operator==
}
 
// assumes that both objects refer to the same ISBN
Sales_item& Sales_item::operator+=(const Sales_item& rhs)
{
	units_sold += rhs.units_sold;
	revenue += rhs.revenue;
	return *this;
}
 
// assumes that both objects refer to the same ISBN
Sales_item
operator+(const Sales_item& lhs, const Sales_item& rhs)
{
	Sales_item ret(lhs);  // copy (|lhs|) into a local object that we'll return
	ret += rhs;           // add in the contents of (|rhs|) 
	return ret;           // return (|ret|) by value
}
 
std::istream&
operator>>(std::istream& in, Sales_item& s)
{
	double price;
	in >> s.bookNo >> s.units_sold >> price;
	// check that the inputs succeeded
	if (in)
		s.revenue = s.units_sold * price;
	else
		s = Sales_item();  // input failed: reset object to default state
	return in;
}
 
std::ostream&
operator<<(std::ostream& out, const Sales_item& s)
{
	out << s.isbn() << " " << s.units_sold << " "
		<< s.revenue << " " << s.avg_price();
	return out;
}
 
double Sales_item::avg_price() const
{
	if (units_sold)
		return revenue / units_sold;
	else
		return 0;
}
#endif

上面那段头文件 我这里叫做120.h 为了配合1.20的这个练习题

#include <iostream>
#include "120.h"
using namespace std;

int main(){


        Sales_item item;
        cin>>item;
        cout<<item<<endl;

        return 0;


}
~                                                                               
~            

1.21

#include <iostream>
#include "120.h"
using namespace std;

int main(){


        Sales_item item1,item2;
        cin>>item1;
        cin>>item2;

        if(item1.isbn() == item2.isbn()){
        //if(item1.isbn()==item2.isbn()){

                cout<<"item1+item2="<<item1+item2<<endl;

        }
        return 0;






}
~                                                                               
~              

1.22 

#include <iostream>
#include "120.h"
using namespace std;

int main(){


        Sales_item item1,item2,item3;

        //模仿之前参考书的

        if(cin>>item1){

                while(cin>>item2){


                        if(item1.isbn() != item2.isbn()){

                                cout<<"item1+item2="<<item1<<endl;
                                item1=item2;

                        }else{

                                item1+=item2;

                        }


                }
            
            
            
        }   
           

        cout<<"item1+item2="<<item1<<endl;
        return 0;

    
    

    
    
}   

1.23


#include <iostream>
#include "120.h"
using namespace std;

int main(){


        Sales_item item1,item2,item3;

        int num=1;

        //模仿之前参考书的

        if(cin>>item1){

                while(cin>>item2){


                        if(item1.isbn() != item2.isbn()){

                                cout<<item1.isbn()<<"num="<<num<<endl;
                                item1=item2;
                                num=1;

                        }else{

                                item1+=item2;
                                num++;
                        }


                }



        }


        cout<<item1.isbn()<<"num="<<num<<endl;
        return 0;






}

1.25 不想做了 没啥意思 按照实例敲一遍的话  

第一章全部结束

猜你喜欢

转载自blog.csdn.net/ljwy1234/article/details/82665677