【自用记录】C++ Primer 第一章 开始

本文提供了一系列C++编程练习,涉及编译程序、返回值修改、输出控制、运算符使用、循环结构(for和while)、输入输出处理、错误信息理解和自定义类型如Sales_item的使用。通过这些练习,学习者可以深入理解C++的基础知识和实践技巧。
摘要由CSDN通过智能技术生成

目录

练习1.1:编译并运行第2页的main程序

练习1.2:改写程序,让它返回-1

练习1.3:打印Hello, World

 练习1.4:编写程序使用乘法运算符*,来打印两个数的积

练习1.5:重写程序,将每个运算对象的打印操作放在一条独立的语句中

练习1.6:解释下面程序片段是否合法,修正

练习1.7:编译一个包含不正确的嵌套注释的程序

练习1.8:指出下列哪些是合法的:

 练习1.9:使用while循环将50到100的整数相加

 练习1.10:编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数

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

练习1.12:下面的for循环完成了什么功能?sum的终值?

 练习1.13:使用for循环重做第11页的所有练习

练习1.14:for循环和while循环两种形式的优缺点是什么?

练习1.15:编写程序,熟悉编译器生成的错误信息

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

注意:当从键盘向程序输入数据时,在Windows系统中,输入文件结束符的方法是敲Ctrl+Z,然后按Enter或Return键。

练习1.17/练习1.18:如果输入的所有值都是相等的,此程序(统计在输入中每个值连续出现了多少次)会输出什么?如果没有重复值,输出又是什么样的?

练习1.19:修改1.11的程序,使其能处理用户输入的第一个数比第二个数小的情况

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

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

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

练习1.23:编写程序,读取多条销售记录,并统计每个ISBN有几条销售记录

练习1.24:输入表示多个ISBN的多条销售记录来测试上一个程序,每个ISBN的记录应该聚在一起

练习1.25:编译并运行本节给出的书店程序


练习1.1:编译并运行第2页的main程序

#include <iostream>
int main()
{
    return 0;
}

练习1.2:改写程序,让它返回-1

#include <iostream>
int main()
{
	return -1; 
}

练习1.3:打印Hello, World

#include <iostream>
int main()
{
	std::cout << "Hello, World" << std::endl;
	return 0; 
}

 练习1.4:编写程序使用乘法运算符*,来打印两个数的积

#include <iostream>
int main()
{
	std::cout << "Enter two numbers:" << std::endl;
	int v1 = 0, v2 = 0;
	std::cin >> v1 >> v2;
	std::cout << " The product of " 
	          << v1 << " and " << v2 
	          << " is " << v1*v2 << std::endl;
	return 0; 
}

练习1.5:重写程序,将每个运算对象的打印操作放在一条独立的语句中

#include <iostream>
int main()
{
	std::cout << "Enter two numbers:" ;
	std::cout << std::endl;
	int v1 = 0, v2 = 0;
	std::cin >> v1 >> v2;
	std::cout << " The product of " ;
	std::cout << v1 ;
	std::cout << " and " ;
	std::cout << v2 ;
	std::cout << " is " ;
	std::cout << v1*v2 ;
	std::cout << std::endl;
	return 0; 
}

 

练习1.6:解释下面程序片段是否合法,修正

不合法

#include <iostream>
int main()
{
	std::cout << "Enter two numbers:" << std::endl;
	int v1 = 0, v2 = 0;
	std::cin >> v1 >> v2;
	std::cout << "The sum of " << v1
	          << " and " << v2
	          << " is " << v1 + v2 << std::endl;
	return 0; 
}

 

练习1.7:编译一个包含不正确的嵌套注释的程序

#include <iostream>
/*
 *注释/* */
 *
 */ 
  
int main()
{
	return 0; 
}

练习1.8:指出下列哪些是合法的:

1、2、4合法,3不合法

#include <iostream>
int main()
{
	std::cout << "/*";   
	std::cout << "*/";  
	std::cout << /* "*/" /* "/*" */; 
	return 0; 
}

改写3:

#include <iostream>
int main()
{
	std::cout << /* "*/" */ ";
	return 0; 
}

 

 练习1.9:使用while循环将50到100的整数相加

#include <iostream>
int main()
{
	int sum = 0, val = 50;
	while(val <= 100)
	{
		sum += val;
		++val;
	}
	std::cout << "Sum of 50 to 100 inclusive is "
	          << sum << std::endl;
	return 0; 
}

 练习1.10:编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数

#include <iostream>
int main()
{
	int val = 10;
	while(val >= 0)
	{
		std::cout << val-- << std::endl;
	}
	return 0; 
}

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

#include <iostream>
int main()
{
	std::cout << "Enter two numbers:" << std::endl;
	int v1 = 0, v2 = 0;
	std::cin >> v1 >> v2;
	if(v1 < v2)
	{
		while(v1 <= v2)
		{
			std::cout << v1 << std::endl;
			++v1;
		}
	}
	else{
		while(v2 <= v1)
		{
			std::cout << v2 << std::endl;
			++v2;
		}
	}
	return 0; 
}

