从零单排《C++ Primer》

——(1)一个简单的c++程序

本次学习收获

0、写在前面

风色以前上过C++的课程,然而当时并没有认真去学,基本不能使用c++来作项目开发。

这次又一次学习c++,首先会阅读c++Prime英文版第五版,希望能够为以后的学习打下坚实的基础。

1、程序

一个简单的c++程序(P17),帮助我们高速了解c++的代码风格,并通过分析代码学习c++

程序意图:在终端上输入一组数字。输出不同数字输出的次数。同样的数字必须是连续的。

如果输入:

42 42 42 42 55 55 62 100 100 100

终端应该输出:

42 occurs 5 times
55 occurs 2 times
62 occurs 1 times
100 occurs 3 times

代码:

#include <iostream>

int main()
{
//currVal is the number we are counting;we will read new value into val. currVal用来存放当前计算的数据,新读入的数据会放入val
int currVal = 0, val = 0;
//read first number and ensure that we have data to process. 为确保有可操作的数据。先读入一个
if(std::cin >> currVal){
int cnt = 1; //store the count for the current value we're processing. cnt用来计数。当前存放的数据出现了多少次
while (std::cin >> val){ // read the remaining numbers.读剩下的数据
if(val == currVal) //if the values are the same.假设新读入的数据,和当前计算的数据是一样的
++cnt;
else {
std::cout<< currVal << " occurs " << cnt <<"times" << std::endl;
currVal = val; //remember the new value
cnt = 1;
}
} // while loop ends here. while循环结束
} // outermost if statement ends here . if结束
return 0;
}





2、代码分析:



2.1函数:

每一个c++程序拥有至少一个函数,当中一个函数必须叫作main。他是操作系统执行c++程序时程序的入口。

在上面的程序中,我们也自定义了一个main函数。它是:

</pre><pre name="code" class="cpp">int main()
{
//currVal is the number we are counting;we will read new value into val. currVal用来存放当前计算的数据,新读入的数据会放入val
......
return 0;
}

一个函数由4个部分组成:

1)返回类型

在这个函数中,它的返回类型是int 型。表示整数。

2)函数名

在这个函数中为main

3)參数(能够为空)

參数填在main后面的()内。改函数的參数为空

4)函数主体

花括号及以内的部分

这个函数最后一条语句:return 。

这是一条能够用来结束函数的语句。在这个样例中,return能够返回一个值给函数的调用者。

返回的值必须喝函数的返回类型一致。在这个样例中,函数返回了一个整数型0。

2.2使用Library(函数库):

程序第一行:

#include<iostream>

在程序实现时,我们不仅会自定义一些函数。通常也会使用一些别人已经写好的函数来简化我们的编码。

使用别人的函数必须引入相应的函数库的头文件。

程序迪一行快速编译器我们要使用iostream libraary。<>里面的名称是我们要引入的头文件。

这里我们引入了iostream。以便实如今终端上的输入输出操作。<>表示引入的是标准文件,要引入自己的文件,使用""。

2.3凝视:

凝视掉的内容,编译器时不会运行的。凝视用来方便别人阅读代码。

c++有两种凝视方法

1)单行凝视 //

2)c凝视 /* */

2.4标准输入与输出:

这个样例中使用了iostream library来处理标准输入和输出。它包括了istream和ostream。分别代表input streams(输入流) 和 output streams(输出流)。Stream(流)表示从输入输出设备读取/写入一系列有顺序的字符。

std::cin >> currVal

从终端上读入一个数据。存放在变量currVal上。

currVal变量用来存放当前计算的数字。

std::cout<< currVal << " occurs " << cnt <<"times" << std::endl;

从终端上输出当前数字共出现了多少次。

变量cnt记录了currVal所存放的数字出现的次数。

endl表示换行。

输入输出能够这样连续使用:

int v1 =0, v2 = 0;
std::cin>>v1>>v2;
std::cout<<v1<<v2<<std::endl;

这是由于>>(<<)会返回它左边的操作数(operand)

2.5命名空间:

假设引入了不同库,而库里面假设有相同名称的函数,调用的时候这个函数的时候,编译器就会不知道调用哪个。为了解决这个冲突,c++使用了命名空间。注意到

std::cin >> currVal

里面的std::,表示使用标准库里面的cin函数。

2.6IF语句以及IF语句与输入语句的组合使用:

if(条件语句){
//运行内容
}

首先运行在()内的语句条件语句,仅仅有条件语句为真时才运行{ } 内的内容。常见的使用方法有if( a == b) , 假设a等于b,则a==b为真,运行{}内容。否则a==b为false,不运行{}内.其实,条件语句非0即为真。

在这个样例中,有

if(std::cin >> currVal)

注意到,假设std::cin>>currVal成功读取到数据,则为真。

2.7WHILE语句以及IF语句与输入语句的组合使用:

while(条件语句){
//运行内容
}

首先运行条件语句,假设条件为真,则会运行{}内的内行。接着继续运行条件语句。假设继续为真。则继续运行{}内容。如此循环,直到条件运行后为假。

结合if语句里所述。在不知道有多少数据要读取时,能够编写例如以下语句

while(std::cin>>val){
}

当istream无效时。std::cin>>currVal读取失败。条件为假。无效的情况有

1)当我们输入end-of-file(eof)时 (Dos/Windows:ctrl+z   Linux:ctrl+d)

2)输入了非法数据,如数据为空,或者类型不符

3、作业:

p9

