第 PAGE 1 页
安 徽 工 程 大 学
高级语言程序设计 实 验 报 告
班级 姓名 同组者 / 成绩
日期 2019.09.30 指导教师
实验名称 顺序结构程序设计
实验目的
掌握数据的输入/输出方法,能正确使用有关格式转换符。
掌握顺序结构程序中语句的执行过程。
掌握顺序结构程序的设计方法。
实验内容
P47页第一个程序的作用是依次输入2个整数,计算并输出这2个整数之差。
分析程序,若运行时输出:200,160,预期结果是多少?
上机运行该程序,查看程序运行结果是否符合题目要求。如果不符合,请分析原因并修改程序,直至符合要求为止。
P47页第二个程序用于实现按下列公式计算并输出s1和s2的值:s1=3/(a+b)2,s2=ab/(a+b)3,其中a,b为整型数据。
根据题意修改上述程序,并进行调试,直到正确为止。
在(1)的基础上,将“scanf("%d,%d",&a,&b);”改为“scanf("%d%d",&a,&b);”后再编译、连接、运行。
分析P47页第三个程序,写出预期结果,然后输入调试,查看运行结果与预期结果是否一致,并分析其原因。
编程实现下列功能并上机调试运行。
设圆半径为r,求圆周长和面积。要求用scanf函数输入数据,输出时取小数点后两位。
输入一个3位十进制整数,分别输出百位、十位以及个位上的数。
从键盘输入一个带两位小数的实数,将其整数部分和小数部分分离后输出。
用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
void main ( )
{
float a, b, c;
printf("input a,b:");
scanf("%d,%d",&a,&b);
c=a-b;
printf("c=%d\n",c);
}
修改后:
#include
void main ( )
{
float a, b, c;
printf("input a,b:");
scanf("%f,%f",&a,&b);
c=a-b;
printf("c=%f\n",c);
}
或者
#include
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
#include
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
#include
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 →(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
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
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
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
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
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
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→查看运行结果
(1)算法流程图:
#include
#include
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)c=0
(2)修改后的程序见上一子目算法流程图
2.(1)修改后的程序见上一子目算法流程图
(2)修改后的程序见上一子目算法流程图 在输入a b的值时应该有空格
3.结果是:-1,37777777777,ffffffff,4294967295
b=65534
分析:%d:带符号10进制 %o:无符号8进制 %x:无符号16进制 %u:无符号10进制整数
4.程序见上一子目算法流程图
c=2 一致
c=104 不一致 原因:定义字符变量用的是char,则输入5和3时,参与计算的是其对应的十进制ASCⅡ码值。5对应的十进制ASCⅡ码是53,3对应的十进制ASCⅡ码是51,所以输出a+b就等于51+53=104
编译时出现一个错误。原因:双括号应该用(( ))而不是用【( )】
实验体会、问题讨论
定义何种类型,最后输出时对应的格式说明应该一致。比如int型对应%d;
使用pow函数表示平方时,最上方应该添加#include ;
.2f表示保留两位小数
、
教师签字: 批改日期:
说明:
1、对于每一个实验项目,实验报告(含预习)一般应包含以下内容:
第一部分——预习后的书面汇报。其主要内容应包含:*一、实验目的;*二、实验内容;三、算法流程图或实验步骤。实验目的和实验内容参见实验教材或老师下发的内容。
第二部分——实验结果的书面汇报。其主要内容应包含: *四、实验结果及分析(含实验测试输入数据,实验运行结果截图,用简洁的语言总结实验,汇报是否达到实验目的);*五、实验体会、问题讨论(谈体会或感想、提出建议或意见、讨论与实验有关的且自己感兴趣的问题、回答课后思考题)。
第三部分——附录:实验源程序。提前编写好程序,实验时调试并完善。
2、 实验报告写在教务处下发的实验报告纸上,每次实验完成后课代表收齐统一交给老师。
实验源程序写在单独的一个本子上,实验课时带到机房,供上机调试使用,实验教师抽查完成情况。