C++ 的基本语法
\(C++\) 介绍
前言
在当前的时代,计算机的使用越来广泛,计算机是如何工作与交流的呢?我们知道计算机由键盘,显示器,鼠标等硬件与 \(word,ppt,excel\) 等软件组成。那么如何与计算机交流呢?
我们日常交流使用的是自然语言,而与计算机交流则需用计算机语言,大体分为机器语言,汇编语言,高级语言。
机器语言就是计算机之间的交流,即计算机之间的自然语言,仅有 \(0\) 和 \(1\)
机器语言实在是太慢且易出现问题,就出现了用指令的方式与计算机交流,如 \(load,basepay,add,overpay,store,grosspay\),注:\(Grosspay=basepay+overtimepay\)
但这种语言我们可以理解,而计算机却无法理解,所以我们需要一个“翻译”,将我们的汇编语言翻译成机器语言,让计算机工作
随汇编语言的发展,我们的指令越来越多,程序员需要很多指令来完成一件事情,于是就出现了高级语言,高级语言可以一条语句完成很多指令。随之而来的,高级语言也需要一位更高级的翻译称之为编译器 \((compiler)\) 或解释器 \((interpreter)\)。目前的高级语言主要有 \(Pascal,C,C++,Java,VB\) 等
\(C++\) 编程简介
\(C++\) 是由 \(C\) 发展而来的一种面向对象的程序设计
\(C\) 是一种标准化的语言,我们很少需要修改,便可以通用于不同的计算机系统,\(C++\) 也是 \(C\) 的一种扩展
面向对象?我们生活在一个到处是对象的世界,书本,纸,笔都是对象。面向程序,则是强调动作,关注于要做什么,做的流程。面向对象更像我们现在的世界,创建对象,调用对象,从而减少工作量。
\(C++\) 的安装与编译运行
\(C++\) 的开发环境,编程主要有 \(6\) 个步骤
编辑,预处理,编译,连接,载入和执行
下边以 \(Dev-C++\) 为例子展示
若为英语,可由下步骤转为中文



之后就成中文的了

创建一个新源文件

便会出现一个白色区域,称为源代码编辑区域,可以在此编写程序

写完代码后可直接点击上面图标,并选择想要保存的位置,便可运行

若是存在词法于语法的错误则会编译失败,右下脚的框则会显示错误信息,并将错误行代码标红
\(C++\) 输出
例:\(1.1\) 在屏幕上输出 \(Hello World!\)
点击查看代码
#include<iostream>//使用 cin,cout,需调用 iostream 库,否则编译出错
#include<cstdlib>//调用 system() 调用 cstdlib 库
using namespace std;//在 C 语言要省略,例如在 VC++ 和 TC++
int main(){//有的 C 语言可用 void main(),例如 TC++ 和 VC++
cout<<"Hello World!"<<endl;//输出 Hello World!
system("pause");//暂停作用,使用 system("pause") 调用 cstdlib 库
return 0;//结束整个程序
}
代码及解释可自行看注释,也可以继续向下看,后边还会有解释
例 \(1.2\) 梯形阴影部分面积为 \(150\ cm^2\),求梯形面积

