导致疾病的原因实验三 基本数据类型所占的存储空间与类型名与顺序结构还有字符串的与常量的转换
实验三 基本数据类型与顺序结构 实验目的:
1( 掌握C语言基本数据类型的使用和定义
2( 掌握表达式的书写规范与运算符的优先级
3( 掌握书写代码的基本规则
4( 掌握顺序结构流程图、选择结构流程图和程序代码的相互转换 5( 熟悉顺序结构基本语句(C语句的分类、表达式语句、赋值语句、复合语句和空语句) 6( 字符的输入/输出函数的使用 7( 格式输入/输出函数的使用
实验相关内容简介:
1(基本数据类型
短整型:short
整形 ...
实验三 基本数据类型所占的存储空间与类型名与顺序结构还有字符串的与常量的转换
实验三 基本数据类型与顺序结构 实验目的:
1( 掌握C语言基本数据类型的使用和定义
2( 掌握
达式的书写
与运算符的优先级
3( 掌握书写代码的基本规则
4( 掌握顺序结构流程图、选择结构流程图和程序代码的相互转换 5( 熟悉顺序结构基本语句(C语句的分类、表达式语句、赋值语句、复合语句和空语句) 6( 字符的输入/输出
的使用 7( 格式输入/输出函数的使用
实验相关内容简介:
1(基本数据类型
短整型:short
整形 整型:int
长整型:long
单精度:float
基本数据类型 浮点型
双精度:double
字符型:char
表3.1 基本数据类型所占的存储空间与类型名
类型名 ANSI C 字节数 Visual C++字节数 ANSI C取值范围 1515[signed] int 2 4 -2~(2-1) 16unsigned int 2 4 0~(2-1) 1515[signed] short [int] 2 2 -2~(2-1)
16unsigned short [int] 2 2 0~(2-1)
3131long [int] 4 4 -2~2
32unsigned long [int] 4 4 0~2-1
-3738float 4 4 -10~10
-307308double 8 8 -10~10
-49314932long double 16 10 -10~10 char 1 1 0-255
表3.2 字符型数据中的转义字符列表
字符形式 含义 ASCII码
换行,将当前位置移到下一行开头 \n 10
水平制表位 \t 9
退格 \b 8
回车 \r 13
换页 \f 12
反斜杠字符“\” \\ 92
单引号“ ‘” \’ 39
双引号字符 \” 34
1到3位8进制数所代表的字符 \ddd
1到2位16进制数所代表的字符 \xhh
2(不同数据类型在表达式中运算时自动转换原则
C语言规定:数据的转换有隐形转换和显式转换两种。隐式转换即由C语言在赋值和计算时自动转换。其转换原则为由存储空间小的数据类型自动转换成存储空间大的数据类型。具体转换关系如图3.1所示。
图3.1 数据类型转换规则
显式转换是指由用户强制指定数据转换后的类型,主要用在把占存储空间大的数据类型转换为占存储空间小的数据类型。显式转换的语法为:
(转换后的数据类型)变量,如 (int) x; /*x原为long型*/
3(运算符及其优先级
运算符根据需要运算操作数的个数不同分为:
单目运算符:只有一个操作数的运算符。一般是操作数放在运算符之后。
双目运算符:有两个操作数的运算符,一般是运算符前后各有一个操作数。
三目运算符:有三个操作数的运算符。
运算符结合性:是指运算符在表达式中默认和哪个操作数结合完成运算。如果是左结合的即运算符默认先和它左边的操作数结合完成运算。运算从左到右执行如“+”等大多数运算。如果是右结合的即运算符默认首先和右边的操作数结合完成运算,运算从右至左。比如“++”等运算。总的来说运算符的优先级和结合性如表3.3所示。
注意:除了++、--、赋值运算符=,等单目运算符及?:这个三目运算符以及赋值运算符是从右到左外,其余都遵循从左到右规则。
表3.3 运算符的优先级和结合性一览表
优先级 运算符(高 低)结合性运算符类型 高 从左至右 双目运算符 ( ) [ ] -> .从左至右双目运算符
! ~ ++ -- (类型) sizeof + - *从右至左单目运算符&
* / %从左至右双目运算符
+ -从左至右双目运算符
<< >>从左至右双目运算符
< <= > >=从左至右双目运算符
== !=从左至右双目运算符
&从左至右双目运算符
^从左至右双目运算符
|从左至右双目运算符
&&从左至右双目运算符
||从左至右双目运算符
?:从右至左三目运算符
= += -= *= /= %= &= ^= |= <<=从右至左双目运算符>>=
低 ,从左至右双目运算符
实验例题
【例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 b
97 98
分析:字符型数据在计算机中是以ASCII码存储的,当以字符型输出时输出对应字符,
当以数值型输出时输出对应的ASCII码。
2sin(3)8,(20,4)【例3.2】求表达式的值 32,4*3
#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; //4294967296〉unsigned的范围
f=32767;
c=a;
d=b;
printf("%d,%d\n",a,b);
printf("%u,%u\n",a,b);//以无符号的十进制形式输出
printf("%u,%u\n",c,d);
c=a=e;
d=b=f;
printf("%d,%d\n",a,b);
printf("%u,%u\n",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=%f\n",radius); /*输出圆半径*/
printf("length=%7.2f,area=%7.2f\n",length,area);/*输出圆周长、面积*/
}
程序运行结果如下:
radius=1.500000
length= 9.42,area= 7.07
分析:因printf(“radius=%f\n”,radius);语句中格式字符串的占位符位%f,故输出1.500000,因在%f后有 \n转义字符故下面的输入换行了。
又因printf(“length=%7.2f,area=%7.2f\n”,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
31~3131分析:因在VC++6.0中整数的表示范围是-22-1。而2-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=%2d\n",num1,num1,num1,num1);
/*用3种不同格式,输出long型数据num2的值*/
printf("num2=%ld,num2=%8ld,num2=%5ld\n",num2,num2,num2);
printf("num1=%ld\n",long(num1)); }
程序运行结果如下:
num1=123,num1= 123,num1=123 ,num1=123 num2=123456,num2= 123456,num2=123456 num1=123
分析:因输出占位符中有%5d表示输出五位右对齐,%-5d表示输出5位左对齐。所以有第一行的结果。第三行有%ld所以输出时以长整型输出。
(2)
#include
void main()
{
float f=123.456;
double d1,d2;
d1=1111111111111.111111111;
d2=2222222222223.222222222;
2f,%.2f\n",f,f,f,f,f); printf("%f,%12f,%13.2f,%-13.
printf("d1+d2=%f\n",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,%d\n",c,c,c);
printf("i=%d,%c",i,i);
}
程序运行结果如下:
c=A, A,65
i=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=%d\n",num1,num2,num3);
printf("sum=%d,aver=%7.2f\n",sum,aver);
}
例3.9】从键盘输入一个小写字母,要求用大小写字母形式输出该字母及对应的ASCII【
码值。
#include "stdio.h"
main()
{
char c1,c2;
printf("Input a lowercase letter: ");
c1=getchar();
putchar(c1);printf(",%d\n",c1);
c2=c1-32; /*将小写字母转换成对应的大写字母*/
printf("%c,%d\n",c2,c2);
}
该程序运行结果:程序运行情况如下:
Input a lowercase letter: a?
a,97
A,65
分析:该程序利用ASCII码的编码规律,把小写字母的ASCII码值减去32即得到了对应的大写字母的ASCII码。然后按字符输出即可。
本文档为【导致疾病的原因】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。