/*
* Exercise 1.3: Write a program to print Hello,World on the standard output
* 写一个程序实如今标准输出中打印Hello,World
*/
#include<iostream>
int main()
{
std::cout<<"Hello,World"<<std::endl;
return 0;
}

p11

/*
* Exercise 1.8:Indicate which,if any,of the following output statements are legal:
* 指出哪些输出语句是合法的
*/
#include <iostream>
int main(){
std::cout<<"/*";//合法输出为/*
// std::cout<<"*/";//合法输出为*/
// std::cout<</*"*/"*/;//非法 最后缺少一个"
// std::cout<</* "*/" /* "/*" */;//合法 输

p13

/*
* Exercise 1.9: Write a program that uses a while to sum the numbers from 50 to 100
* 用while计算50到100的累加值
*/
#include <iostream>
int main(){
int sum = 0,val = 50;
while(val<101){
sum += val;
++val;
}
std::cout<<"The sum of 50 to 100 inclusive is "<< sum <<std::endl;
return 0;
}
/*
*Exercise 1.11
*Write a program that prompts the user for two integers.Print each number in the range specified by thoe two intergers
*提示用户输入两个整数。打印着两个整数翻飞内的数。
*/ #include<iostream>
int main(){
int val1 = 0, val2 = 0, temp = 0;
std::cout<<"please input two intergers"<<std::endl;
if(std::cin>>val1){
if(std::cin>>temp){
if(temp>val1)
val2 = temp;
else{
val2 = val1;
val1 = temp;
}
while(val1<=val2){
std::cout<<val1<<std::endl;
++val1;
}
}
}
return 0;
}

(1)风色从零单排《C++ Primer》 一个简单的c++程序的更多相关文章

  1. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  2. Flink源码分析 - 剖析一个简单的Flink程序

    本篇文章首发于头条号Flink程序是如何执行的?通过源码来剖析一个简单的Flink程序,欢迎关注头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech) ...

  3. 使用Go开发一个简单的服务器程序

    最近有个小项目,需要一个简单的后台程序来支撑,本来想用Nodejs来做,但是由于本人js一直很菜,并且很讨厌callback,虽然我也很喜欢异步模型,但我一直都觉得JS是反人类的.后台就用了go处理, ...

  4. 一个简单的flask程序

    初始化 所有Flask程序都必须创建一个程序实例. 程序实例是Flask类的对象,经常使用下述代码创建: from flask import Flask app = Flask(__name__) F ...

  5. 利用JSP编程技术实现一个简单的购物车程序

    实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP ...

  6. 输出多行字符的一个简单JAVA小程序

    public class JAVA { public static void main(String[] args) { System.out.println("-------------- ...

  7. 如何创建一个简单的struts2程序

    如何创建一个简单的Struts2程序 “计应134(实验班) 凌豪” 1.创建一个新的Web项目test(File->new->Web Project) 2.Struts2框架的核心配置文 ...

  8. Linux系统学习笔记之 1 一个简单的shell程序

    不看笔记,长时间不用自己都忘了,还是得经常看看笔记啊. 一个简单的shell程序 shell结构 1.#!指定执行脚本的shell 2.#注释行 3.命令和控制结构 创建shell程序的步骤 第一步: ...

  9. 第一讲 一个简单的Qt程序分析

    本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton&g ...

  10. Java入门篇(一)——如何编写一个简单的Java程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

随机推荐

  1. Python函数-闭包的概念

    一个函数和它的环境变量合在一起,就构成了一个闭包(closure).在Python中,所谓的闭包是一个包含有环境变量取值的函数对象.环境变量取值被保存在函数对象的__closure__属性中.比如下面 ...

  2. react篇章-React 组件-复合组件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  3. Learn to Create Everything In a Fragment Shader(译)

    学习在片元着色器中创建一切 介绍 这篇博客翻译自Shadertoy: learn to create everything in a fragment shader 大纲 本课程将介绍使用Shader ...

  4. hdu 1372Knight Moves

    E - Knight Moves Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Su ...

  5. eclipse 的alt shift a,r 这个快捷键怎么操作 怎么按 eclipse 快捷键 逗号 什么意思

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha eclipse 的alt shift a,r 这个快捷键怎么操作 怎么按 eclipse ...

  6. [ZOJ3254] MON 9.2009Secret Code

    A^x = D (mod P) 0 <= x <= M, here M is a given integer. 1 <= A, P < 2^31, 0 <= D < ...

  7. java--由一道选择题研究数值越界

    原题来自牛客网的java专项练习: 以下是代码. public class Test2 { public static void add(Byte b) { b=b++; } public stati ...

  8. hdu 3681 压缩dp+搜索

    题意:一个机器人想越狱,他只能带一定电量的电池,'S'表示道路可行,'G'表示充电器, 只可充电一次,但是可以经过很多次.'F'表示起点,'Y'表示要破坏的机关,也是只能破坏一次,但是可以经过无数次. ...

  9. hdu 4276 树形dp

    题意:给你n个点,n-1条边构成树,每条边有边权(表示走每条边的时间),每个点有点权,问在时间T从点1走到点n,能够得到最多的点权有多少. 题目链接:点我 由于是树,最优的结果一定经过最短路,其他边要 ...

  10. 厄拉多塞筛法和普通方法求素数表(python实现)

    厄拉多赛筛法(sieve of Eratosthenes): 想要得到一个不大于N的数所有素数,可以先找到不超过根号N的所有素数,设2 = p1 < p2 < ......<pk ≤ ...