C++primer第一章(部分)
1.4.2 for 语句
for (init-statement; condition; expression)
statement;
step1:初始化
step2:判断条件,为真则执行循体;为假则退出循环
step3:执行表达式,回到step2
#include <iostream>
int main()
{
int sum = ;
// 从 1 加到 10
for (int val = ; val <= ; ++val) //循环头:控制循环体的执行次数
// 初始化语句 循环条件 表达式
sum += val; //循环体
//val 在循环结束后不能使用
std::cout << "Sum of 1 to 10 inclusive is "
<< sum << std::endl;
return ;
}
练习1.12:
-100加到100,sum的终值为0
练习1.13:
#include <iostream>
int main()
{
int sum = ;
for (int val = ; val <= ; val++)
sum += val;
std::cout << "Sum of 50 to 100 inclusive is "
<< sum << std::endl;
return ;
}
使用for循环按递减顺序打印10-0
#include <iostream>
int main()
{
int val = ;
for (int val = ; val >= ; --val)
std::cout << val << " ";
std::cout << std::endl;
return ;
}
使用for循环打印输入的两个整数之间的数
#include <iostream>
int main()
{
int a , b;
std::cin >> a >> b;
if(a <= b){
for (; a <= b; a++)
std::cout << a << " ";
}
else{
for (; a >= b; a--)
std::cout << a << " ";
}
return ;
}
练习1.14
#include <iostream>
int main()
{
// 语法错误 syntax error
std::cout << "Read each file." << std::endl:
std::cout << Update master. << std::endl;
std::cout << "Write new master" std::endl;
return ;
}
报错信息:
prog1_15.cc: In function 'int main()':
prog1_15.cc::: error: found ':' in nested-name-specifier, expected '::'
std::cout << "Read each file." << std::endl:
^
prog1_15.cc::: error: 'std::endl' is not a class, namespace, or enumeration
std::cout << "Read each file." << std::endl:
^
prog1_15.cc::: error: 'Update' was not declared in this scope
std::cout << Update master. << std::endl;
^
prog1_15.cc::: error: expected ';' before 'master'
std::cout << Update master. << std::endl;
^
prog1_15.cc::: error: expected ';' before 'std'
std::cout << "Write new master" std::endl;
^
2、类型错误代码
#include <iostream>
int main()
{
// 类型错误 type error
int a = "hello";
return ;
}
报错信息
prog1_15.cc: In function 'int main()':
prog1_15.cc::: error: invalid conversion from 'const char*' to 'int' [-fpermissive]
int a = "hello";
^
3、声明错误代码
#include <iostream>
int main()
{
// 声明错误 declaration error
int v1 = , v2 = ;
std::cin >> v >> v2;
cout << v1 + v2 << std::endl;
return ;
}
报错信息
prog1_15.cc: In function 'int main()':
prog1_15.cc::: error: 'v' was not declared in this scope
std::cin >> v >> v2;
^
prog1_15.cc::: error: 'cout' was not declared in this scope
cout << v1 + v2 << std::endl;
^
prog1_15.cc::: note: suggested alternative:
In file included from prog1_15.cc:::
d:\dev-cpp\mingw64\lib\gcc\x86_64-w64-mingw32\4.8.\include\c++\iostream::: note: 'std::cout'
extern ostream cout; /// Linked to standard output
^
好习惯: 编辑-编译-调试(edit-compile-debug)
1、按照编译器报告的顺序逐个修正错误(原因:单个错误具有传递效应)
2、每修正一个或一小部分明显错误后立即重新编译代码
1.4.3 读取数量不定的输入数据
使用istream对象作为条件时,效果是检测流的状态。
练习1.16:从 cin 读取一组数,输出其和
#include <iostream>
int main()
{
int sum = , value = ;
while (std::cin >> value)
sum += value;
std::cout << "Sum is: " << sum <<std::endl;
return ;
}
windows环境可使用ctrl+z或字母作为结束符,再按回车(因为value为int型,非int型输入导致isteam对象的状态变为无效,使条件为假从而结束循环)
1.4.4 if 语句
if (condition)
statement;
else
statement;
例子:统计输入中每个连续值出现几次
#include <iostream>
int main()
{
int currVal = , val = ;
if (std::cin >> currVal){
int cnt = ;
while(std::cin >> val){
if (val == currVal)
cnt++;
else{ // 否则,打印前一个值个数
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
currVal = val; // 记住新值
cnt = ; // 重置计数器
}
}//while
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
}
return ;
}
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item book;
while(std::cin>>book)
std::cout << book << std::endl;
return ;
}
练习1.21:读取两个同样ISBN的记录,打印和
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item book1, book2;
std::cin >> book1 >> book2;
if (book1.isbn() == book2.isbn())
std::cout << book1 + book2 <<std::endl;
else
std::cout << "Data must refer to same ISBN" << std::endl;
return ;
}
练习1.22:读取多个具有相同ISBN的销售记录,输出所有记录的和。
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1, item_sum;
if(std::cin >> item_sum){
while(std::cin >> item1){
if (item1.isbn() == item_sum.isbn())
item_sum += item1;
else{
std::cout << "Data must refer to same ISBN" << std::endl;
break;
}
}
std::cout << item_sum << std::endl;
return ;
}
else{
std::cout << "No data" << std::endl;
return -;
}
}
成员函数(member function):有时也被称为方法(method)
调用方式:类类型的对象.成员名() 点运算符. 调用运算符(),括号内放实参列表,可为空
练习1.23-1.24:读取多条销售记录,统计每个ISBN有几条销售记录(每个ISBN的记录聚在一起)
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item item0, item;
if(std::cin >> item0){
int cnt = ;
while(std::cin >> item){
if(item.isbn() == item0.isbn())
cnt++;
else{
std::cout << item0.isbn() << " has " << cnt << " items."
<< std::endl;
item0 = item;
cnt = ;
}
}
std::cout << item0.isbn() << " has " << cnt << " items."
<< std::endl;
}
else
{
std::cout << "No data." << std::endl;
return -;
}
return ;
}
书店程序:读取销售记录,生成每本书的销售报告,显示售出册数、总销售额和平均售价(每个ISBN书号中所有销售记录在文件中聚在一起保存)
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item total;
// 读入第一条交易记录,并确保有数据可以处理
if(std::cin >> total){
Sales_item trans;
// 读入并处理剩余交易记录
while(std::cin >> trans){
if(trans.isbn() == total.isbn()) // 如果仍在处理相同的书
total += trans; // 更新总销售额
else{
// 打印前一本书的结果
std::cout << total << std::endl;
total = trans; // 重置
}
}
std::cout << total << std::endl; // 打印最后一本书的结果
}
else
{
std::cerr << "No data?!" << std::endl;
return -;
}
return ;
}
术语
C++primer第一章(部分)的更多相关文章
- C++primer第一章
第一章 : 开始 1.1 编写一个简单的C++程序 要点:每个函数有且只能拥有一个main函数,且main的默认返回是一个int类型. 函数定义:返回类型,函数名,形参列表,函数体 1.1.1编译 运 ...
- C++Primer 第一章
/* 1.main函数的标准写法就只有两种,一种是带命令行的,一种是不带命令行的.其返回类型必须是int. 2.如果main函数最后没有return语句,则编译器会自动加上一句 return 0; * ...
- <<C++ Primer>> 第一章 开始 术语表
术语表 第 1 章 开始 参数(实参, argument): 向函数传递值 赋值(assignment): 抹去一个对象当前值一个新值取代之 缓冲区(buffer): 一个存储区域, 用于 ...
- C++ Primer 笔记 第一章
C++ Primer 学习笔记 第一章 快速入门 1.1 main函数 系统通过调用main函数来执行程序,并通过main函数的返回值确定程序是否成功执行完毕.通常返回0值表明程序成功执行完毕: ma ...
- 《C++Primer》第五版习题答案--第一章【学习笔记】
C++Primer第五版习题解答---第一章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2022/1/7 第一章:开始 练习1.3 #includ ...
- C++ Primer Plus 第一章 预备知识
C++ Primer Plus 第一章 预备知识 知识点梳理 本章主要讲述了C++的由来,讨论了面向过程语言与面向对象语言的区别,介绍了ANSI/ISO制定的C++标准,阐述了在Windows.Mac ...
- C++PRIMER第五版练习题答案第一章
C++PRIMER第五版练习题答案第一章 应该有很多小伙伴和我一样,闲来无事买了本C++的书自己啃,课后的练习题做的很揪心,这里我分享下我写的答案,希望能帮助到你,提供源码,就不跑了哈,毕竟现在是第一 ...
- C++ primer的第一章的主要内容
第一章主要是把C++的主要的部分简单的介绍了一下,让读者对C++开始有一个简单的了解.看完第一章的收获就是知道如何去读入不确定数目的输入,主要是形式是:whlie(cin>>s){},利用 ...
- 第一章 C++ primer Plus
第一章 1.4程序创建的技巧 大体如下: 1.使用文本编辑器编写程序,并将其保存到文件中,这个文件就是程序的源代码. 2.编译源代码.这意味着运行一个程序,将源代码翻译为主机使用的内部语言——机器语言 ...
随机推荐
- Nginx+Tomcat配置负载均衡(一)
关于负载均衡原理方面的知识点不在本文讨论范畴,本文主要就负载均衡配置过程中的细节部分配置做详细说明. 本次负载均衡大致的配置如下: 环境 : WIN7 + VM虚拟机3台(centos6.5) Ngi ...
- React Native 获取组件(Component)在屏幕上的位置
年后主客户端的需求以及老的业务迁移RN,现在疯狂的在学RN.在迁移需求的时候遇到需要获取组件在屏幕上的绝对位置.页面如下: 就需要展开的时候获取sectionHeader(默认排序)在屏幕上的具体位置 ...
- Hive的初识
Hive是构建于Hadoop上的数据仓库基础框架,它提供了以下功能: 可通过SQL轻松的访问数据,从而实现数据仓库的任务.如提取/转换/加载,报告和数据分析. 对各种数据格式施加结构. 访问存储在HD ...
- 基本的java加密算法MD5等等
简单的java加密算法有: BASE64 严格地说,属于编码格式,而非加密算法 MD5 (Message Digest algorithm 5,信息摘要算法) SH ...
- Python3.7和数据库MySQL 8.0.12 绿色解压 安装教程(一)
首先要安装MySQL 数据库才可以继续安装图形工具SQLyog 第一步:下载解压包>> MYSQL官网地址:https://dev.mysql.com/downloads/file/?id ...
- python中sys模块之输入输出错误流
import sys sys.stdout.write("msg") # 控制台白色字体打印 普通输出流 sys.stderr.write("msg") # ...
- 1. cocos creator 连接服务端
客户端向服务端发送 请求: this.network.send("/////",) 上面这段代码要写在logic.js中,(关于服务端的东西全部扔到logic中): ////中写 ...
- vue-cli项目在IE下运行钩子函数抛出异常“ReferenceError: “Promise”未定义"”的解决办法
兼容IE是个坑,低版本IE很多都没法跑起来 问题现象:vue-cli项目在IE下运行,会在钩子函数出现 ReferenceError: “Promise”未定义 解决办法: step1:安装最新的we ...
- leetcode中的python学习
list.extend() list1.extend(list2(or string)) 将list2(or string)的所有元素添加到list1中: list1.append(list2(or ...
- map集合实现缓存
package com.linmingliang.myblog.utils; import java.util.Map;import java.util.concurrent.ConcurrentHa ...