实验三 基本数据类型所占的存储空间与类型名与顺序结构还有字符串的与常量的转换.doc_第1页
实验三 基本数据类型所占的存储空间与类型名与顺序结构还有字符串的与常量的转换.doc_第2页
实验三 基本数据类型所占的存储空间与类型名与顺序结构还有字符串的与常量的转换.doc_第3页
实验三 基本数据类型所占的存储空间与类型名与顺序结构还有字符串的与常量的转换.doc_第4页
实验三 基本数据类型所占的存储空间与类型名与顺序结构还有字符串的与常量的转换.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三 基本数据类型与顺序结构实验目的:1 掌握C语言基本数据类型的使用和定义2 掌握表达式的书写规范与运算符的优先级3 掌握书写代码的基本规则4 掌握顺序结构流程图、选择结构流程图和程序代码的相互转换5 熟悉顺序结构基本语句(C语句的分类、表达式语句、赋值语句、复合语句和空语句)6 字符的输入/输出函数的使用 7 格式输入/输出函数的使用实验相关内容简介:短整型:short 整形 整型:int长整型:long 单精度:float基本数据类型浮点型 双精度:double 字符型:char1 基本数据类型 表3.1 基本数据类型所占的存储空间与类型名类型名ANSI C 字节数Visual C+字节数ANSI C取值范围signed int24-215(215-1)unsigned int240(216-1)signed short int22-215(215-1)unsigned short int220(216-1)long int44-231231unsigned long int440232-1float44-10-371038double88-10-30710308long double1610-10-4931104932char110-255表3.2 字符型数据中的转义字符列表字符形式含义ASCII码n换行,将当前位置移到下一行开头10t水平制表位9b退格8r回车13f换页12反斜杠字符“”92单引号“ ”39”双引号字符34ddd1到3位8进制数所代表的字符xhh1到2位16进制数所代表的字符2 不同数据类型在表达式中运算时自动转换原则C语言规定:数据的转换有隐形转换和显式转换两种。隐式转换即由C语言在赋值和计算时自动转换。其转换原则为由存储空间小的数据类型自动转换成存储空间大的数据类型。具体转换关系如图3.1所示。图3.1 数据类型转换规则显式转换是指由用户强制指定数据转换后的类型,主要用在把占存储空间大的数据类型转换为占存储空间小的数据类型。显式转换的语法为:(转换后的数据类型)变量,如 (int) x; /*x原为long型*/3 运算符及其优先级运算符根据需要运算操作数的个数不同分为:单目运算符:只有一个操作数的运算符。一般是操作数放在运算符之后。双目运算符:有两个操作数的运算符,一般是运算符前后各有一个操作数。三目运算符:有三个操作数的运算符。运算符结合性:是指运算符在表达式中默认和哪个操作数结合完成运算。如果是左结合的即运算符默认先和它左边的操作数结合完成运算。运算从左到右执行如“+”等大多数运算。如果是右结合的即运算符默认首先和右边的操作数结合完成运算,运算从右至左。比如“+”等运算。总的来说运算符的优先级和结合性如表3.3所示。注意:除了+、-、赋值运算符=,等单目运算符及?:这个三目运算符以及赋值运算符是从右到左外,其余都遵循从左到右规则。表3.3 运算符的优先级和结合性一览表实验例题【例3.1】运行程序并分析结果#include void main()char c1,c2;c1=a;c2=b; printf(%c %c n,c1,c2);printf(%d %d n,c1,c2);运行结果:a b97 98分析:字符型数据在计算机中是以ASCII码存储的,当以字符型输出时输出对应字符,当以数值型输出时输出对应的ASCII码。【例3.2】求表达式的值#include #include void main()double f;f=sin(3*3)*sqrt(8-(20/4)/(32+4*3);printf(result=%f,f);运行结果:result=0.016223分析: 此类程序说明C语言中没有乘方运算,对于高次方可用指数函数pow()完成,对于开方用算数平方根函数sqrt()完成,C语言中的运算优先级改变用”( )”来完成。另外C语言还提供丰富的数学运算函数,均保存在math.h中。使用时一定要把“math.h”头文件包含在程序中。【例3.3】看程序分析运行结果。#include void main() int a,b;unsigned c,d;long e,f;a=100;b= - 100;e=4294967296; /4294967296unsigned的范围f=32767;c=a;d=b;printf(%d,%dn,a,b);printf(%u,%un,a,b);/以无符号的十进制形式输出printf(%u,%un,c,d);c=a=e;d=b=f;printf(%d,%dn,a,b);printf(%u,%un,c,d);运行结果:100,-100 100,4294967196 100,4294967196 0,32767 0,32767分析:该程序说明各种数据类型所表示值的范围4294967296是2的32次方。由于整数类型为4个字节所以最大能表示0-4294967296。【例3.4】已知圆半径radius=1.5,求圆周长和圆面积。#include void main()float radius,length,area,pi=3.1415926;radius=1.5; length=2*pi*radius;/*求圆周长*/ area=pi*radius*radius; /*求圆面积*/ printf(radius=%fn,radius);/*输出圆半径*/ printf(length=%7.2f,area=%7.2fn,length,area);/*输出圆周长、面积*/ 程序运行结果如下: radius=1.500000 length= 9.42,area= 7.07分析:因printf(“radius=%fn”,radius);语句中格式字符串的占位符位%f,故输出1.500000,因在%f后有 n转义字符故下面的输入换行了。又因printf(“length=%7.2f,area=%7.2fn”,length,area);中的占位符%7.2f,所以输出9.42和7.07时前面有空格,应该是每个域占7个位置,小数点后保留两位。【例3.5】运行并分析结果#include void main()int u=2147483647,u1=2147483648;/* 2147483648为231*/printf(u=%d %d n,u,u1);程序运行结果如下:u=2147483647-2147483648分析:因在VC+6.0中整数的表示范围是-231231-1。而231-1为2147483647,所以当输出u时能正常输出,当输出u1时系统就溢出了,导致了错误的结果-2147483648。【例3.6】运行并分析结果。(1)#include void main()int num1=123;long num2=123456;/*用3种不同格式,输出int型数据num1的值*/printf(num1=%d,num1=%5d,num1=%-5d,num1=%2dn,num1,num1,num1,num1); /*用3种不同格式,输出long型数据num2的值*/ printf(num2=%ld,num2=%8ld,num2=%5ldn,num2,num2,num2);printf(num1=%ldn,long(num1); 程序运行结果如下:num1=123,num1= 123,num1=123 ,num1=123num2=123456,num2= 123456,num2=123456num1=123分析:因输出占位符中有%5d表示输出五位右对齐,%-5d表示输出5位左对齐。所以有第一行的结果。第三行有%ld所以输出时以长整型输出。(2)#include void main()float f=123.456;double d1,d2;d1=1111111111111.111111111;d2=2222222222223.222222222;printf(%f,%12f,%13.2f,%-13.2f,%.2fn,f,f,f,f,f);printf(d1+d2=%fn,d1+d2);程序运行结果如下: 123.456001, 123.456001, 123.46,123.46 ,123.46 d1+d2=3333333333334.333000分析:程序的输出结果中,数据123.456001和3333333333333.333000中的001和000都是无意义的,因为它们超出了有效数字的范围。对于实数,也可使用格式符%e,以标准指数形式输出:尾数中的整数部分大于等于1、小于10,小数点占一位,尾数中的小数部分占5位;指数部分占4位(如e-03),其中e占一位,指数符号占一位,指数占2位,共计11位。也可使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式、且不输出无意义的零。【例3.7】运行程序并分析结果#include void main()char c=A;int i=65;printf(c=%c,%5c,%dn,c,c,c);printf(i=%d,%c,i,i);程序运行结果如下: c=A, A,65i=65,A分析:该程序说明对于字符型的数据和整型数据从计算机存储的本质上是没有什么区别的。区别只在于他们的表现形式。所以整形数据可以按字符输出,字符型数据也可以按整型输出。【例3.8】输入任意三个整数,求它们的和及平均值。#include void main()int num1,num2,num3,sum;/先定义float aver;printf(Please input three numbers:);scanf(%d,%d,%d,&num1,&num2,&num3);/*输入三个整数*/sum=num1+num2+num3; /*求累计和*/aver=sum/3.0; /*求平均值*/ printf(num1=%d,num2=%d,num3=%dn,num1,num2,num3); printf(sum=%d,aver=%7.2fn,sum,aver);【例3.9】从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的ASCII码值。#include stdio.hmain()char c1,c2;printf(Input a lower

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论