(1)风色从零单排《C++ Primer》 一个简单的c++程序

从零单排《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;
}
时间: 2024-10-10 07:00:14

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

从零单排c++ primer(17)

(1)假设一个名字在派生类的作用域内无法正确解析,则编译器将继续在外层的基类作用域中寻找该名字的定义. (2)派生类的成员将隐藏同名的基类成员. (3)除了覆盖继承而来的虚函数之外,派生类最好不要重用其它定义在基类中的名字. (4)声明在内层作用域的函数并不会重载声明在外层作用域的函数.定义在派生类中的函数也不会重载其基类中的成员. (5)基类函数的每一个实例在派生类中都必须是可訪问.对派生类没有又一次定义的重载版本号的訪问实际上是对using声明点的訪问. (6)继承关系对基类拷贝控制最直接的

Unity3D游戏开发从零单排(四) - 制作一个iOS游戏

提要 此篇是一个国外教程的翻译,虽然有点老,但是适合新手入门.自己去写代码,debug,布置场景,可以收获到很多.游戏邦上已经有前面两部分的译文,这里翻译的是游戏的最后一个部分. 欢迎回来 在第一篇中,我们学会了怎么在Unity中搭建游戏的场景,并且设置模型的物理属性. 在第二篇中,我们学会了怎么在unity中使用脚本,并且创建了大部分的游戏逻辑,包括投球和得分! 在这最后一节中,我们将会为用户创建一个菜单系统,并且和GameController进行交互,我们开始吧. 在设备上测试 到目前为止,

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

实验二   JSP编程 一.实验目的1. 掌握JSP指令的使用方法:2. 掌握JSP动作的使用方法:3. 掌握JSP内置对象的使用方法:4. 掌握JavaBean的编程技术及使用方法:5. 掌握JSP中数据库编程方法: 二.实验要求 : 利用JSP编程技术实现一个简单的购物车程序,具体要求如下. (1)用JSP编写一个登录页面,登录信息中有用户名和密码,分别用两个按钮来提交和重置登录信息. (2)编写一个JSP程序来处理用户提交的登录信息,如果用户名为本小组成员的名字且密码为对应的学号时,采用J

一个简单的Qt程序分析

本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton *button = new QPushButton("Quit"); QObject::connect(button, SIGNA

通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与

一个简单的Java程序

一个.NET技术还是很菜的水平的猿人现在要去学习Java不知道是坏是好,无从得知啊! 不过在网上看了好多Java方面的简单例子,感觉Java还是蛮不错的么!不管以后怎么样啦,先开始自己的Java菜鸟之旅吧! 建立一个Java项目,建立一个属于自己的包,然后就开始自己的Java之旅... 创建的时候勾上这个生成main方法的选项,这个好像类似与我们.Net程序里控制台程序有木有.... 创建完成后就是这么一个样子,可以看到我们的包,还有给我们创建好自己的类,并且带了一个静态的main方法咋看就像.

理解计算机的工作方式——通过汇编一个简单的C程序并分析汇编代码

Author: 翁超平 Notice:原创作品转载请注明出处 See also:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000  本文通过汇编一个简单的C程序,并分析汇编代码,来理解计算机是如何工作的.整个过程都在实验楼上完成,感兴趣的读者可以通过上面给出的课程链接自行动手学习.以下是实验过程和结果. 一.操作步骤 1.首先在通过vim程序建立main.c文件.代码如下: 图1 2.使用如下命令将main.c编

1.一个简单的OpenGL程序

一.OpenGL介绍 1.与C语言紧密结合. OpenGL命令最初就是用C语言函数来进行描述的,对于学习过C语言的人来讲,OpenGL是容易理解和学习的. 如果你曾经接触过TC的graphics.h,你会发现,使用OpenGL作图甚至比TC更加简单. 2.强大的可移植性. 微软的Direct3D虽然也是十分优秀的图形API,但它只用于Windows系统(现在还要加上一个XBOX游戏机). 而OpenGL不仅用于 Windows,还可以用于Unix/Linux等其它系统,它甚至在大型计算机.各种专

如何利用CEF3创建一个简单的应用程序 (Windows Platform)

1. 说明 这篇文章主要讲述如何利用CEF3来创建一个简单的应用程序,引用的是1535及以上版本中包含的 Cefsimple 项目例子.如果想知道关于CEF3更多的使用方法,可以去访问 GeneralUsage. 2. 开始 首先,根据自身所使用的开发平台,可以去 这里 下载对应的发布版本.针对这个教程,我们需要下载1750或者更新的版本.当前支持的平台有Windows, Linux和Mac OS X.每一个版本都包含了当在特定平台上编译特定版本CEF3时所需要的所有文件和资源.您可以通过包含在

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #inc