实验2顺序结构程序设计 2.1基本数据类型和表达式 【实验目的】 1. 掌握C语言程序的基本数据类型,变量定义: 2.掌握赋值语句的使用方法: 3. 熟悉各种运算的含义和功能,正确使用运算符书写各类表达式。 【相关知识点】 1.基本数据类型及变量的定义 C语言中基本的数据类型有三种:整型(it),实型(单精度浮点型float,.双精度浮点型 double),字符型(char)。 变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值。C语 言规定,所有要用到的变量都必须先定义其类型,然后才使用。 变量定义(声明)的一般形式: 类型名变量列表: 示例: int a.b: /体定义两个整型变量a和b,用于存放整数*/ float x,y; /体定义两个单精度浮点型变量x和y,用于存放实数*/ double m,n; /体定义两个双精度浮点型变量m和n,用于存放实数*/ char cl,c2; /*定义两个字符型变量c1和c2,用于存放字符*/ 变量定义的类型名必须是有效的数据类型,变量列表中可以有一个变量名或由逗号隔开 的多个变量名。 2.变量赋初值 变量定义后,常常需要对某些变量预先赋初值。C语言中可以在变量定义的同时给变量初 始化。 -23-
实验 2 顺序结构程序设计 2.1 基本数据类型和表达式 【实验目的】 1. 掌握 C 语言程序的基本数据类型,变量定义; 2. 掌握赋值语句的使用方法; 3. 熟悉各种运算的含义和功能,正确使用运算符书写各类表达式。 【相关知识点】 1. 基本数据类型及变量的定义 C 语言中基本的数据类型有三种:整型(int),实型(单精度浮点型 float,双精度浮点型 double),字符型(char)。 变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值。C 语 言规定,所有要用到的变量都必须先定义其类型,然后才使用。 变量定义(声明)的一般形式: 类型名 变量列表; 示例: int a,b; /*定义两个整型变量 a 和 b,用于存放整数*/ float x,y; /*定义两个单精度浮点型变量 x 和 y,用于存放实数*/ double m,n; /*定义两个双精度浮点型变量 m 和 n,用于存放实数*/ char c1,c2; /*定义两个字符型变量 c1 和 c2,用于存放字符*/ 变量定义的类型名必须是有效的数据类型,变量列表中可以有一个变量名或由逗号隔开 的多个变量名。 2. 变量赋初值 变量定义后,常常需要对某些变量预先赋初值。C 语言中可以在变量定义的同时给变量初 始化。 - 23 -
示例1: int a=5; /体定义整型变量a,给a赋初值5*/ 相当于 int a; a=5; 也可以只对部分变量初始化。 示例2: float x=2.57,y; /体定义实型变量x和y,只给x赋初值2.57*/ 对字符变量赋初值时,要用一对单引号将单个字符括起来,组成字符常量。 示例3: char cl-=m',c2=n';/体给两个字符型变量cl和c2,分别赋初值m和n*/ 如果需要给几个变量赋予相同的值,则需要给每个变量都单独赋值。 示例: it=2,j=2,k=2;/体给三个变量ij,k都赋初值2*/ 3.运算符和表达式 C语言的算术运算符有多种,应用范围很广,几乎所有的基本操作都作为运算符处理。这 里介绍如下常用的几种: 算术运算符和表达式。算术运算符包括:“+”、“.”、“*”、“”、“%”、“+”(自增运算) 和“”(自减运算)。 示例1: a*k+7/4+5%3+'b': itt;+ti 上述表达式中,74的结果值为1,因为两个整数相除结果为整数:+或+i的结果是将 i的值增1,相当于=+l:b是将字符b转换成它的ASC码,再进行计算。 赋值运算符和表达式。赋值运算符包括:“=”、“+=”、“=”、“*=”、“仁”、“%=”。 示例2: a=2+(b=5)方 /*相当于两个赋值语句:b=5:a=2+b:*/ j+=3; 体相当于赋值语句:jj+3;*/ 条件运算符和表达式。条件表达式的一般形式: -24-
示例 1: int a=5; /*定义整型变量a,给a赋初值 5*/ 相当于: int a; a=5; 也可以只对部分变量初始化。 示例 2: float x=2.57,y; /*定义实型变量 x 和 y,只给 x 赋初值 2.57*/ 对字符变量赋初值时,要用一对单引号将单个字符括起来,组成字符常量。 示例 3: char c1=′m′,c2=′n′; /*给两个字符型变量 c1 和 c2,分别赋初值 m 和 n*/ 如果需要给几个变量赋予相同的值,则需要给每个变量都单独赋值。 示例: int i=2,j=2,k=2; /*给三个变量 i,j,k 都赋初值 2*/ 3. 运算符和表达式 C 语言的算术运算符有多种,应用范围很广,几乎所有的基本操作都作为运算符处理。这 里介绍如下常用的几种: 算术运算符和表达式。算术运算符包括:“+”、“-”、“*”、“/”、“%”、“++”(自增运算) 和“--”(自减运算)。 示例 1: a*k+7/4+5%3+′b′; i++; ++i 上述表达式中,7/4 的结果值为 1,因为两个整数相除结果为整数;i++或++i 的结果是将 i 的值增 1,相当于 i=i+1;′b′是将字符 b 转换成它的 ASCII 码,再进行计算。 赋值运算符和表达式。赋值运算符包括:“=”、“+=”、“-=”、“*=”、“/=”、“%=”。 示例 2: a=2+(b=5); /*相当于两个赋值语句:b=5; a=2+b; */ j+=3; /*相当于赋值语句:j=j+3; */ 条件运算符和表达式。条件表达式的一般形式: - 24 -
表达式①?表达式②:表达式③ 如果表达式①的值为1(真),则整个条件表达式的计算结果为表达式②的值,如果表达 式①的值为0(假),则整个条件表达式的计算结果为表达式③的值。 示例3: a>b?a:b; /体当a=2,b=5时,条件表达式的值为5*/ 逗号运算符和表达式。逗号运算符为:“,”,逗号表达式是把多个表达式用逗号连接起 来,按顺序求值,整个逗号表达式的值,就是最后一个表达式的值。 示例: x=2*3,X=x+4,y=X+1; /体逗号表达式的值是11,此时x=10,y=11/ 【实验任务】 一、程序改错 该部分实验主要训练学生读简单程序的能力,并在理解程序的基础上,改正程序中出现 的问题,这些问题都是初学者经常容易犯的错误,针对顺序结构程序设计这一章,主要有如 下问题: 1)没有正确定义变量: 2)变量没有初始化: 针对上面的问题,查找下面程序中存在的错误并改正。 1.打开C:\c-programming\2pg2101.cpp,该程序是求两个数的和,两个数为a=3,b=5。程 序中有一处错误,修改程序,使其能够正确运行。修改后的程序以pg2101ok.cpp保存。该源 程序内容如下: #include<stdio.h> void main(void) int a.b.s: a=3; s-a+b: printf("a=%d,b=%d\n",a,b); printf("s=%d\n",s); -25-
表达式①?表达式②:表达式③ 如果表达式①的值为 1(真),则整个条件表达式的计算结果为表达式②的值,如果表达 式①的值为 0(假),则整个条件表达式的计算结果为表达式③的值。 示例 3: a>b ?a : b; /*当 a=2, b=5 时,条件表达式的值为 5 */ 逗号运算符和表达式。逗号运算符为:“,” ,逗号表达式是把多个表达式用逗号连接起 来,按顺序求值,整个逗号表达式的值,就是最后一个表达式的值。 示例: x=2*3, x=x+4, y=x+1; /*逗号表达式的值是 11,此时 x=10, y=11 */ 【实验任务】 一、程序改错 该部分实验主要训练学生读简单程序的能力,并在理解程序的基础上,改正程序中出现 的问题,这些问题都是初学者经常容易犯的错误,针对顺序结构程序设计这一章,主要有如 下问题: 1) 没有正确定义变量; 2) 变量没有初始化; 针对上面的问题,查找下面程序中存在的错误并改正。 1.打开 C:\c-programming\2\pg2101.cpp,该程序是求两个数的和,两个数为 a=3, b=5。程 序中有一处错误,修改程序,使其能够正确运行。修改后的程序以 pg2101_ok.cpp 保存。该源 程序内容如下: #include<stdio.h> void main(void) { int a,b,s; a=3; s=a+b; printf("a=%d,b=%d\n",a,b); printf("s=%d\n",s); - 25 -
printf("\n"); 了提示:如何发现问题? 编译、链接和运行后,出现错误结果,如图2.1.1所示。 e"C:\c-programming\2\Debug\pg2101.exe" 回☒ a=3,b=-858993460 8■-858993457 Press any key to continue 图2.1.1pg2101.cpp的错误运行结果 关闭运行窗口,使用工具栏上的按钮或者快捷键FI0命令,启用单步运行程序,进行 单步调试,当单步运行到 printf("s=%d\n",s); 语句时,变量窗口的变量值如图2.1.2所示。 Context:mainn Name Value a -858993460 858993457 回printf returned17 Auto Locals this☑ 图2.1.2变量窗口中的变量值 在变量窗口的观察区中发现,变量a已被赋初值为3,变量b的值是个随机值,表示变量 b没有被赋初值,从而使得最后的求和结果s的值也发生错误。 改正程序后的运行结果示例如图2.1.3所示。 ar"C:\c-programming\2\Debug\pg2101_ok.exe" 回x a=3,b=5 s=8 Press any key to continue 图2.1.3pg2101_ok.cpp的运行结果 2.打开C:lc-programming2八pg2102.cpp,该程序中有一处错误,修改程序,使其能够正确 运行,并观察变量i,j的结果值。修改后的程序以pg2102_ok.cpp保存。该源程序内容如下: #include<stdio.h> -26-
printf("\n"); } 提示:如何发现问题? 编译、链接和运行后,出现错误结果,如图 2.1.1 所示。 图 2.1.1 pg2101.cpp 的错误运行结果 关闭运行窗口,使用工具栏上的 按钮或者快捷键 F10 命令,启用单步运行程序,进行 单步调试,当单步运行到 printf("s=%d\n",s); 语句时,变量窗口的变量值如图 2.1.2 所示。 图 2.1.2 变量窗口中的变量值 在变量窗口的观察区中发现,变量 a 已被赋初值为 3,变量 b 的值是个随机值,表示变量 b 没有被赋初值,从而使得最后的求和结果 s 的值也发生错误。 改正程序后的运行结果示例如图 2.1.3 所示。 图 2.1.3 pg2101_ok.cpp 的运行结果 2.打开 C:\c-programming\2\pg2102.cpp,该程序中有一处错误,修改程序,使其能够正确 运行,并观察变量 i, j 的结果值。修改后的程序以 pg2102_ok.cpp 保存。该源程序内容如下: #include<stdio.h> - 26 -
void main(void) int i; i=3; j=++i printf("i=%d,j=%d\n",ij); =3; j=i++, printf("i=%d,j=%d\n",ij); printf("\n"); 自提示:如何发现问题? 编译后,信息窗口出现如下错误: C:\c-programming\2\pg2102.cpp(7):error C2065:'j':undeclared identifier 发现问题所在,是变量j没有定义。 改正程序后的运行结果示例如图2.14所示。 "C:\c-programming\2\Debug\pg2102_ok.exe" 回8 i=4.j=4 i=4.j=3 Press any key to continue 4 图2.1.4pg2102_ok.cpp的运行结果 二、程序编写 1.定义三个整型变量,如a,b,c,计算逗号表达式:c=(a=7,b=a+2,b+1),并输出变量a,b, c的值。编写的源程序以pg2301.cpp保存。 训练要点:掌握整型数据的定义方法,了解逗号表达式的运算规则,并能正确使用逗号 表达式,输出正确结果。 提示:整型数据的输出格式为:printf("%d",a; 程序运行结果参考示例如图2.1.5所示。 -27-
void main(void) { int i; i=3; j=++i; printf("i=%d, j=%d\n",i,j); i=3; j=i++; printf("i=%d, j=%d\n",i,j); printf("\n"); } 提示:如何发现问题? 编译后,信息窗口出现如下错误: C:\c-programming\2\pg2102.cpp(7) : error C2065: 'j' : undeclared identifier 发现问题所在,是变量 j 没有定义。 改正程序后的运行结果示例如图 2.1.4 所示。 图 2.1.4 pg2102_ok.cpp 的运行结果 二、程序编写 1.定义三个整型变量,如 a, b, c,计算逗号表达式:c=(a=7,b=a+2,b+1),并输出变量 a, b, c 的值。编写的源程序以 pg2301.cpp 保存。 训练要点:掌握整型数据的定义方法,了解逗号表达式的运算规则,并能正确使用逗号 表达式,输出正确结果。 提示:整型数据的输出格式为:printf("%d",a); 程序运行结果参考示例如图 2.1.5 所示。 - 27 -