app网站开发湖南,网站建设费能算作广告费用吗,免费自己制作app手机软件,企业营销策划的最高层次是此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏#xff0c;参考书籍#xff1a;《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 2.C基本数据类型和控制结构
2.1 C基本数据类型 程序是由算法…此专栏为移动机器人知识体系下的编程语言中的 C {\rm C} C从入门到深入的专栏参考书籍《深入浅出 C {\rm C} C》(马晓锐)和《从 C {\rm C} C到 C {\rm C} C精通面向对象编程》(曾凡锋等)。 2.C基本数据类型和控制结构
2.1 C基本数据类型 程序是由算法和数据组成的数据是算法的前提数据以常量和变量的形式出现每个常量和变量都有数据类型 C {\rm C} C的数据类型主要分为基本数据类型和自定义类型基本数据类型是 C {\rm C} C编译系统内置的自定义类型是用户以基本类型为基础定义的符合自己要求的类型 C {\rm C} C基本数据类型 整型 ( i n t , s h o r t , l o n g ) ({\rm int,short,long}) (int,short,long)字符型包括单字符型 ( c h a r ) ({\rm char}) (char)和宽字符型 ( w c h a r _ t ) ({\rm wchar\_t}) (wchar_t)实型包括单精度型 ( f l o a t ) ({\rm float}) (float)和双精度型 ( d o u b l e ) ({\rm double}) (double) 非基本数据类型 逻辑型 ( b o o l ) ({\rm bool}) (bool)数组 ( t y p e [ ] ) ({\rm type[]}) (type[])指针 ( t y p e ∗ ) ({\rm type\ *}) (type ∗)空类型 ( v o i d ) ({\rm void}) (void)结构 ( s t r u c t ) ({\rm struct}) (struct)联合 ( u n i o n ) ({\rm union}) (union)枚举 ( e n u m ) ({\rm enum}) (enum)类 ( c l a s s ) ({\rm class}) (class) 整型类型根据表示范围分为基本整型、短整型、长整型、超长整型其表示范围根据编译系统和平台而定。 // 1.基本整型以int关键字定义
int score;// 2.短整型用short int或short关键字定义
short int age;
short age;// 3.长整型用long int或long关键字定义
long int height;
long height;// 4.超长整型用long long int或long long关键字定义
long long int studentID;
long long studentID;// example2_1.cpp
/*** 作者罗思维* 时间2023/09/24* 描述确定整型类型在内存中所占的字节数。*/
#include iostream
using namespace std;int main()
{cout sizeof(short int) sizeof(short int) 字节 endl;cout sizeof(int) sizeof(int) 字节 endl;cout sizeof(long int) sizeof(long int) 字节 endl;cout sizeof(long long int) sizeof(long long int) 字节 endl;return 0;
}// example2_1.cpp程序执行结果(编译系统为Visual Studio Code编译系统)
sizeof(short int) 2字节
sizeof(int) 4字节
sizeof(long int) 4字节
sizeof(long long int) 8字节短整型 − 2 15 2 15 − 1 -2^{15}2^{15}-1 −215215−1即 − 32768 32767 -3276832767 −3276832767基本整型 − 2 31 2 31 − 1 -2^{31}2^{31}-1 −231231−1即 − 2147483648 2147483647 -21474836482147483647 −21474836482147483647长整型 − 2 31 2 31 − 1 -2^{31}2^{31}-1 −231231−1即 − 2147483648 2147483647 -21474836482147483647 −21474836482147483647超长整型 − 2 63 2 63 − 1 -2^{63}2^{63}-1 −263263−1即 − 9223372036854775808 9223372036854775807 -92233720368547758089223372036854775807 −92233720368547758089223372036854775807 实型类型亦称为浮点数表示形式分为十进制小数形式和指数形式十进制小数形式由数字和小数点组成且必须含有小数点指数形式利用数学上的指数形式表示形式为数字 E {\rm E} E指数 E {\rm E} E可以为小写 e {\rm e} e实型数据类型变量分为三种如下 // 1.单精度利用float关键字定义
float fNum;// 2.双精度利用double关键字定义
double dNum;// 3.长双精度利用long double定义
long double ldNum;// example2_2.cpp
/*** 作者罗思维* 时间2023/09/24* 描述确定实型类型在内存中所占的字节数。*/
#include iostream
using namespace std;int main()
{cout sizeof(float) sizeof(float) 字节 endl;cout sizeof(double) sizeof(double) 字节 endl;cout sizeof(long double) sizeof(long double) 字节 endl;return 0;
}// example2_2.cpp程序结果
sizeof(float) 4字节
sizeof(double) 8字节
sizeof(long double) 16字节// example2_3.cpp
/*** 作者罗思维* 时间2023/09/24* 描述实型数据的运算存在一定的误差。*/
#include iostream
using namespace std;int main()
{float fNumber1, fNumber2;fNumber1 123456789.0;fNumber2 fNumber1 10;cout fNumber1 fNumber1 endl;cout fNumber2 fNumber2 endl;return 0;
}// example2_3.cpp程序结果
fNumber1 1.23457e08
fNumber2 1.23457e08字符类型 字符在 C {\rm C} C中用单引号(‘’)表示字符类型数据就是存储字符的数据类型字符类型变量用关键字 c h a r {\rm char} char定义 字符类型的变量在内存中占用 1 1 1个字节即 8 8 8位在存储时字符变量存储的是一个 − 128 127 -128127 −128127的数值存储的字符是字符的 A S C I I {\rm ASCII} ASCII码 用\“表示的字符称为转义字符用这个符号进行转义的字符一般是控制字符控制字符不可打印在程序中无法用一般形式表示因此必须用”\开头的字符序列表示 常用的转义字符及其含义 字符形式 字符形式 字符形式 含义 含义 含义 A S C I I {\rm ASCII} ASCII码\ n {\rm n} n 换行当前位置移动到下一行开头 换行当前位置移动到下一行开头 换行当前位置移动到下一行开头 10 10 10\ t {\rm t} t 水平制表符当前位置移动到下一个 T a b 位置 水平制表符当前位置移动到下一个{\rm Tab}位置 水平制表符当前位置移动到下一个Tab位置 9 9 9\ b {\rm b} b 退格当前位置移动到前一列位置 退格当前位置移动到前一列位置 退格当前位置移动到前一列位置 8 8 8\ r {\rm r} r 回车当前位置移动到本行开头 回车当前位置移动到本行开头 回车当前位置移动到本行开头 13 13 13\ f {\rm f} f 换页当前位置移动到下一页开头 换页当前位置移动到下一页开头 换页当前位置移动到下一页开头 12 12 12\\ 表示反斜杠 表示反斜杠 表示反斜杠\ 92 92 92\’ 表示单引号 表示单引号 表示单引号“ ’ ” 39 39 39\ 表示双引号 表示双引号 表示双引号“ ” 34 34 34 逻辑类型亦称布尔型表示真和假的数据类型逻辑类型变量用关键字 b o o l {\rm bool} bool定义逻辑类型变量只有真和假两种情况真用 t r u e {\rm true} true表示假用 f a l s e {\rm false} false表示在 C {\rm C} C中真用 1 1 1定义假用 0 0 0定义 // example2_4.cpp
/*** 作者罗思维* 时间2023/09/25* 描述利用逻辑类型变量的逻辑运算判断学生成绩是否及格。*/
#include iostream
using namespace std;int main()
{bool bIsPassed;int nScore1 80, nScore2 70;bIsPassed nScore1 60 nScore2 60;cout bIsPassed值为: bIsPassed endl;if (bIsPassed){cout 成绩及格,请及时打印成绩. endl;}else{cout 成绩不及格,请重新考试. endl;}return 0;
}变量存储限定符存储类型用在变量前加存储限定符表示可以对变量在内存中的存储进行控制常用的变量限定符如下 a u t o {\rm auto} auto采用堆栈方式分配内存空间是暂时性的存储其存储空间可以被其他变量多次覆盖使用即不是独占的 r e g i s t e r {\rm register} register变量存储在通用寄存器 e x t e r n {\rm extern} extern此存储类型变量在程序中的所有函数和程序段中都可以被使用 s t a t i c {\rm static} static以固定的地址存放变量在整个程序运行期间都有效 强制类型转换开发者自行进行的转换。 // 1.强制类型转换格式
类型名(表达式) 或 (类型名)表达式 // 类型名是表达式转换后的数据类型;// 2.将long类型值转换为int类型值
long lNumber 100.0;
int nNumber (int)lNumber;// 3.Tips:
// 3.1 强制类型转换是一种不安全的转换从高类型数据向低类型数据转换时可能有精度的损失
// 3.2 强制类型转换是暂时性的不会改变原来数据的数据类型// example2_5.cpp
/*** 作者罗思维* 时间2023/09/25* 描述强制类型转换实例。*/
#include iostream
using namespace std;int main()
{double lNumber 0.0;int nNumber 0;nNumber 32767;lNumber (double)nNumber; // 将int类型转换为double类型值(低-高)cout nNumber nNumber endl;cout lNumber lNumber endl;lNumber 3.14;nNumber (int)lNumber; // 将double类型转换为int类型值(高-低);cout lNumber lNumber endl;cout nNumber nNumber endl;return 0;
}2.2 实战1
项目需求提示用户输入三角形的 3 3 3条边长计算出三角形的面积并取整将结果输出到输出设备上。
需求分析
输入信息判断 3 3 3条边是否能组成一个三角形可以组成三角形的情况下计算三角形的面积输出信息
处理步骤 程序实现 ( p r o j e c t 2 _ 1. c p p ) ({\rm project2\_1.cpp}) (project2_1.cpp)
/*** 作者罗思维* 时间2023/09/25* 描述计算三角形面积。*/
#include iostream
#include math.h
using namespace std;int main()
{/*** 参数说明* dLine1,dLine2,dLine3: 三角形三边边长;* dArea: 三角形实际面积;* dP: 三角形边长之和的一半;* nArea: 三角形取整面积;* bIsTriangle: 三角形的组成条件;*/double dLine1, dLine2, dLine3;double dArea, dP;long nArea;bool bIsTriangle;cout 请输入边长1:;cin dLine1;cout 请输入边长2:;cin dLine2;cout 请输入边长3:;cin dLine3;bIsTriangle ((dLine1 dLine2) dLine3) || ((dLine2 dLine3) dLine1) || ((dLine3 dLine1) dLine2);if (bIsTriangle){cout 不是一个有效的三角形. endl;exit(1);};dP (dLine1 dLine2 dLine3) / 2;dArea sqrt(dP * (dP - dLine1) * (dP - dLine2) * (dP - dLine3));nArea (long)dArea;cout 三角形面积: dArea endl;cout 三角形取整面积: nArea endl;return 0;
}2.3 C语句与控制结构 表达式指用运算符连接各个运算对象合乎语法规则的式子表达式后面加上分号构成了表达式语句 // 1.空语句指只有一个分号没有表达式的语句;
// 空语句不做任何运算是作为一种形式上的语句填充在控制结构中
// 语法格式
;// 2.赋值语句由赋值表达式加分号构成的语句
// 语法格式
变量 赋值运算符 表达式;
age 18;// 3.函数调用语句调用函数语句的表达式流程图程序流程图是人们对解决问题的方法、思路或算法的一种描述流程图用一些专用符号绘制如长方形、菱形、椭圆和小圆这些符号用箭头连接称为流程程序中一般有三种控制结构分别为顺序结构、选择结构、循环结构常见流程图图例如下 顺序结构指按照语句在程序中的先后次序一条一条地顺序执行的过程 选择结构主要由 i f {\rm if} if和 s w i t c h {\rm switch} switch控制 i f {\rm if} if为单项选择结构 s w i t c h {\rm switch} switch为多项选择结构。 // 1.if语句的基本形式
if (条件表达式)
{语句序列;
}// 2.if-else语句形式
if (条件表达式)
{语句序列1;
}
else
{语句序列2;
}// 3.if-else if-else语句形式
if (条件表达式1)
{语句序列1;
}
else if (条件表达式2)
{语句序列2;
}
...
else
{语句序列n;
}// 4.switch语句形式
switch (变量表达式) // 变量表达式只能是整型、字符型或枚举型表达式;
{case 常量表达式1:语句序列1;break;case 常量表达式2:语句序列2;break;...case 常量表达式n:语句序列n;break;default:语句序列n1;
}循环结构在给定条件成立时反复执行某程序段直到条件不成立为止给定条件称为循环条件反复执行的程序段称为循环体。 // 1.while结构通过判断条件是否成立来决定循环的继续和结束
while(表达式) // 表达式是循环条件;
{语句序列; // 语句序列为循环体;
}// 2.do-while结构
do
{语句序列;
}while(条件表达式);// 3.for结构
/**
* 表达式1循环初始值
* 表达式2循环结束值
* 表达式3循环的增量
*/
for(表达式1;表达式2;表达式3)
{语句序列;
}// 4.基于范围的for语句遍历序列中的每一个元素并对每个元素进行某种操作;
for(数据类型 变量:序列) // 序列是一个对象可以是数组名、对象名、容器名等;
{语句序列 // 对每个元素进行的操作;
}控制结构实例 i f {\rm if} if语句实例 e x a m p l e 2 _ 6. c p p {\rm example2\_6.cpp} example2_6.cpp。 /*** 作者罗思维* 时间2023/09/26* 描述if语句实例。*/
#include iostream
using namespace std;int main()
{int nNumber;cout 请输入一个整数:;cin nNumber;if (nNumber 0){cout 输入的整数是正数. endl;}return 0;
}i f − e l s e {\rm if-else} if−else语句实例 e x a m p l e 2 _ 7. c p p {\rm example2\_7.cpp} example2_7.cpp。 /*** 作者罗思维* 时间2023/09/26* 描述if-else语句实例。*/
#include iostream
using namespace std;int main()
{int nNumber;cout 请输入一个整数:;cin nNumber;if (nNumber 0){cout 输入的整数是正数. endl;}else{cout 输入的整数不是正数. endl;}return 0;
}i f − e l s e i f − e l s e {\rm if-else\ if-else} if−else if−else语句实例 e x a m p l e 2 _ 8. c p p {\rm example2\_8.cpp} example2_8.cpp。 /*** 作者罗思维* 时间2023/09/26* 描述if-else if-else语句实例。*/
#include iostream
using namespace std;int main()
{int nScore;cout 请输入你的分数:;cin nScore;if (nScore 0 nScore 100){if (nScore 90){cout 分数等级:A. endl;}else if (nScore 80 nScore 90){cout 分数等级:B. endl;}else if (nScore 70 nScore 80){cout 分数等级:C. endl;}else if (nScore 60 nScore 70){cout 分数等级:D. endl;}else{cout 分数等级:E. endl;}}else{cout 输入的分数不正确. endl;}return 0;
}s w i t c h {\rm switch} switch语句实例 e x a m p l e 2 _ 9. c p p {\rm example2\_9.cpp} example2_9.cpp。 /*** 作者罗思维* 时间2023/09/26* 描述switch语句实例判断四季。*/
#include iostream
using namespace std;int main()
{int nSeason;cout 请输入你要查询的月份:;cin nSeason;switch (nSeason){case 12:case 1:case 2:cout nSeason 月份所处季节为冬季. endl;break;case 3:case 4:case 5:cout nSeason 月份所处季节为春季. endl;break;case 6:case 7:case 8:cout nSeason 月份所处季节为夏季. endl;break;case 9:case 10:case 11:cout nSeason 月份所处季节为秋季. endl;break;default:cout Error. endl;break;}return 0;
}w h i l e {\rm while} while语句实例 e x a m p l e 2 _ 10. c p p {\rm example2\_10.cpp} example2_10.cpp。 /*** 作者罗思维* 时间2023/09/27* 描述while语句实例计算123...100的值。*/
#include iostream
using namespace std;int main()
{int num 1, sum 0;while (num 100){sum sum num;num;}cout 12...100 sum endl;return 0;
}d o − w h i l e {\rm do-while} do−while语句实例 e x a m p l e 2 _ 11. c p p {\rm example2\_11.cpp} example2_11.cpp。 /*** 作者罗思维* 时间2023/09/27* 描述do-while语句实例计算123...100的值。*/
#include iostream
using namespace std;int main()
{int num 1, sum 0;do{sum sum num;num;} while (num 100);cout 12...100 sum endl;return 0;
}f o r {\rm for} for语句实例 e x a m p l e 2 _ 12. c p p {\rm example2\_12.cpp} example2_12.cpp。 /*** 作者罗思维* 时间2023/09/27* 描述for语句实例计算123...100的值。*/
#include iostream
using namespace std;int main()
{int sum 0;for (int num 1; num 100; num){sum sum num;}cout 12...100 sum endl;return 0;
}f o r {\rm for} for语句遍历数组中的元素 e x a m p l e 2 _ 13. c p p {\rm example2\_13.cpp} example2_13.cpp。 /*** 作者罗思维* 时间2023/09/27* 描述for语句实例遍历数组中的元素。*/
#include iostream
using namespace std;int main()
{char c[] {W, i, l, l, a, r, d};for (char word : c){cout word;}cout endl;return 0;
}b r e a k {\rm break} break语句 b r e a k {\rm break} break语句在 w h i l e 、 f o r 、 d o − w h i l e 、 s w i t c h {\rm while、for、do-while、switch} while、for、do−while、switch结构中执行时使程序立即退出这些结构从而执行该结构后面的第一条语句。 b r e a k {\rm break} break语句实例 e x a m p l e 2 _ 14. c p p {\rm example2\_14.cpp} example2_14.cpp。 /*** 作者罗思维* 时间2023/09/28* 描述break语句实例计算12...100;*/
#include iostream
using namespace std;int main()
{int sum 0;for (int i 1;; i){sum i;if (i 100){break;}}cout 12...100 sum endl;return 0;
}c o n t i n u e {\rm continue} continue语句 c o n t i n u e {\rm continue} continue语句在 w h i l e 、 f o r 、 d o − w h i l e {\rm while、for、do-while} while、for、do−while结构中执行时跳过当前循环的其余语句直接进入下一轮循环。 c o n t i n u e {\rm continue} continue语句实例 e x a m p l e 2 _ 15. c p p {\rm example2\_15.cpp} example2_15.cpp。 /*** 作者罗思维* 时间2023/09/29* 描述continue语句实例计算1-100内偶数和*/
#include iostream
using namespace std;int main()
{int sum 0;for (int i 1; i 100; i){if (i % 2 0){sum sum i;}}cout 1-100内偶数和为: sum endl;return 0;
}2.4 实战2
项目需求求某整数段区间中素数并输出。
需求分析
提示用户输入整数段区间判断素数规则对于数字 n { n} n如果其无法被任何从 2 2 2到 n \sqrt{n} n 的数整除则为素数。
代码实现 ( p r o j e c t 2 _ 2. c p p ) ({\rm project2\_2.cpp}) (project2_2.cpp):
/*** 作者罗思维* 时间2023/09/29* 描述求某整数区间段的素数。*/
#include iostream
#include math.h
using namespace std;int main()
{/*** 参数说明* nStart: 整数区间最小值;* nEnd: 整数区间最大值;* nCnt1,nCnt2: 循环计数器;* nSqrt: 存储平方根值;* nNum: 计算素数个数;*/int nStart 0, nEnd 0;int nCnt1 0, nCnt2 0;int nSqrt;int nNum 0;cout 请输入区间下限:;cin nStart;cout 请输入区间上限:;cin nEnd;if (nStart 1){cout 区间下限应该大于1. endl;return 1;}for (nCnt1 nStart; nCnt1 nEnd; nCnt1 1){nSqrt sqrt(nCnt1);for (nCnt2 2; nCnt2 nSqrt; nCnt2) // 判断nCnt1是否能被2到nSqrt的数整除;{if (nCnt1 % nCnt2 0){break;}}if (nCnt2 nSqrt 1) // 如果nCnt2nSqrt1,说明nCnt1不能被2到nSqrt的数整除;{cout nCnt1 \t;nNum nNum 1;if (nNum % 10 0){cout endl;}}}cout endl;return 0;
}2.5 实战3
项目需求根据用户输入的年份判断年份是否为闰年。
需求分析
用户输入年份判断闰年的规则年份可以被 4 4 4整除且不能被 100 100 100整除或能被 400 400 400整除的为闰年。
代码实现 ( p r o j e c t 2 _ 3. c p p ) ({\rm project2\_3.cpp}) (project2_3.cpp)
/*** 作者罗思维* 时间2023/09/29* 描述提示用户输入年份判断是否为闰年。*/
#include iostream
using namespace std;int main()
{int year 0;cout 请输入你需要查询的年份:;cin year;while (year 0){cout 输入的年份应该大于0,请重新正确输入年份:;cin year;}if (year % 400 0 || (year % 4 0 year % 100 ! 0)){cout year is leap year. endl;}else{cout year is not leap year. endl;}return 0;
}