顺序结构程序设计(精)
- 格式:doc
- 大小:65.50 KB
- 文档页数:4
实验二顺序结构程序设计2.1实验要求与目的1.掌握程序设计的基本思想2.熟悉及掌握C语言基本数据类型(int,long,float,double)的说明3.掌握C语言程序设计中格式输入和输出函数的灵活应用4.算术表达式在实际问题中应用5.掌握算法:两数的交换、一个整数的拆数6.数学头文件的包含7.格式输入/输出函数scanf/printf的正确使用2.2 实验指导程序设计的学习过程也是算法积累的过程。
算法是在有限步内求解某一问题所使用的基本运算及规定的运算顺序所构成的完整的解题步骤。
也就是说是计算机解题的过程。
程序设计的基本思想:1)分析问题,理解题意、提出问题;2)建立模型,确立算法,寻找解决问题的有效算法或直接公式;4)编写程序,根据C语言程序结构编程;5)调试程序,若结果正确,结束。
否则检查程序,修改程序,重新调试程序,依次类推,直到调试结果正确为止。
初次自已动手编程,先要建立程序设计的基本思想,结构化程序设计的基本思想就是模块化。
即构成C语言程序的基本单位是函数,函数也是C程序中模块化程序程序设计的基础。
我们将程序设计比拟成“搭积木”,每个模块或每个算法都看成是一个形状及功能不同的“积木”,然后根据设计要求取材,搭建成完美的成品。
C语言是有且仅有一个主函数和若干个子函数组成。
从一个简单的程序设计开始学习,即先学习主函数(main)模块框架。
主函数(main)模块的基本框架设计。
#include <stdio.h>int main(){ 所有数据的数据类型定义说明;数据输入;算法或公式;数据输出;}首次编程,先来熟记2个编程时常用提示信息。
1) 每条语句之后必须有分号“;”。
若程序语句的某一条漏写了分号,在编译时会报如下的错误:error C2146: syntax error : missing ';' before identifier 'scanf'含义: C2146错误:语法错误: 标识符 “scanf” 之前缺少“;”。
实验三顺序结构程序设计(参考答案)[实验任务一]:程序分析实例3-1:assignment.c参考答案程序分析实例3-2:参考答案程序分析实例3-3:参考答案问题1:scan0.c参考答案#include <stdio.h>void main(){char a,b;int c;scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);}程序运行时输入数据的格式为:12 34↙问题2:scan1.c参考答案#include <stdio.h>void main(){char a, b;int c;scanf("%c%c%d", &a, &b, &c);printf("%-2c%-2c%d\n", a, b, c);}问题3:scan2.c参考答案#include <stdio.h>void main(){char a, b;int c;scanf("%c,%c,%d", &a, &b, &c);printf("%c,%c,%d\n", a, b, c);}问题4:scan3.c参考答案#include <stdio.h>void main(){char a, b;int c;scanf("%c,%c,%d", &a, &b, &c);printf("\'%c\',\'%c\',%d\n", a, b, c);}问题5:scan4.c参考答案#include <stdio.h>void main(){char a, b;int c;scanf("%c%*c%c%*c%d", &a, &b, &c);printf("\'%c\',\'%c\',%d\n", a, b, c);}程序改错实例3-1:correct1.c参考答案程序改错实例3-2:correct2.c参考答案程序改错实例3-3:sin.c参考答案程序改错实例3-3:macro.c参考答案[实验任务四]:编程练习3-1:area.c参考答案编程练习3-2:change.c参考答案编程练习3-3:swap.c参考答案编程练习3-4:interchange.c参考答案编程练习3-5:print.c参考答案。
2.3.1程序的顺序结构教学设计教师活动:一、复习导入1、复习流程图的相关内容:(1)、流程图是算法的一种图形化表示,与自然语言相比,用流程图描述算法能更加直观、形象、更容易理解。
(2)、常用的流程图符号复习完成转入问题1,要求学生写出问题1 的流程图。
学生活动:学生小组合作学习,每两人一组,把问题1 的流程图写在学案上,写好后相互交换讨论。
师生活动:抽取部分同学的学案通过实物展台展示,师生共同学习评价。
问题1:输入长方形的长和宽,输出长方形的周长和面积,写出算法流程图和vb 程序。
(1)请写出问题1 的流程图(2)请写出问题1 的vb 程序教师活动:2、复习常用语句和函数ϖ变量的的定义:Dim 变量名As 数据类型ϖ输入函数:InputBox()ϖ赋值语句:用“=”实现,左边是变量名右边可以是常量、变量、表达式ϖ输出语句:print””,Print 变量名学生活动:学生根据已写出的流程图,在复习vb 常用语句和函数的基础上,尝试写出问题1 的vb 程序,对学生来说可能稍微有点难度,属于拔高练习,主要为了激发学生的求知欲。
师生活动:学生尝试书写程序,教师评价点拨,最后师生共同书写程序。
教师分析讲解已书写完成的程序的执行过程,讲解程序的顺序结构。
顺序结构是一种最基本的程序结构。
ϖ按书写顺序由上到下一条一条执行ϖ没有分支ϖ没有重复ϖ没有跳转最后抛出问题,让学生思考,做到举一反三。
思考?你能不能写出输入正方形的边长,输出正方形的周长和面积的算法?(学生思考回答)问题2:读下面的流程图,编写出相应的vb 程序。
师生共同阅读分析流程图,学生以小组为单位写出程序,教师巡视指导,最后根据学生情况,教师评价总结,再次点题(像这样按书写顺序从上往下一条一条的执行,没有分支、没有跳转的程序,称为顺序结构。
)最后教师抛出问题,这个程序完成了什么功能,学生思考(完成了两个变量的数据交换)。
教师活动:教师再引导学生思考,还有没有实现两个变量的数据交换的其他算法,提示学生阅读课本33 页,看课本是用什么算法来实现两个变量的数据交换的,完成问题 3 的流程图和程序,从而让学生明确对于同一个问题,解决方法也不是唯一的,提高他们分析问题和解决问题的能力。
实验3 顺序结构程序设计一、实验目的:1、熟悉基本数据类型(int、char、float、double)占用的字节数和存储形式,能够定义基本数据类型的变量,使用这些类型的数据;2、熟悉赋值、整数相处、取余运算符的使用,能根据需要构建相应的表达式;3、通过样例加深对printf()常用格式控制符功能的理解,掌握printf()函数的使用;4、掌握scanf()函数的使用,能正确输入数据;5、掌握顺序结构程序设计的方法。
二、实验内容1、(基础题)运行下列程序,体会printf()中“格式控制符”的用法,并回答相关问题:#include<stdio.h>int main(){int k=1234;double f=12345.0123456789;printf("%8d\n",k);printf("%08d\n",k);printf("%15.4f\n",f);printf("%e\n",f);printf("%.4e\n",f);return0;}问题:已知int k=2569;double f=12345.0123456789;根据上面的代码,在原有printf 语句的基础上修改数据输出格式,使得程序运行结果如下图所示。
程序代码:#include <stdio.h>int main( ){int k=2569;double f=12345.0123456789;printf ("%6d\n",k);printf ("%06d\n",k);printf ("%.4f\n",f);printf ("%.2f\n",f);printf ("%.4e\n",f);printf ("%.2e\n",f);return 0;}2、(基础题)改错题:以下程序有多处错误,若按下列截图所示格式输入、输出数据,请在程序的相应位置上改正错误。
实验三数据类型和顺序结构程序设计(4学时)[实验任务一]:通过调试、分析程序运行结果,掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符;掌握各种运算符尤其是复合赋值运算符和除法及求余运算符。
程序分析实例3-1:输入、运行下面的程序,并分析、验证运行结果。
并以文件名assignment.c最终保存在实验3文件夹里:(需要存盘)【分析】程序运行结果为:在此基础上,做以下改动:(1)将程序第9~14行改为:a=61; b=62;c1=a; c2=b;f=3157.890121; g=0.123456789;d=f; e=g;p=a=m=50000; q=b=n=-60000;运行程序,分析结果。
【分析】修改后程序运行结果为:(2)在(1)的基础上将printf语句改为:printf("a=%d,b=%d,c1=%c,c2=%c,d=%15.6f,e=%15.12f\n",a,b,c1,c2,d,e);printf("f=%f,g=%f,m=%d\n",f,g,m);printf("n=%d\n”,n);printf(“p=%d,q=%d\n",p,q);运行程序。
(3)将p, q改用%o格式符输出。
注意是字母o而不是数字0。
(4)改用scanf函数输入数据而不用赋值语句,scanf函数如下:scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);输入的数据入下:61, 62, a, b, 3.56,-6.87, 3,157.890121, 0.123456789, 50000,-60000, 40000(说明:lf,ld格式符分别用于输入double型和long型数据)分析运行结果。
《汇编语言程序设计》实验报告实验名顺序结构程序设计实验室实验楼实验日期2014-05-05add ax,Zmov W,ax ;X,Y,Z之和存入W中retmain endpcode ends ;代码段结束end start3.调试过程:(1).用masm程序产生mwn1.obj文件,编译没有错误,如下图:(2).用link程序产生mwn1.exe文件,连接没有错误,如下图:(3).进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为5,6,7,接着下一个字的内容为0:(5).用t命令单步执行,前三次为初始化,具体的如下图:(6)用t命令执行,如下图,将[0000]单元中的内容05h传给ax,ax中的内容为0005,将[0002]单元中的内容和ax相加,并把结果存放在ax中,ax中的内容为000b=(5+6)(7)用t命令执行,如下图,将[0004]单元中的内容0bh和ax相加,并把结果存放在W中,W 中的内容为0012=(0b+7)题目二:1.设计:首先,在数据段中,定义字符串存放在变量s1中,同时申请一个字单元,用标号s2来表示,用来存放计数次数;在代码段中,首先初始化,然后,根据cld与rep的组合递减,将字符一个一个根据地址的指示按顺序输出。
2.源程序清单data segments1 db 'This is a program!$'count equ $-s1 ;变量count代替$-s1s2 db count dup(?)data ends ;定义数据段,变量s1为字符串'This is a program!$',;变量s2是重复计数次数code segment ;代码段assume cs:code,ds:data,es:datastart:mov ax,datamov gtmov es,ax ;初始化mov si,offset s1 ;将变量s1的偏移地址放入寄存器si中mov di,offset s2 ;将变量s2的偏移地址放入寄存器di中mov cx,count ;将计数次数存入寄存器cx中Cldrep movsb ;在字符串的比较,di或si是可以自动增减,即si,di向前移动mov dx,offset s2mov ah,9int 21hmov ax,4c00hint 21h ;输出结果code endsend star t3.调试过程:(1).用masm程序产生mwn2.obj文件,编译没有错误,如下图:(2).用link程序产生mwn1.exe文件,连接没有错误,如下图:(3).进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为This is a program!$,接着下一个字的内容为0:(5)用t命令单步执行,前三次为初始化,具体的如下图:(6)用t命令执行,如下图,将偏移地址存入si,di;(7)用t命令执行,如下图,命令执行count次数;(8)执行结果,如下图:题目三:查表法,实现一位16进制数转换为ASCII码显示1.设计:首先,在数据段中,定义0~9的ASCII码、A~F的ASCII码,并设定一个待转换的数;(1)用masm程序产生mwn3.obj文件,编译没有错误,如下图:(2)用link程序产生mwn3.exe文件,没有错误,如下图:(3)进入debug调试,用u命令反汇编,查看代码段,数据段所在的内存单元;(4).由(3)可知,数据段在144A段,如下图,用d命令查看数据段的值,依次为5,6,7,接着下一个字的内容为0:(5).用t命令单步执行,前三次为初始化,具体的如下图:(6)用t命令执行,如下图,将BX指向ASCII码表;(7)用t命令执行,如下图,AL取得一位16进制数,即ASCII码表中位移;(8)用t命令执行,如下图,高4位清0,只有低4位有效;(9)用t命令执行,如下图,换码过程;(10)用t命令执行,输出结果B,如下图:。
《C程序设计》顺序结构程序设计实验报告5. 编序C程序,实现将560分钟表示成**小时**分钟的形式输出。
6. 编序C程序,输入一个三位整数x(999=>x>=100),将其分解出百位、十位、个位,并求出各位之和以及各位之积。
7. 编序C程序,要求从键盘任意输入一个3位数的正整数,输出其逆序数(例如输入123,输出321)。
三、实验过程与结论:(经调试正确的源程序(核心部分)和程序的运行结果)(三)编写程序1.#include<stdio.h>int main(){printf("*************\n Very good!\n*************\n");return 0;}2.#include<stdio.h>int main(){float a,b,c,s;a=38.9;b=27.2;c=2*(a+b);s=a*b;printf("周¨¹长¡è是º?%f,面?积y是º?%f\n",c,s);return 0;}3.#include<stdio.h>int main(){int a,b;printf("输º?入¨?两¢?个?整?数ºy:êo\n");scanf("%d %d",&a,&b);int x,y,z,m;x=a+b;y=a-b;z=a*b;m=a/b;printf("两¢?个?数ºy的Ì?和¨ª是º?%d,差?是º?%d,积y是º?%d,商¦¨¬是º?%d\n",x,y,z,m);return 0;}#include<stdio.h>#define PI 3.14int main(){float r,v;printf("请?输º?入¨?球¨°的Ì?半ã?径?:\n");scanf("%f",&r);v=4*PI*r*r*r/3;printf("球¨°的Ì?体¬?积y是º?%f\n",v);return 0;}5.#include<stdio.h>int main(){int a,b,c;a=560;b=a/60;c=a%60;printf("%d小?时º¡À,ê?%d分¤?钟¨®\n",b,c);return 0;6. #include<stdio.h>int main(){int a,b,c,d;int x,y;printf("请?输º?入¨?一°?个?三¨y位?数ºy:êo\n");scanf("%d",&a);b=a/100;c=a/10%10;d=a%10;x=b+c+d;y=b*c*d;printf("百㨴位?是º?%d,十º?位?是º?%d,个?位?是º?%d,个?位?之?和¨ª是º?%d,各¡Â位?之?积y 是º?%d\n",b,c,d,x,y);return 0;}7. #include<stdio.h>int main(){int a,b,c;int x,y;scanf("%d",&x);a=x/100;b=x/10%10;c=x%10;y=c*100+b*10+a;printf("%d\n",y);return 0;}四、实验总结:(实验中遇到的问题及解决方法,心得体会等)对于代码不熟悉,写代码速度慢,应在敲代码上花时间。