安徽工程大学高级语言程序设计实验报告班级姓名同组者/ 成绩日期2019.09.30 指导教师实验名称顺序结构程序设计一、实验目的1.掌握数据的输入/输出方法,能正确使用有关格式转换符。
2.掌握顺序结构程序中语句的执行过程。
3.掌握顺序结构程序的设计方法。
二、实验内容1.P47页第一个程序的作用是依次输入2个整数,计算并输出这2个整数之差。
(1)分析程序,若运行时输出:200,160<回车>,预期结果是多少?(2)上机运行该程序,查看程序运行结果是否符合题目要求。
如果不符合,请分析原因并修改程序,直至符合要求为止。
2.P47页第二个程序用于实现按下列公式计算并输出s1和s2的值:s1=3/(a+b)2,s2=ab/(a+b)3,其中a,b为整型数据。
(1)根据题意修改上述程序,并进行调试,直到正确为止。
(2)在(1)的基础上,将“scanf("%d,%d",&a,&b);”改为“scanf("%d%d",&a,&b);”后再编译、连接、运行。
3.分析P47页第三个程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致,并分析其原因。
4.编程实现下列功能并上机调试运行。
(1)设圆半径为r,求圆周长和面积。
要求用scanf函数输入数据,输出时取小数点后两位。
(2)输入一个3位十进制整数,分别输出百位、十位以及个位上的数。
(3)从键盘输入一个带两位小数的实数,将其整数部分和小数部分分离后输出。
(4)用getchar函数读入两个字符,然后分别用putchar和printf函数输出这两个字符。
*思考题:5. 若实验内容1的程序改为P48页第一个程序段,运行该程序,输入5,3,查看程序运行结果是否与自己预测的结果一致,并分析原因。
6.若实验内容1的程序改为P48页第二个程序段,运行该程序,输入5,3,查看程序运行结果是否与自己预测的结果一致,并分析原因。
7.在实验内容2的基础上若把程序第7行语句“s=3/(a+b)*(a+b)”改为“s=3.0/[(a+b)*(a+b)],”然后编译、连接和运行。
查看会出现什么结果,并分析原因。
三、算法流程图或实验步骤(可根据需要增删、修改)1.(1)算法流程图:原程序:#include <stdio.h>void main ( ){float a, b, c;printf("input a,b:");scanf("%d,%d",&a,&b);c=a-b;printf("c=%d\n",c);}修改后:#include <stdio.h>void main ( ){float a, b, c;printf("input a,b:");scanf("%f,%f",&a,&b);c=a-b;printf("c=%f\n",c);}或者#include <stdio.h>void main ( ){int a, b, c;printf("input a,b:");scanf("%d,%d",&a,&b);c=a-b;printf("c=%d\n",c);}(2)实验步骤:Files→New→Files→C++source File→文件名:program2011.c→位置:E:\123\→确定→输入代码→Buid→是→有错误→将float更换成int或者将所有的%d都更换成%f→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果2.(1)算法流程图:修改后:#include <stdio.h>#include <math.h>void main ( ){int a, b;float s1,s2;scanf("%d,%d",&a,&b);s1=3/((a+b)*(a+b));s2=a*b/pow((a+b),3);printf("s1=%f,s2=%f\n",s1,s2);}替换后:#include <stdio.h>#include <math.h>void main ( ){int a, b;float s1,s2;scanf("%d%d",&a,&b);s1=3/((a+b)*(a+b));s2=a*b/pow((a+b),3);printf("s1=%f,s2=%f\n",s1,s2);}(2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2021.c→位置:E:\123\→确定→输入代码→Buid→是→有错误→添加#include <math.h>→(a+b)*(a+b)更换成((a+b)*(a+b))→将(a+b)^3改成pow((a+b),3)→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果3.(1)算法流程图:#include "stdio.h"void main ( ){short a=-1;unsigned short b=65534;printf("%d,%o,%x,%u\n",a,a,a,a);printf("b=%d\n",b);}(2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2031.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s)0warning(s)后→BuidExecute→查看运行结果4.(1.1)算法流程图:#include <stdio.h>void main ( ){int r;float s,c;scanf("%d",&r);s=3.14*r*r;c=2.0*3.14*r;printf("s=%.2f,c=%.2f",s,c);}(1.2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2041.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果(2.1)算法流程图:#include <stdio.h>int main(){int a,b,c,S;printf("请输入一个三位数\n");scanf("%d",&S);a=S/100;b=(S/10)%10;c=S%10;printf("该三位数百位为%d,十位为%d,个位为%d\n",a,b,c);return 0;}(2.2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2042.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果(3.1)算法流程图:#include <stdio.h>int main(){float s,b;int a;scanf("%f",&s);a=s;b=s-a;printf("%.2f=%d+%.2f",s,a,b);}(3.2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2043.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果(4.1)算法流程图:#include <stdio.h>int main( ){char c1,c2;printf("请输入两个字符c1,c2:");c1=getchar( );c2=getchar( );printf("用putchar语句输出结果为:");putchar(c1);putchar(c2);printf("\n");printf("用printf语句输出结果为:");printf("%c %c\n",c1,c2);return 0;}(4.2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2044.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果*思考题5.(1)算法流程图:#include <stdio.h>void main ( ){char a, b, c;printf("input a,b:");scanf("%c,%c",&a,&b);c=a-b;printf("c=%d\n",c);}(2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2051.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果6.(1)算法流程图:#include <stdio.h>void main ( ){char a, b, c;printf("input a,b:");scanf("%c,%c",&a,&b);c=a+b;printf("c=%d\n",c);}(2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2061.c→位置:E:\123\→确定→输入代码→Buid→是→确认0error(s) 0warning(s)后→BuidExecute→查看运行结果7.(1)算法流程图:#include <stdio.h>#include <math.h>void main ( ){int a, b;float s1,s2;scanf("%d%d",&a,&b);s1=3.0/[(a+b)*(a+b)];s2=a*b/pow((a+b),3);printf("s1=%f,s2=%f\n",s1,s2);}(2)实验步骤:Files→Close Workspace→Files→New→Files→C++source File→文件名:program2071.c→位置:E:\123\→确定→输入代码→Buid→是→查看编译结果四、实验结果及分析1.(1)c=0(2)修改后的程序见上一子目算法流程图2.(1)修改后的程序见上一子目算法流程图(2)修改后的程序见上一子目算法流程图在输入a b的值时应该有空格3.结果是:-1,37777777777,ffffffff,4294967295b=65534分析:%d:带符号10进制 %o:无符号8进制 %x:无符号16进制 %u:无符号10进制整数4.程序见上一子目算法流程图2.c=2 一致3.c=104 不一致原因:定义字符变量用的是char,则输入5和3时,参与计算的是其对应的十进制ASCⅡ码值。