广州大学实验报告_第1页
广州大学实验报告_第2页
广州大学实验报告_第3页
广州大学实验报告_第4页
广州大学实验报告_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、广 州 大 学实 验 报 告学 院 管理学院 专业、班级 电商201 姓名、学号 李辉() 课程名称 程序设计基础 项目名称 实验1 数据类型、运算符和表达式 实验时间: 2021 年 10 月 4 日学院管理学院年级、专业、班电商201姓名李辉成绩课程名称程序设计基础实验项目名 称实验1 数据类型、运算符和表达式指导教师签名实验1 数据类型、运算符和表达式一、 实验目的1. 理解C语言程序的编辑、编译、连接、调试方法;2. 掌握命令行下的编辑、编译、连接、调试工具的使用(GCC);3. 掌握集成开发工具(集编辑、编译、连接、调试为一体的工具)(Visual Studio Counmmity

2、2019);4. 使用理解数在计算机内的表达方式(二进制数、8进制数、16进制整数);5. 掌握C语言数据类型,熟悉如何定义一个整形、字符型和实型(f浮点型)的变量,掌握变量的赋值方法;6. 掌握不同数据类型数据之间赋值的规律;7. 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减(-)运算符的使用;8. 掌握格式化输入、输出函数的使用。二、 实验原理(算法分析(包括流程图))(一) 工具的使用1. 学习控制台下的编辑、编译、连接及调试工具的使用(GCC)算法分析:设置环境变量 编辑源程序 编译源程序 连接程序 执行已生成的程序流程图:开始设置环境变量编辑编译连接

3、结束执行2. 学习IDE工具的使用(Visual Studio Community 2019)开始(建立新项目)算法分析:建立一个工程(如HelloWorld)创建新项目 编辑源程序 编译源程序 连接程序 执行已生成的程序 调试流程图:编辑编译有无连接有错?不正确结果正确?执行正确结束(二) 数据类型、运算符和表达式1) 变量a、b中各存有一个整数,交换两数后输出开始算法分析:设a=10,b=20。若要交换这两数,则需要借用一中间变量。首先将a中的数值存入变量t 中进行保存,然后将b中的数值存入a中,再将t中的数值存入b中。流程图:输入a=10,b=20,tt = aa = bb = t结束输

4、出a,b2) 从键盘输入一个字符,输出这字符的ASCII码的值算法分析:一个整数,只要它的值在0255之间,就可以用字符形式输出,在输出前,系统会将该整数转换为相应的ASCII码的字符;一个字符也可以用一个整数输出,输出的整数即为这字符的ASCII码值。开始流程图: 定义字符ch输入ch输出其对应ASCII码结束3) 整型变量的用法。算法分析:分析:当将一个负整数赋给一个无符号的变量时,计算机也可以输出一个值,但这是一个经过了进制转换而得到的一个数值,同时基本整型和无符号基本整型在超过取值范围是都会出现“溢出”, 这时应当把int型变量改为long型才能的到正确的结果。4) 基本输入输出函数的

5、用法。分析:不同的函数的输入输出格式不一样,要根据需要选择不同的函数来完成操作,同时还要注意不同函数的输入输入输出格式。三、 实验过程原始记录(数据、图表、计算等)1) 变量a、b中各存有一个整数,交换两数后输出。设a=10,b=20#include <stdio.h>int main() int a = 10, b = 20, t;t = a;a = b;b = t;printf("a=%d,b=%dn", a, b);return 0; 2) 从键盘输入一个字符,输出这字符的ASCII码的值#include <stdio.h>int main()

6、 char ch;printf("从键盘输入一个字符:");scanf_s("%c",&ch); /vs中使用不会有警告 printf("%c对应的ASCII码:%dn", ch, ch); return 0; 3) 整型变量的用法。人工分析:#define _CRT_SECURE_NO_WARNINGS /未使用Visual Studio 时可删除该行#include <stdio.h>int main()short int a, b; unsigned short c, d;long e, f;a = 100;

7、b = -100;e = 50000;f = 32767;c = a;d = b; printf("%hd,%hdn", a, b); / 以%hd格式输出十进制整数,所以a=100,b=-100.printf("%hu,%hun", a, b); /无符号短整型格式输出,所以a=100,应该不能输出。printf("%hu,%hun", c, b); /c=a,以%hu格式输出,故c=100,b应该不能输出。c = (a = e); /等价的语句c = a = e; d = (b = f); /等价的语句d = b = f; pri

