资源描述
桂林电子科技大学2021—2022学年 第1学期程序设计与问题求解实验报告
实验一 熟悉上机环境和顺序、选择结构程序 设计
辅导教师意见:
院
系计算机与信息平安学院
专业
物联网工程
学
号
姓名
周树华
同作
者
实验名称
实验日期
2021
年 10 月 10 日
成绩
教师签名:
一. 实验目的:
1. 了解和使用VC集成开发环境;理解顺序结构程序设计方法。
2. 掌握关系和逻辑运算表达式来表示条件;掌握分支结构程序if和switch设计方法。
二、实验内容和步骤
1. 分析并修改下面程序错误,使之能够正常运行。
(1) 错误代码一:
下面的程序是求a和b的和。用户读入a和b的值,计算出结果,并输出。
#include <stdio.h>int main()
( int a,b;
int sum;
sum=a+b; scanf(”%d%d”,a,b);
printf(nsum=%d\nn,sum);
return 0;编译环境中正确代码、运行结果截图及错误原因分析如下:
错误原因:1 .符号'scanf'后面的'a'和七'没有用'&';2.先输入才能计算,即先scanf( ”%d%d”,&a,&b),再 sum=a+b。
a*b.c a*b.cpp
7
8
9
10
11
12
5
6
7白
8
io
ii曰
12
13
14
16
L0I
ma i n()
i n t a , b ;
5 c a n f ( " %d %d ", & a , & b );
i f ( a ■ « b )
{
P r i n t f ( n a 和 b 相等 \ n M ); }
else i f ( a ! » b )
{
return o;
}
return o;
5 c a n f ( M %d %d M , & a f & b ); s u m= a ♦ b ;
p r i n t f ( M s u m= %d \ n 11 / s u m); return o;
H ■ 1 C:\Users\jimodewudi\Documents\a4-b.exe
98 97 sum=195
process exited after 2. 906 seconds with return value 0 祐按任意键继续.•.
(2) 错误代码二:
下面的这个程序是当a和b的值相等的情况下输出“a和b相等”,而a与b的值不相等的话无输出。
#include <stdio.h>int main()
{
scanf("%d%d”,&a,&b);
if (a==b);
(printf(na 和 b 相等\n”);
}
return 0;r=
r=
编译环境中正确代码、运行结果截图及错误原因分析如下: 错误原因:1.没有当a不等于b时的情况;没有定义a和b;
2. If后面不用加
a*b.c a*b.cpp a 与
1# i n c I u d e < s t d i o . h >
■ 1 C:\Users\jimodewudi\Documents\a 与 b相不相等.exe
Process exited after 2. 386 seconds with return value 0 浦按任意键继续...
SI C:\Users\jimodewudi\Documents\a与b相不相等.exe
9 9
a和b相等
Process exited after 3.103 seconds with return value 0 请按任意键继续...
(3) 错误的代码三:
下面的这个程序是当a和b的值相等的情况下a与b的值同时增加1,而a与b的值不相等的话,二者的 值保持不变。
#include <stdio.h>
int main()
int a,b; scanf(“%d%d”,&a,&b);
if (a==b)a++;
b++;
printf(”a=%d,b=%d”,a,b);
return 0;
}
编译环境中正确代码、运行结果截图及错误原因分析如下: 错误原因:没有当a不等于b时的语句
a*b.c a*b.cpp a与btB不相等.cpp TH等加 1,.cpp2 I
3 0 {
4
5
6印
7
8
9
10 -
11
11 H
13
12 -
15
13 L }
17
4 I
5 0 {
4
5
6印
7
8
9
14 -
11
15 H
13
16 -
15
17 L }
17
# i n c I u d e < s t d i o . h >
ma i n ()
i n t a , b ; scanf(M%d%dM/&a/&b);
[if (a««b){
a = a > i; b « b * 11 p r i n t f ( else i f I p r i n t f ( I return
a = %d , b = %d ”,a , b) ; } (a ! = b)
■1 C:\Users\jimodewudi\Documents\相等加 1, .exe
9 9
a=10, b=10
Process exited after 2. 823 seconds with return value 0 隋按任意键继续・.・
2. 编写程序实现以下功能
(1)计算1 + ^ + 1的值,并输出结果(保存2位小数)2 3
编译环境中正确代码、运行结果截图如下:
a*b.c a*b.cpp a与b相不相等.cpp相等加1,.cpp1 + 0・5.cppma i n()
ma i n()
i n t
□ 0
5
6
7
8
9
10
11
12 l n
# i n c I u d e < 5 t d i o . h >
float a, b,c,d; a « i;
b = i . o / 2 ;
c = i . o / 3 ; d « a ♦ b ♦ c ; printf(H %. return o;
■ 1 1.83
Process exited after 0.03389 seconds with return value 0 请按任意键继续.・.
(2)身高预测
每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析说明,影响小孩成人 后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相 关。
设faHeight为其父身高,moHeight为其母身高,身高预测公式为男性成人时身高=(faHeight + moHeight)x0.54cm
女性成人时身高=(faHeightx0.923 + moHeight)/2cm此外,如果喜爱体育锻炼,那么可增加身高2%;如果有良好的卫生饮食习惯,那么可增加身高1.5%o编程 从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、父母身高 (用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量sports 存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),利用给定公式和身高预测方法对身高进行预测。 编程要求:有用户输入输出提示信息。
编译环境中正确代码、运行结果截图如下:
a*b.c
a+b.cpp a与b相不相等.cpp相等加1,身高.cpp身高2cppi n c I u d e < s t
# I n c I u d e < s t10
10
14曰
15 工6 ■
17 H
18
19 -
20白
24 0
25
25 -
27
28 B
29
3。-
31
32 B
33
33 -
35
34 H
37
35 -
39
40白
}
{
}
{
}
{
}
ma i n
ports’ d i e
1 g h t , mo He n M , &f a He i n ” , & mo H e i n" , &s e x ); n M t &s p o r t ,& d i e t );
g h t ♦ mo He i e i g h t * o . 9
&& s p o r
2 f M , wo ma n
t
h &
9 0a
else i f ( 5 e x « « ' M' && sport5=»' N' p r i n t f ( M %. 2 f M f ma n );
else i f
p r i n t f (
else i f ( s e
else i f ( s e
x « »' F'&& sports
if", wo ma n * 1. 02);
&&
&&sports= = ' Y' &&d i e t
n * 1 02);
&& sports-®* N' &&
015);
sports-®' N' &&
。15);
else i f ( s e x « «' F'& & sports»»' Y
p r i n t f ( ”%. 2 f 11 , woman*woma n*o o 2 ♦ wo ma
else i f ( 5 e x = = ' F'&& sport5= = * Y
o• 015);
p r i ntf( n %. 2 f n t ma n ♦ ma n * o . o 2 ♦ ma n * o . 015);
44return o:
■1 C:\Users\jimodewudi\Documents\# 高.exe
175
1601160. 76
Process exited after 8.257 seconds with return value 0 请按任意键继续...
(3) 简单的计算器用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
操作数1运算符op操作数2
计算表达式的值,指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。
编程要求:程序能进行浮点数的算术运算,有用户输入输出提示信息。
提示:因为除法中的除数不能为0,因此关键在于如何比拟浮点变量data2和常数。是否相等。作为整型变量
跟0的比拟,简单的==就可以解决。而浮点型等实型变量需要用if (fabs(data2) <= le~7)
进行判断(即判断其是否足够小)。假设使用函数fabs,需要包含头文件math.h
编译环境中正确代码、运行结果截图如下:
3
4 i
5 E] I
6
7
8
6 I
io E] n
13
14 二5
16
17
18
20
21
22申 功
24
25 -
26
27白
28
29
30 -
31
32
33
31 -
35
36
ma i
char op;
f I oat a t b ;
s c a n f ( M%f M
s wi t c h ( op)
case, ♦:
p r i n t f ( " % b r e a k ;
p r i n t f ( M %. b r e a k ;
p r i n t f ( M %. b r e a k ;
if(fabs(b)
def a u I t :
p r i n t f
&b );
三、实验小结
总结在实验中出现的问题以及解决的方法。
问题:
1. 不懂switch函数如何使用;
2. 数据过多,容易出错;
3. 运算符用错。
方法:
1. 自己摸索;
2. 上网查找资料;
3. 和室友讨论;
4. 在书本上查找。
展开阅读全文