已知梯形上底下底各为 \(15\) 和 \(25\)。令梯形的高为 \(h\),则由已知三角形面积为 \(150\ cm^2\),有 \(150=(15*h)/2\),得 \(h\) 为 \(20\),然后根据梯形面积公式算出梯形面积。如下:
点击查看代码
#include<cstdio>//使用 printf 和 scanf 需调用 cstdio 库,在 C 语言中可调用 stdio.h
#include<cstdlib>//调用 system() 调用 cstdlib 库
using namespace std;//在 C 语言要省略,例如在 VC++ 和 TC++
int main(){//有的 C 语言可用 void main(),例如 TC++ 和 VC++
float s,h,up,down;//float 定义 s,h,up,down 为单精度实形变量
up=15;//已知上底
down=25;//已知下底
h=2*150/up;//根据上下底求出梯形的高
s=(up+down)*h/2;//求出梯形的面积
printf("s=%.2f\n",s);//\n是换行控制符,0.2f按实际位数输出,保留2位小数
system("pause");//暂停作用,TC++ 和 VC++ 中使用 system() 调用 stdlib.h 库
return 0;//结束程序,在 TC++ 和 VC++ 中也要保留
}
运行结果:
\(s=400\)
思考:
求高为 \(4\),面积为 \(40\) 的平行四边行怎么做?
练习
\(1.\) 只有一行,按照要求依次输出三个整数,之间以一个空格分开。
样例输出:\(123456789\ 0\ -1\)
\(2.\) 输出字符构成的等腰三角形
*
* *
* * *
输入和输出
回顾
下面用两种不同方法输出了 \(b\) 的值
#include<iostream>
using namespace std;
int main(){
int a,b,c;
a=123;
b=456;
c=789;
cout<<b;
system("pause");
return 0;
}
#include<cstdio>
using namespace std;
int main(){
int a,b,c;
a=123;
b=456;
c=789;
printf("%d",b);
system("pause");
return 0;
}
include 中 # 表示预处理
\(iostream\) 由 \(i\ ->\ in\) 输入,\(o\ ->\ out\) 输出,\(stream\ ->\) 流,河流组成
\(cstdio\) 由 \(c\ ->\) 计算机语言 \(C\);\(std\ ->\ standard\);\(io\) 同上,表示输入输出;
\(cstlib\) 由 \(cstd\) 同上,\(lib\ ->\ library\) 图书馆,库;
\(using\ namespace\ std\) 表示所有的标识符都定义在 \(std\) 中
\(printf\) 由 \(print\ ->\) 打印;\(f\ ->\ format\) 格式化
说白了,\(include\) 与 \(using\ namespace\ std\) 就是类似于放东西的盘子,有了盘子才可以用里面的东西
思考:
如果将上述程序中的输出改为 \(printf("b",b);\) 输出的是?
例 \(1\):
有一个牧场,牧场上的牧草每天都在均匀生长,这片牧草可供 \(15\) 头牛吃 \(20\) 天,或可供 \(20\) 头牛吃 \(10\) 天,那么,这片牧草每天新生的草量可供几头奶牛吃 \(1\) 天?
分析步骤:如果用数学计算如何计算?
点击查看代码
#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
cout<<(15*20-20*10)/(20-10)<<endl;
system("pause");
return 0;
}
\(C++\) 输入
例2
知道一张门票 \(10\) 元,计算 \(x\) 个人的票价一共是多少?
点击查看代码
#include<cstdio>
#include<cstdlib>
using namespace std;
int main(){
int x,y;
scanf("%d",&x);
y=10*x;
printf("y=%d",y);
return 0;
}
练习,将输入改为 \(cin\) 的方法输入
\(C++\) 中的赋值语句
在 \(C++\) 中 \(=\) 作为赋值运算符,而不表示等于
比如 \(int\ h;\ h=5;\) 表示吧数值 \(5\) 赋值给 \(h\) 而非 \(h\) 等于 \(5\)
思考一个盘中有 \(a\) 个糖果,另一个有 \(b\) 个,想要将他们交换该如何做
一个思路,定义一个新变量 \(c\) 先将 \(b\) 的值给 \(c\),在把 \(a\) 的值给 \(b\),再将 \(c\) 的值给 \(a\)
点击查看代码
#include<cstdio>
#include<cstdlib>
using namespace std;
int main(){
int a,b;
scanf("%d%d",&a,&b);
int c;
c=b;
b=a;
a=c;
printf("%d %d",a,b);
}
练习:
\(1.\) 给定 \(a,b\),输出 \(a+b\) 的值 洛谷 \(P1001\)
\(2.\) 有 \(a,b,c,d\) 四个变量如何将每个数值从左向右移动一个位置
运算符和表达式
自加和自减
在 \(C++\) 中有一种赋值时自己给自己赋值的方式
如 \(x++\) 与 \(x--\)
当然 \(++\) 和 \(--\) 也可以放前面
其中 \(++x\) 表示先加后调用,\(x++\) 则为先调用后加
可以自己 \(copy\) 下面的代码体会一下
点击查看代码
#include<cstdio>
using namespace std;
int main(){
int x=7,y=8;
int z1=y-(x++);
int z2=y-(++x);
printf("%d %d",z1,z2);
}
赋值语句
例子,鸡兔同笼,头 \(30\),脚 \(90\),求鸡兔各几何?
分析:设鸡为 \(j\) 只,兔为 \(t\) 只,头为 \(h\),脚 \(f\)
点击查看代码
#include<cstdio>
using namespace std;
int main(){
int h,f,j,t;
h=30;h=90;//变量赋值为常数
j=(4*h-f)/2;
t=h-j;//变量也可由前面已经定义的变量赋值
printf("j=%d,t=%d\n",j,t);
}
复合算数运算符
即不只是简单的赋值还有运算
如 \(a+=1\) 就等于 \(a=a+1\)
当然了,在 \(a=a+1\) 中需要调用 \(a\) 一次,而 \(a+=1\) 不用
所以符合算数运算符是快于简单的赋值运算符的,而且符合算术运算符少打几个字符
关系运算符
故名思意,就是来表示比较关系的
有大于(\(>\)),小于(\(<\)),等于(\(==\)),大于等于(\(>=\)),小于等于(\(<=\))和不等于(\(!=\))共\(6\)种
其中关系运算符最终都表示的是关系的是否成立,成立为 \(1\) 反之为 \(0\)
好像关系的定义就是有是或非。。。。
比如 \(2>1\) 就返回 \(1\)
当然了,关系运算符也是可以用来赋值的
比如 \(a=2>1\) 则等于 \(a=1\)
逻辑运算符
用于逻辑运算,有,与(&&),或(||),非(!)三种
与,就是两者关系都成立就为 \(1\)
或,两者关系有一个成立就为 \(1\)
非,关系不成立为 \(1\)
其中 && 与 || 都用来连接关系运算符
分支结构程序设计
运算符有限优先级
在编写程序的过程中,编译器会对优先级高的表达式先运算
下面是一些表达式的优先级
从上到下,优先级依次递减
(、)
*、/
+、-
、<、>=、<=

浙公网安备 33010602011771号