8、ntf("%hd,%hdn", a, b); /a=e,b=f,然而a为短整型变量,以%hd格式输出时,a应该不能输出,b=32767printf("%hu,%hun", c, d); /c=e,d=f.以无符号短整型格式输出,c=50000,d=32767return 0;(1). 将一个负整数赋给一个无符号的变量,会得到什么结果。画出它们在内存中的表示形式。#include <stdio.h>int main() unsigned short a; a = -1; printf("%un", a); return 0;

9、将一个负整数赋给一个无符号的变量,其在内存中以补码储存,-1的补码为:0xffff(2). 将一个大于32767的整数赋给整形变量,会得到什么结果。画出它们在内存中的表示形式(在VC环境中,用short int )。#include <stdio.h>int main()short int a;a = 32768;printf("%dn", a);return 0; 整数溢出内存表现形式:0x8000(3). 将一个整数赋给无符号的变量,会得到什么结果。画出它们在内存中的表示形式(在VC环境中,用short int )。#include <stdio.h&

10、gt;int main() unsigned short int m, n; m = 65534; n = 65536; printf("%d,%dn", m, n); return 0; m=0xfffe, n=0x0000(整数溢出)4) 基本输入输出函数的用法。(1). 运行所给出的源程序,对照结果分析各语句的作用。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main()int a, b; /输入基本整型变量a,bfloat d, e; /输入单精度浮点型变量d,echar c1, c2;/输入

11、字符型变量c1,c2double f, g;/输入双精度浮点型变量f,glong m, n;/输入长整型变量m,nunsigned int p, q;/输入无符号基本整型变量p,q/Begina = 61;/对a赋值b = 62; /对b赋值c1 = 'a' /c1为字符变量c2 = 'b' /c2为字符变量d = 5.67; /对d赋值e = -6.78; /对e赋值f = 1234.56789; /对f赋值g = 0.; /对g赋值m = 50000; /对m赋值n = -60000; /对n赋值p = 32768; /对p赋值q = 40000; /对q赋

12、值/Endprintf("a=%d,b=%dnc1=%c,c2=%cn", a, b, c1, c2);/a,b按整数输出;c1,c2按字符输出printf("d=%f,e=%fn", d, e);/用%f将d,e整数位全部输出而小数位则输出6位printf("f=%f,g=%fn", f, g);/ 用%f将f,g整数位全部输出而小数位则输出6位printf("m=%ld,n=%ldnp=%u,q=%un", m, n, p, q);/m,n按整数输出;p,q按无符号十进制数格式输出return 0;(2). 将

13、程序中的第二、第三个printf语句修改为如下形式,然后运行程序,查看结果。 printf("d=%-6.2f,e=%-6.2fn",d,e);/ =%-6.2f,表示数长为6,包括小数点,且保留两位小数,不够的用空格补充。printf("f=%-15.6f,g=%-15.10fn",f,g);(3). 将上述两个printf语句进一步修改为如下形式,然后运行程序,查看结果。 printf("d=%-6.2fte=%-6.2fn",d,e);t相当于8个空格 printf("f=%-15.6ftg=%-15.10fn&quo

14、t;,f,g);(4). 将程序的第bein end间的代码修改为如下语句: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;运行程序,并分析结果。(5). 修改(1)中的程序,不使用赋值语句,而用下面的scanf语句为a、b、c1、c2、d、e输入数据:scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);² 请按照程序原来中的数据,选用正确的数据输入格式,为

15、上述变量提供数据。² 使用如下数据输入格式,为什么得不到正确的结果?输入数据:61 62 a b 5.67 -6.78 原因分析:之所以得不到正确的结果是因为数据输入格式不对。当scanf函数接受字符时,不能敲回车或空格,因为系统认为回车或空格是一个字符就接受了,所以不能输入空格。但是当scanf接受的不是字符时,系统接受时输入一个空格或是回车就会随自动过滤掉。(6). 进一步修改中使用的程序,使f和g的值用scanf()函数输入。主要需要修改后的语句:scanf("%d%d%c%c%f%f%lf%lf", &a, &b, &c1, &am

16、p;c2, &d, &e,&f,&g);结果:(7). 进一步修改上面的程序,使其他所有变量的值都改用scanf()函数输入。scanf("%d%d%c%c%f%f%lf%lf", &a, &b, &c1, &c2, &d, &e,&f,&g);scanf("%ld%ld%u%u", &m, &n, &p, &q);(8). 修改(7)中的程序,使c1、c2的数据用getchar()函数输入,用putchar()函数输出。主要代

17、码:scanf("%d%d% ", &a, &b); c1 = getchar();c2 = getchar();scanf("%f%f", &d, &e);scanf("%lf%lf", &f, &g);scanf("%ld%ld%u%u", &m, &n, &p, &q);printf("a=%d,b=%dn", a, b);putchar(c1);putchar(c2);putchar('n')