练习1.12:下面的for循环完成了什么功能?sum的终值?

sum = 0

#include <iostream>
int main()
{
	int sum = 0;
	for(int i = -100; i <= 100 ; ++i)
	    sum += i;
	std::cout << sum << std::endl;
	return 0; 
}

 

 练习1.13:使用for循环重做第11页的所有练习

(1)将50到100的整数相加

#include <iostream>
int main()
{
	int sum = 0;
	for(int i = 50; i <= 100; ++i)
	   sum += i;
	std::cout << sum << std::endl;
	return 0; 
}

(2) 编写程序,使用递减运算符在循环中按递减顺序打印出10到0之间的整数

#include <iostream>
int main()
{
	for(int i = 10; i >= 0; i--)
	   std::cout << i << std::endl;
	return 0; 
}

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

#include <iostream>
int main()
{
	std::cout << "Enter two numbers:" << std::endl;
	int v1 = 0, v2 = 0;
	std::cin >> v1 >> v2;
	if(v1 < v2)
	{
		for(v1 ; v1 <= v2; ++v1)
		   std::cout << v1 << std::endl;
	}
	else
	{
		for(v2 ; v2 <= v1; ++v2)
		   std::cout << v2 << std::endl;
	}
	return 0; 
}

练习1.14:for循环和while循环两种形式的优缺点是什么?

练习1.15:编写程序,熟悉编译器生成的错误信息

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

#include <iostream>
int main()
{
	std::cout << "Enter your numbers:" << std::endl;
	int sum = 0, value = 0;
	while(std::cin >> value)
	     sum += value;
	std::cout << " Sum is " << sum << std::endl;
	return 0; 
}

注意:当从键盘向程序输入数据时,在Windows系统中,输入文件结束符的方法是敲Ctrl+Z,然后按Enter或Return键。

练习1.17/练习1.18:如果输入的所有值都是相等的,此程序(统计在输入中每个值连续出现了多少次)会输出什么?如果没有重复值,输出又是什么样的?

#include <iostream>
int main()
{
	std::cout << "Enter your numbers: " << std::endl;
	int currVal = 0, val = 0;
	if(std::cin >> currVal)
	{
		int cnt = 1;
		while(std::cin >> val)
		{
			if(val == currVal)
			     ++cnt;
			else
			{
				std::cout << currVal << " occurs "
				          << cnt << " times " << std::endl;
				currVal = val;
				cnt = 1;
			}
		}
		std::cout << currVal << " occurs "
		          << cnt << " times " << std::endl;
	}
	return 0; 
}

练习1.19:修改1.11的程序,使其能处理用户输入的第一个数比第二个数小的情况

1.11编写的程序已可处理此情况。

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

#include <iostream>
#include "Sales_item.h"
int main()
{
	Sales_item item;
	while (std::cin >> item)
	{
		std::cout << item << std::endl;
	}
	return 0;
}

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

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

 

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

#include <iostream>
#include "Sales_item.h"
int main()
{
	Sales_item item, total;
	std::cin >> total;
	while (std::cin >> item)
	{
		total += item;
	}
	std::cout << total << std::endl;
	return 0;
}

练习1.23:编写程序,读取多条销售记录,并统计每个ISBN有几条销售记录

 自己的方法未成功。以下是参考代码:

#include<iostream>
#include "Sales_item.h"
 
int main() 
{
	Sales_item trans1, trans2;
	int num = 1;
    std::cout << "请输入若干条销售记录" << std::endl;
	if (std::cin >> trans1)
   {
		while (std::cin >> trans2)
        {
			if (compareIsbn(trans1, trans2))//Isbn相同
				num++;
			else 
            {
				std::cout << trans1.isbn() << "共有" << num << "条销售记录" << std::endl;
				trans1 = trans2;
				num = 1;
			}
		}//while
		std::cout << trans1.isbn() << "共有" << num << "条销售记录" << std::endl;
	}
	else
   {
		std::cout << "输入数据有误" << std::endl;
		return -1;
	}
	return 0;
}
 
 

练习1.24:输入表示多个ISBN的多条销售记录来测试上一个程序,每个ISBN的记录应该聚在一起

练习1.25:编译并运行本节给出的书店程序

#include <iostream>
#include "Sales_item.h"
 
int main()
{
    Sales_item total;  //保存下一条交易记录的变量
    //读入第一条交易记录,并确保有数据可以处理
    if(std::cin >> total)
    {
        Sales_item trans;   //保存和的变量
        //读入并处理剩余交易记录
        while(std::cin >> trans)
        {
            //如果我们仍在处理相同的书
            if(total.isbn() == trans.isbn())
            {
                total += trans;  //更新总销售额
            }
            else
            {
                //打印前一本书的结果
                std::cout << total << std::endl;
                total = trans;  //total现在表示下一本书的销售额
            }
        }
        std::cout << total << std::endl;   //打印最后一本书的结果
    }
    else
    {
        //没有输入!警告读者
        std::cerr << "No data?!" << std::endl;
        return -1;   //表示失败
    }
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值