《c语言1 数据类型.doc》由会员分享,可在线阅读,更多相关《c语言1 数据类型.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、广 州 大 学实 验 报 告学 院 商学院 专业、班级 11级电子商务 姓名、学号 钟琪 课程名称 c语言程序设计 项目名称 数据类型、运算符和表达式 实验报告 实验时间: 2012 年 3月 16日学院商学院年级、专业、班11级电子商务姓名钟琪成绩课程名称C语言程序设计实验项目名 称数据类型、运算符和表达式指导教师签名一、实验目的1. 掌握C语言数据类型,熟悉如何定义一个整形、字符型和实型的变量,掌握它们赋值的方法。2. 掌握不同数据类型数据之间赋值的规律。3. 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用。二、实验原理(算法分析(包括流程
2、图))本实验的内容为:1.变量a、b中各存有一个整数,交换两数后输出。 实现上述功能的算法如下:实验1 数据类型、运算符和表达式 实验报告开课实验室:2012年3月16日2. 从键盘输入一个字符,输出这字符的ASCII码的值。三、实验过程原始记录(数据、图表、计算等)1. 设A=10,B=20,若要交换这两数,则需要借用一中间变量。首先将A中的数值存入变量T 中进行保存,然后将B中的数值存入A中,再将T中的数值存入B中。int A,B,T; A=10;B=20;T=B;B=A;A=T;printf(A=%d,B=%dn,A,B);return 0;装订线2. 一个整数,只要它的值在0255之间
3、,就以用字符形式输出,在输 出前,系统会将该整数转换为相应的ASCII码的字符;一个字符也可以用一个整数输出,输出的整数即为这字符的ASCII码值。char a;scanf(%c,&a);printf(a=%dn,a); /a是所输入数的ASC代码return 0;四、实验结果及分析1.通过这个实验,我能熟练的掌握数据的交换。通过这个实验,我知道了普通字符常量在计算机储存单元中是以ASC代码的形式存在的,并清楚了字符间的转换方法。3. 整形变量的用法。编辑运行下面的程序,在上机前先用人工分析程序,写出应得结果,上机后将二者对照。#include int main() int a,b;unsig
4、ned c,d;long e,f;a = 100; b = -100;e = 50000; f = 32767;c = a; d = b;printf(%d,%dn, a, b);printf(%u,%un, a, b);printf(%u,%un, c, b);c = a = e;d = b = f;printf(%d,%dn, a, b);printf(%u,%un, c, d);return 0;人工分析程序:#include stdafx.hint main(int argc, char* argv) int a,b; unsigned c,d;long e,f;a = 100; b
5、= -100;e = 50000; f = 32767;c = a; d = b; /c=100,d=-100printf(%d,%dn, a, b); /输出有符号整数a=100,b=-100 printf(%u,%un, a, b); /输出无符号型数据a=100,b=?printf(%u,%un, c, b); /输出无符号型数据c=100,b=?c = a = e; /c=a=50000d = b = f; /d=b=32767printf(%d,%dn, a, b); /输出有符号整数a=50000,b=32767printf(%u,%un, c, d); /输出无符号型数据c=50
6、000,b=32767return 0;计算机运行结果:装线订针对以上程序进行的研究分析:(1). 将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的 表示形式。(以-5为例)有符号的变量1无符号的变量(2). 将一个大于32767的 整数赋给整形变量,会得到什么结果。画出它们在内存中的表示形式(在VC环境中,用short int )。(以32768为例)(3). 将一个 整数赋给无符号的变量,会得到什么结果(分别考虑该整数的值大于或等于65535 以及小于65535 的情况)。画出它们在内存中的表示形式((在VC环境中,用short int ))。65535:11111 /
7、输出6553565536: /数据溢出,只读到后面16位,输出010:01010 /输出1065534:1110 /输出65534 4. 执行结果分析程序中各个语句的作用。#include int main() int a, b; float d, e; char c1, c2; double f, g; long m, n; unsigned int p, q; a=61; b=62; c1=a; c2=b; d=5.67; e=-6.78; f=1234.56789; g=0.; m=50000; n=-60000; p=32768; q=40000;printf(a=%d,b=%dnc1
8、=%c,c2=%cn,a,b,c1,c2); printf(d=% f,e=% fn,d,e); printf(f=% f,g=% fn,f,g); printf(m=%ld,n=%ldnp=%u,q=%un,m,n,p,q); return 0;装订线人工分析:#include stdafx.hint main(int argc, char* argv) int a, b; /整型 float d, e; /浮点型 char c1, c2; /字符型 double f, g; /双精度浮点型 long m, n; /长整型 unsigned int p, q; /无符号整型 a=61;b=6
9、2; d=5.67; e=-6.78; c1=a; c2=b; /c1=97,c2=98 f=1234.56789; g=0.; m=50000;n=-60000; p=32768; q=40000; printf(a=%d,b=%dnc1=%c,c2=%cn,a,b,c1,c2); /输出a=61,b=62,c1=a,c2=b printf(d=% f,e=% fn,d,e); /输出具6位小数的实数d=5.,e=-6. printf(f=% f,g=% fn,f,g); / 输出具6位小数的实数f=1234.,g=0. printf(m=%ld,n=%ldnp=%u,q=%un,m,n,p
10、,q); /输出m=50000,n=-60000,p=32768,q=40000; return 0;针对以上程序进行的研究分析:(1). 将程序中的第二、第三个printf语句修改为如下形式,然后运行程序,察看结果。 printf(d=%-6.2f,e=%-6.2fn,d,e); printf(f=%-15.6f,g=%-15.10fn,f,g);(2). 将上述两个printf语句进一步修改为如下形式,然后运行程序,察看结果。 printf(d=%-6.2fte=%-6.2fn,d,e); printf(f=%-15.6ftg=%-15.10fn,f,g);(3). 将程序的第10-15行
11、修改为如下语句:a=61;b=62;c1=a;c2=b;f=1234.56789;g=0.;d=f;e=g;p=a=m=50000;q=b=n=-60000;运行程序,并分析结果。装订线分析:int a, b;float d, e;char c1, c2; double f, g; long m, n; unsigned int p, q;a=61;b=62; /a=61,b=62c1=a;c2=b; /c1=97,b=98f=1234.56789;g=0.; / f=1234.56789,g=0.d=f;e=g; /d=1234.56789,e=0.p=a=m=50000;q=b=n=-60
12、000; /p=a=m=50000,q=b=n=-60000printf(a=%d,b=%dnc1=%c,c2=%cn,a,b,c1,c2); /输出整数a=61,b=62,字符c1=a,c2=b printf(d=% f,e=% fn,d,e); /输出具6位有效数字的实数d=1234,e=0. printf(f=% f,g=% fn,f,g); / 输出具6位小数的实数f=1234.,g=0.printf(m=%ld,n=%ldnp=%u,q=%un,m,n,p,q); /输出m=50000,n=-60000,p=50000,q=?;(4). 修改(1)中的程序,不使用赋值语句,而用下面的
13、scanf语句为a、b、c1、c2、d、e输入数据:scanf(%d%d%c%c%f%f,&a,&b,&c1,&c2,&d,&e); 请按照程序原来中的数据,选用正确的数据输入格式,为上述变量提供数据。使用如下数据输入格式,为什么得不到正确的结果?输入数据:61 62 a b 5.67 -6.78输入数据1 2a3 4 5 输入数据:61 62 a b 5.67 -6.78正确输入应该为:61 62ab 5.67 -6.78分析: scanf(%d%d%c%c%f%f,&a,&b,&c1,&c2,&d,&e);printf(a=%d,b=%dnc1=%c,c2=%cn,a,b,c1,c2);c
14、1,c2都是以字符型输入和输出的,而空格的ASC代码是32,如果在输入62后再加空格键,输出的c1应该是空格,电脑继续往下读空格键后是a,所以c2应该等于a,同理,d读进的是空格,e读进的是b。(4). 进一步修改中使用的程序,使f和g的值用scanf()函数输入。线订装 scanf(%d%d%c%c%f%f,&a,&b,&c1,&c2,&d,&e); scanf(%lf %lf,&f,&g); m=50000; n=-60000; p=32768; q=40000;(5). 进一步修改上面的程序,使其他所有变量的值都改用scanf()函数输入。 scanf(%d%d%c%c%f%f,&a,&
15、b,&c1,&c2,&d,&e); scanf(%lf %lf,&f,&g); scanf(%ld%ld%u%u,&m,&n,&p,&q);(6). 修改(5)中的程序,使c1、c2的数据用getchar()函数输入,用putchar()函数输出。(7). 可按照如下方法修改程序:将程序中的“scanf(%d%d%c%c%f%f,&a,&b,&c1,&c2,&d,&e);”语句用以下四个语句替换:scanf(%d%d% ,&a,&b);c1=getchar();c2=getchar();scanf(%f%f,&d,&e); 使用与(5)相同的数据输入格式输入数据。 请分析:使用如下格式为a、b
16、、c1、c2输入数据时会出现什么结果?运行程序验证所分析的结论。输入数据格式:61 62 a b Input(a,b,c1,c2,d):61 62ab5.67 -6.78 Input(f,g):1234. 0. Input(m,n,p,q):50000 -60000 32678 40000 输入数据格式:61 62 a b 分析结果:a=61,b=62,c1=a,c2=空格运行结果:线订装五、附录(自己实现的源代码)1.#include stdafx.hint main(int argc, char* argv)int A,B,C; A=1;B=2;C=B;B=A;A=C;printf(A=%d,B=%dn,A,B);return 0;2.#include stdafx.hint main(int argc, char* argv)char a;scanf(%c,&a);printf(a=%dn,a); /a是所输入数的ASC代码return 0;六、联系方式(e-mail)zhongqi1992