18、;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);执行结果:² 使用与(7)相同的数据输入格式输入数据。² 请分析:使用如下格式为a、b、c1、c2输入数据时会出现什么结果?运行程序验证所分析的结论。输入数据格式:61 62 a b 主要代码:scanf("%d%d%c%c", &a, &b, &c1, &c2);p

19、rintf("a=%d,b=%dnc1=%c,c2=%cn", a, b,c1,c2);结果:a=61,b=62c1=,c2=a运行程序:分析:用scanf函数输入数据时,按题目要求输入数据,输完61,62后按回车,在输入一个字符a之后程序便结束了,这是因为系统把回车当作一个字符输入了,所以结果才会出现c1=,c2=a四、 实验结果及分析(一) 工具的使用1) minGW-GCC遇到的问题分析:不明白如何在GCC下工作。编译是什么?连接又是啥?怎么执行?有什么用?如何设置环境变量 怎么用记事本编辑源程序?课件上的那些 -c,-o是什么意思解决:在一堆疑问下,我尽量平复了自己

20、的焦虑的心情,一个一个问题的去分析解决,我打开了老师发给我们的课件,找到GCC这一ppt,然后在上网查询相关知识,最后明白了原来编译是将源文件编译成目标文件,且需要使用 -c选项。使用-o选项可以自定义目标文件的名字。而连接是目标文件转换成可执行文件,只需要在gcc后紧目标文件名。生成可执行程序后便可执行程序,得到结果。2) IDE的使用分析:有了在GCC下工作的经验,同时结合课本和老师课件里对相关函数的介绍和分析,在vs上创建“HelloWorld”项目便水到渠成了,同时掌握了一点点vs的相关基本操作。(二) 数据类型、运算符和表达式1) 变量a、b中各存有一个整数,交换两数后输出。结果:分

21、析:根据老师的实验指导书,明白要交换这两数,则需要借用一中间变量t。问题很轻松地解决了。2) 从键盘输入一个字符,输出这字符的ASCII码的值问题分析:一开始不知道要怎么做,应该用什么函数呢?然后我看了老师的实验指导书明白可以用scanf函数,但是scanf函数的用法是怎么样?我并不知道啊,于是我翻书和上网查阅相关资料,好不容易搞懂了,结果在运行程序时却发现vs中会出现了scanf函数警告,我又懵了,于是我又查看老师的课件,终于发现了需要在程序开头加上一段代码“#define _CRT_SECURE_NO_WARNINGS”,于是问题最终解决了,究其原因还是自己上课不够认真。3) 整型变量的用

22、法。人工分析:printf("%hd,%hdn", a, b); / 以%hd格式输出十进制整数,所以a=100,b=-100.printf("%hu,%hun", a, b); /无符号短整型格式输出,所以a=100,b应该不能输出。printf("%hu,%hun", c, b); /c=a,以%hu格式输出,故c=100,b应该不能输出。c = (a = e); /等价的语句c = a = e; d = (b = f); /等价的语句d = b = f; printf("%hd,%hdn", a, b); /

23、a=e,b=f,然而a为短整型变量,以%hd格式输出时,a应该不能输出,b=32767printf("%hu,%hun", c, d); /c=e,d=f.以无符号短整型格式输出,c=50000,d=32767上机对照:问题分析:为什么b=-100时能以无符号整型输出?且变成了65436?后面a=e,赋值50000,然而a定义为短整型变量,为什么能以%hd格式输出?解决:我上网查了查相关知识,得知当将一个负整数赋给一个无符号的变量时,计算机也可以输出一个值,但这是一个经过了进制转换而得到的一个数值,主要是以补码的形式储存。同时基本整型和无符号基本整型在超过取值范围是都会出现

24、“溢出”。4) 基本输入输出函数的用法。运行所给出的源程序,对照结果分析各语句的作用ps:实验指导里各种小题的过程和结果分析我已在第三部分“实验过程原始记录”做了,为了避免重复和冗余,我就不在这部分再次做啦,希望老师理解。总结:整个实验我觉得挺难的,尤其是对新手来说,我感觉最难的部分在于各种类型的数据之间的转换,某种类型变量以另一种类型格式输出时是数据怎么转换的,经过不断地查询资料,终于明白了其中的转换规则。还有scanf,getchar,putchar等函数用法还需要多上机来熟练。尽管做实验的过程挺艰辛的,但一步一步地搞懂和掌握也是挺有成就感的,达到了本次实验的目的。五、 附录(自己实现的源代码)1. 变量a、b中各存有一个整数,交换两数

温馨提示

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

评论

0/150

提交评论