实验二数据类型一实验目的1)了解C语言中数据类型的意义;2)掌握C语言整型常量、实型常量、字符型常量的构成及表示方法;3)掌握C语言中如何定义一个整型、字符型、实型变量以及为其赋值的方法。二程序示例[源程序2-1]常量的定义与使用1#include<stdio.h>2#define Length 103const int Width = 20;4int main()56constintHeight=307printf("%d,%d,%d(n",Length,Width,Height);8return O;9[程序输出]10,20,30[程序分析]常量定义一般有两种方法,第一种通过宏定义,第二种通过const关键字。源程序2-1第2行为宏定义,其关键字为#define,该部分的主要作用是将Length定义成一种符号,而此时的Length只是10的别名,在编译期间用10去取代程序中所有Length的值;第3行和第6行是分别将Width和Height定义为变量,但通过const关键字告诉编译器它的值是固定不变的,如果在程序中试图去修改它的值,在编译时会报错。第7行通过函数语句printf将所定义的三个常量的数据在控制台中打印输出显示,该函数在stdio.h头文件中定义,两个“”表示字符串,%d表示以十进制整数形式输出,n为转义字符,表示回车换行,即将当前位置移到下一行的开头;第8行的return语句表示返回,尾随的0表示返回值
实验二 数据类型 一 实验目的 1) 了解 C 语言中数据类型的意义; 2) 掌握 C 语言整型常量、实型常量、字符型常量的构成及表示方法; 3) 掌握 C 语言中如何定义一个整型、字符型、实型变量以及为其赋值的方法。 二 程序示例 [源程序 2-1] 常量的定义与使用 1 #include<stdio.h> 2 #define Length 10 3 const int Width = 20; 4 int main() 5 { 6 const int Height = 30; 7 printf("%d,%d,%d\n",Length,Width,Height); 8 return 0; 9 } [程序输出] 10,20,30 [程序分析] 常量定义一般有两种方法,第一种通过宏定义,第二种通过 const 关键字。 源程序 2-1 第 2 行为宏定义,其关键字为#define,该部分的主要作用是将 Length 定义成一种符号,而此时的 Length 只是 10 的别名,在编译期间用 10 去 取代程序中所有 Length 的值;第 3 行和第 6 行是分别将 Width 和 Height 定义为 变量,但通过 const 关键字告诉编译器它的值是固定不变的,如果在程序中试图 去修改它的值,在编译时会报错。 第 7 行通过函数语句 printf 将所定义的三个常量的数据在控制台中打印输出 显示,该函数在 stdio.h 头文件中定义,两个“”表示字符串,%d 表示以十进制 整数形式输出,\n 为转义字符,表示回车换行,即将当前位置移到下一行的开 头;第 8 行的 return 语句表示返回,尾随的 0 表示返回值
[源程序2-2]变量的定义与使用1#include<stdio.h>2int main()3{4int a= 1;5char b ='H';6doublec=3.14;78printf("Hello!Iam a character.Myvalue is %c and"9"my sizeis %lu byte.|n",b,sizeof(b));1011printf("Hello! I am an integer. My value is %d and "12"mysizeis%lubytes.(n",a,sizeof(int));1314printf("Hello!Iam a double floating point variable."15"Myvalueis%lfandmysizeis%lubytes.|n",c,sizeof(double));16return O;17)[程序输出]Hello!Iama character.MyvalueisHand mysize is1byteHello! I am an integer. My value is 1 and my size is 4 bytes.Hello!Iamadoublefloatingpointvariable.Myvalue is3.140000and mysizeis8 bytes.[程序分析]源程序2-2第4-6行分别定义了一个整型变量a,字符型变量b和双精度浮点型变量c,并分别初始化为1,"H和3.14。第8-9行通过函数语句printf实现对字符型变量b的输出,字符型变量占1个字节内存空间,即变量值;第11-12行和14-15行分别对整型变量和双精度浮点型变量进行了输出说明;应注意此例中的printf函数格式化输出采用了两个参数,这两个参数的输出顺序与输出控制符在输出字符串中的顺序一致。此外,sizeof函数是在stdio.h中定义的系统库函数,主要实现对操作数所占内存字节大小的计算,其输入值可以是变量名称(如第9行为变量b),也可以是变量类型(如第12、15行)
[源程序 2-2] 变量的定义与使用 1 #include <stdio.h> 2 int main() 3 { 4 int a = 1; 5 char b ='H'; 6 double c = 3.14; 7 8 printf("Hello! I am a character. My value is %c and" 9 "my size is %lu byte.\n", b,sizeof(b)); 10 11 printf("Hello! I am an integer. My value is %d and " 12 "my size is %lu bytes.\n", a,sizeof(int)); 13 14 printf("Hello! I am a double floating point variable." 15 " My value is %lf and my size is %lu bytes.\n",c,sizeof(double)); 16 return 0; 17 } [程序输出] Hello! I am a character. My value is H and my size is 1 byte. Hello! I am an integer. My value is 1 and my size is 4 bytes. Hello! I am a double floating point variable. My value is 3.140000 and my size is 8 bytes. [程序分析] 源程序 2-2 第 4-6 行分别定义了一个整型变量 a,字符型变量 b 和双精度浮 点型变量 c,并分别初始化为 1,’H’和 3.14。 第 8-9 行通过函数语句 printf 实现对字符型变量 b 的输出,字符型变量占 1 个字节内存空间,即变量值;第 11-12 行和 14-15 行分别对整型变量和双精度浮 点型变量进行了输出说明;应注意此例中的 printf 函数格式化输出采用了两个参 数,这两个参数的输出顺序与输出控制符在输出字符串中的顺序一致。 此外,sizeof 函数是在 stdio.h 中定义的系统库函数,主要实现对操作数所占 内存字节大小的计算,其输入值可以是变量名称(如第 9 行为变量 b),也可以 是变量类型(如第 12、15 行)
[源程序2-3]数据类型相互转换1#include<stdio.h>2int main()3{4unsigned char a,b;5unsigned int i,j;67a=32;8i=300;9 j=a;10b=i;1112printf("(unsigned char)%u-(unsigned int)%d\n",a,j);13printf("(unsigned int)%d-(unsignedchar)%u)n",i,b);1415j=(unsigned int)a;16b=(unsigned char)i;1718printf("(unsigned char)%u-→(unsigned int)%d)n",a,j);19printf("(unsigned int)%d→(unsigned char)%u)n",i,b);2021returno;221[程序输出](unsigned char)32→(unsigned int)32(unsigned int)300-(unsigned char)44(unsigned char)32→(unsigned int)32(unsigned int)300-(unsigned char)44[程序分析]源程序2-3分别定义两个无符号字符型变量a、b以及两个无符号整型变量i、j,第7-8行分别对变量a和i进行赋值,并在第9-10行将变量j的值设置为与变量a的值相等,将变量b的值设置为与变量i的值相等。由于a和b为无符号字符型变量,在内存中占用1个字节空间,而i和j为
[源程序 2-3] 数据类型相互转换 1 #include <stdio.h> 2 int main() 3 { 4 unsigned char a,b; 5 unsigned int i,j; 6 7 a=32; 8 i=300; 9 j=a; 10 b=i; 11 12 printf("(unsigned char)%u→(unsigned int)%d\n",a,j); 13 printf("(unsigned int)%d→(unsigned char)%u\n",i,b); 14 15 j=(unsigned int)a; 16 b=(unsigned char)i; 17 18 printf("(unsigned char)%u→(unsigned int)%d\n",a,j); 19 printf("(unsigned int)%d→(unsigned char)%u\n",i,b); 20 21 return 0; 22 } [程序输出] (unsigned char)32→(unsigned int)32 (unsigned int)300→(unsigned char)44 (unsigned char)32→(unsigned int)32 (unsigned int)300→(unsigned char)44 [程序分析] 源程序 2-3 分别定义两个无符号字符型变量 a、b 以及两个无符号整型变量 i、 j,第 7-8 行分别对变量 a 和 i 进行赋值,并在第 9-10 行将变量 j 的值设置为与变 量 a 的值相等,将变量 b 的值设置为与变量 i 的值相等。 由于 a 和 b 为无符号字符型变量,在内存中占用 1 个字节空间,而 i 和 j 为
无符号整型变量,在内存中占用4个字节空间,按照C语言数据类型转换的规则:如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,当较低类型的数据转换为较高类型时,一般只是形式上有所改变,而不影响数据的实质内容,而较高类型的数据转换为较低类型时则可能有些数据丢失。变量a的数值可以全部赋值于变量j,而变量i的第八位数据内容赋于变量b,十进制300转化为二进制为100101100取其低八位为101100,即为10进制整数44,因此第12-13行的打印结果即为程序输出的前两行。第15-16行代码为数据的强制类型转换,即使用括号将想要变量转换后的数据类型显式的标记出来,第18-19行以同样的方式对结果进行打印,可以看出强制类型转换与第9-10行自动转换的结果相同,用强制类型转换是一个好习惯,这样,至少从程序上可以看出即将进行何种数据类型的转换,三、程序编写1、编写控制台程序,定义圆周率为常量3.14,若圆半径r=2,求圆面积并保留3位小数输出。2、编写控制台程序,将单词CHINA分别转化为小写后输出,并输出他们的ASCII码值
无符号整型变量,在内存中占用4个字节空间,按照C语言数据类型转换的规则: 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低 类型转换为较高类型,然后再参加运算,当较低类型的数据转换为较高类型时, 一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转 换为较低类型时则可能有些数据丢失。变量 a 的数值可以全部赋值于变量 j,而 变量 i 的第八位数据内容赋于变量 b,十进制 300 转化为二进制为 100101100, 取其低八位为 101100,即为 10 进制整数 44,因此第 12-13 行的打印结果即为程 序输出的前两行。 第 15-16 行代码为数据的强制类型转换,即使用括号将想要变量转换后的数 据类型显式的标记出来,第 18-19 行以同样的方式对结果进行打印,可以看出强 制类型转换与第 9-10 行自动转换的结果相同,用强制类型转换是一个好习惯, 这样,至少从程序上可以看出即将进行何种数据类型的转换。 三、程序编写 1、编写控制台程序,定义圆周率为常量 3.14,若圆半径 r=2,求圆面积并保留 3 位小数输出。 2、编写控制台程序,将单词 CHINA 分别转化为小写后输出,并输出他们的 ASCII 码值