实验2用C语言编写简单程序.docx
- 文档编号:28392958
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:26
- 大小:841.25KB
实验2用C语言编写简单程序.docx
《实验2用C语言编写简单程序.docx》由会员分享,可在线阅读,更多相关《实验2用C语言编写简单程序.docx(26页珍藏版)》请在冰豆网上搜索。
实验2用C语言编写简单程序
实验2用C语言编写简单程序
2.1基本数据处理
【实验目的】
1.掌握算术表达式和赋值表达式的使用。
2.掌握基本输出函数的使用。
3.能够编程实现简单的数据处理。
4.掌握简单C程序的查错方法。
【实验内容】
1.调试示例
改正下列程序中的错误,求华氏温度100oF对应的摄氏温度。计算公式如下,其中:
c表示摄氏温度,f表示华氏温度。(源程序error02_1.c)
源程序(有错误的程序)
#include
intmain(void)
{
intcelsius;fahr;
fahr=100;
celsius=5*(fahr-32)/9;
printf("fahr=d,celsius=%d\n",fahr,celsius);
return0;
}
运行结果(改正后程序的运行结果)
fahr=100,celsius=37
(1)使用Guide打开源程序error02_1.c(如图2.1所示)。
(2)使用工具栏按钮
进行程序的编译和运行。
工具栏按钮中,
表示编译,
表示停止编译,
表示运行,
表示停止运行。
图2.1Guide打开文件界面
(3)单击
编译按钮,编译时出现的第一条错误信息是:
error02_1.c:
1:
20:
stdoi.h:
Nosuchfileordirectory
双击该错误信息,光标指向源程序第一行,错误信息指出不能打开”stdoi.h”文件,因为”stdio.h”被误写为”stdoi.h”。
改正为”stdio.h”后,重新编译,新产生的第一条错误信息是:
error02_1.c:
4:
error:
`fahr'undeclared(firstuseinthisfunction)
双击该错误信息,光标指向源程序第四行,错误信息指出”fahr”变量没有被定义。
仔细观察后,反省”fahr”前的分号应该为逗号。
将”fahr”前的分号改为逗号后,重新编译,编译正确。
(4)单击
编译按钮,编译正确。
(5)单击
运行按钮,运行结果为:
fahr=d,celsius=37
结果不符合题目的要求,仔细检查源程序,发现函数printf中的”fahr=d”的”d”应为”%d”。
改正后,重新编译和运行,运行结果与题目要求的结果一致。
2.编程题
求华氏温度150oF对应的摄氏温度。计算公式如下,其中:
c表示摄氏温度,f表示华氏温度。
输入输出示例
fahr=150,celsius=66
3.编程题
求摄氏温度26℃对应的华氏温度。计算公式如下,其中:
c表示摄氏温度,f表示华氏温度。
输入输出示例
celsius=26,fahr=78
4.编程题
已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。
输入输出示例
math=87,eng=72,comp=93,average=84
5.编程题
当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。
输入输出示例
整数152的个位数字是2,十位数字是5,百位数字是1
提示:
n的个位数字digit1的值是n%10,十位数字digit2的值是(n/10)%10,百位数字digit3的值是n/100。
思考:
如果n是一个四位数,如何求出它的每一位数字?
6.改错题
改正下列程序中的错误,计算某个数x的平方y,并分别以“y=x*x”和“x*x=y”的形式输出x和y的值。请不要删除源程序中的任何注释。(源程序error02_2.cpp)
输入输出示例(假设x的值为3)
9=3*3
3*3=9
源程序(有错误的程序)
#include
intmain(void)
{
inty;
y=x*x;
printf("%d=%d*%d",x);/*输出
printf("d*%d=%d",y);
return0;
}
2.2计算分段函数
【实验目的】
1.使用if语句计算分段函数。
2.正确书写关系表达式。
3.掌握基本输入函数的使用,能正确调用C语言提供的数学库函数。
4.掌握简单的单步调试方法。
【实验内容】
1.调试示例
改正下列程序中的错误,输入x、计算并输出下列分段函数f(x)的值(保留1位小数)。(源程序error02_3.c)
源程序(有错误的程序)
#include
intmain(void)
{
doublex,y;
printf("Enterx:
");
scanf("%lf",x);
if(x!
=0){
y=1/x
}
else{
y=0;
}
printf("f(%.2f)=%.1f\n",x,y);
return0;
}
运行结果1(改正后程序的运行结果)
Enterx:
10
f(10.00)=0.1
运行结果2
Enterx:
0
f(0.00)=0.0
在运行结果中,凡是加下划线的内容,表示用户输入的数据,每行的最后以回车结束;其余内容都为输出结果。
在本书的所有实验题目中,都遵循这一规定。
(1)使用软件GUIDE打开源程序error02_3.c。
执行“编译”菜单|“编译”命令,或者单击
(编译)按钮,编译程序。
在窗口下方的“信息查看栏”中,出现了编译错误信息,如图2.2所示。
图2.2编译错误信息
(2)第一条编译错误信息是:
error02_3.c:
6:
warning:
formatargumentisnotapointer(arg2)
双击该错误信息,光标定位于第6行,scanf("%lf",x),错误信息指出“x”的前面少了“&”。
(3)在第6行的“x”前面加上“&”。
(4)单击
(编译)按钮重新编译,新出现的第一条错误信息是:
error02_3.c:
9:
error:
syntaxerrorbefore'}'token
双击该错误信息,光标定位于第9行,错误信息指出在第9行的“}”前缺少分号。
(5)在第8行的“y=1/x”后面加上分号“;”。
(6)单击
(编译)按钮重新编译,编译成功,如图2.3所示。
(7)单击“保存文件”按钮(
),保存文件。
图2.3编译成功后的源程序
(8)执行“调试”菜单|“逐过程”命令,或者单击调试工具条中的
(逐过程)按钮(如图2.4所示),程序调试开始。
图2.4调试工具条
(9)编辑窗口中的箭头指向第3行,表示程序将要执行该行,如图2.5所示。
在图2.5下方的“本地变量”窗口中列出了变量的值。
图2.5程序调试开始,箭头指向第3行
(10)单击
(逐过程)按钮2次,程序执行到第6行(scanf("%lf",&x);),如图2.6所示。
同时在运行窗口中显示“Enterx:
”(如图2.7所示),此时将要执行输入语句。
图2.6程序单步调试,箭头指向第6行
图2.7运行窗口,等待输入
(11)继续单击
(逐过程)按钮一次,在运行窗口中输入“10”(如图2.8所示)。
图2.8在运行窗口中输入10
(12)按回车键后,箭头指向第7行“if(x!
=0){”(如图2.9所示),观察“本地变量”窗口中变量x的值为10。
图2.9程序单步调试,箭头指向第7行,窗口下方显示变量x的值
(13)继续单击
(逐过程)按钮2次,箭头指向第13行“printf("f(%.2f)=%.1f\n",x,y);”,在“本地变量”窗口中可以看到变量y的值为0.10000000000000001(如图2.10所示)。
图2.10程序单步调试,箭头指向第13行,窗口下方显示变量y的值
(14)继续单击
(逐过程)按钮1次,箭头指向第14行“return0;”(如图2.11所示),运行窗口显示运行结果(如图2.12所示),运行结果符合题目要求。
图2.11程序单步调试,箭头指向第14行
图2.12运行窗口显示运行结果
(15)单击
(结束调试)按钮,程序调试结束。
2.编程题
输入华氏温度,输出对应的摄氏温度。计算公式如下,其中:
c表示摄氏温度,f表示华氏温度。
输入输出示例
Entercelsius:
150
fahr=65
3.编程题
输入存款金额money、存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。
interest=money(1+rate)year-money
输入输出示例
Entermoney,yearandrate:
100030.025
interest=76.89
4.编程题
输入x,计算并输出下列分段函数f(x)的值(保留2位小数),请调用sqrt函数求平方根,调用pow函数求幂。
输入输出示例(共运行3次)
第一次运行:
Enterx:
10
f(10.00)=3.16
第二次运行:
Enterx:
-0.5
f(-0.50)=-2.75
第三次运行:
Enterx:
0
f(0.00)=0.00
5.改错题
改正下列程序中的错误,输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。
(源程序error02_4.cpp)
输入输出示例(共运行2次)
第一次运行:
Enterx:
10
f(10.0)=0.1
第二次运行:
Enterx:
234
f(234.0)=234.0
源程序(有错误的程序)
#include
intmain(void)
{
doublex,
printf("Enterx:
\n");
scanf("=%f",x);
if(x=10){
y=1/x
}
else(x!
=10){
y=x;
}
printf("f(%.2f)=%.lf\n"xy);
return0;
}
6.编程题
输入2个整数num1和num2,计算并输出它们的和、差、积、商与余数。
输入输出示例
Enternum1:
5
Enternum2:
3
5+3=8
5-3=2
5*3=15
5/3=1
5%3=2
7.编程题(选作)
输入2个整数time1和time2,表示火车的出发时间和到达时间,计算并输出旅途时间。有效的时间范围是0000~2359(前两位表示小时,后两位表示分钟),不需要考虑出发时间晚于到达时间的情况。
输入输出示例(括号内为说明文字)
Entertime1:
712(出发时间是7:
12)
Entertime2:
1411(到达时间是14:
11)
Thetrainjourneytimeis6hours59minutes
8.编程题(选作)
输入一个四位数,将其加密后输出。方法是将该数每一位上的数字加9,然后除以10取余,作为该位上的新数字,最后将千位和十位上的数字互换,百位和个位上的数字互换,组成加密后的新四位数。
输入输出示例(括号内为说明文字)
Enteranumber:
1257
Theencryptednumberis4601(每一位上的数字加9除以10取余后得0146,交换后得到4601)
2.3指定次数的循环
【实验目的】
1.熟练掌握for语句的使用。
2.熟练掌握指定次数的循环程序设计方法。
3.掌握运行到光标位置的调试方法。
【实验内容】
1.调试示例
改正下列程序中的错误,计算表达式1+2+3+…+100的值。(源程序error02_5.c)
源程序(有错误的程序)
#include
intmain(void)
{
inti,sum;
for(i=1,i<=100,i++){
sum=sum+i;
}
printf("sum=%d\n",sum);
return0;
}
运行结果(改正后程序的运行结果)
sum=5050
(1)在GUIDE中打开源程序error02_5.c,编译程序,出现的第一条错误信息是:
error02_5.c:
5:
error:
syntaxerrorbefore')'token
双击该错误信息,光标指向“for”这一行,错误信息指出在for语句的括号里面有语法错误,仔细观察后,发现误把分号“;”写成了“,”。
改正后,重新保存后编译成功。
(2)执行“调试”|“逐过程”命令或者按F10快捷键,开始调试程序。
(3)鼠标单击第7行,将光标定位在第7行。
这就是当前的光标位置(如图2.13所示)。
图2.13光标在程序中的位置
(4)执行“调试”|“运行到光标处”命令或者单击工具栏中的“
”按钮,程序运行到光标位置(如图2.14所示)。
如2.14程序运行到光标处
(5)单击“本地变量”选项卡,在本地变量窗口中,第一次循环时i的值为1,正确;而sum的值为4199248,不正确。
仔细分析程序,发现sum没有赋初值。
执行“调试”|“结束调试”命令或者单击工具栏中的“
”按钮结束调试。
改正错误,在for语句前增加一条语句“sum=0;”,重新保存并编译,然后再进行
(2)~(4)步骤的操作,如图2.15所示的“本地变量”窗口中显示sum的值为0,正确。
图2.15程序运行到光标位置,观察变量sum的值
(6)把光标定位在“return”这一行,执行“调试”|“运行到光标处”命令或者单击工具栏中的“
”按钮,程序运行到光标位置(如图2.16所示),变量窗口中显示sum的值是5050,正确。
图2.16程序运行到光标位置,再次观察变量sum的值
(7)执行“调试”|“结束调试”命令或者单击工具栏中的“
”按钮,程序调试结束。
2.编程题1
输入一个正整数m(0≤m≤100),求
输入输出示例
Enterm:
10
sum=5005
思考:
输入2个正整数m和n(m≤n),求
3.编程题2
输入2个正整数m和n(m≤n),求
输出时保留3位小数。
输入输出示例
Enterm:
5
Entern:
15
sum=1.235
思考:
输入2个正整数m和n(m≤n),求
4.编程题3
输入一个正整数n,计算1+13+15+…的前n项之和,输出时保留6位小数。
输入输出示例(运行2次)
第一次运行:
Entern:
5
sum=1.787302
第二次运行:
Entern:
23
sum=2.549541
5.编程题4
输入一个正整数n,计算
的前n项之和,输出时保留3位小数。
输入输出示例(运行2次)
第一次运行:
Entern:
3
sum=0.893
第二次运行:
Entern:
10
sum=0.819
思考:
输入一个正整数n,计算
…的前n项之和。
6.改错题
改正下列程序中的错误,输入2个整数lower和upper,输出一张华氏-摄氏温度转换表,华氏温度的取值范围是[lower,upper],每次增加2oF。计算公式如下,其中:
c表示摄氏温度,f表示华氏温度。(源程序error02_6.c)
输入输出示例(运行2次)
第一次运行:
Enterlower:
32
Enterupper:
35
fahrcelsius
320.0
341.1
第二次运行:
Enterlower:
40
Enterupper:
30
fahrcelsius
源程序(有错误的程序)
/*输出华氏-摄氏温度转换表*/
#include
intmain(void)
{
intfahr,lower,upper;/*fahr表示华氏度*/
doublecelsius;/*celsius表示摄氏度*/
lower=30;/*变量lower给定转换范围的下限*/
upper=40;/*变量upper给定转换范围的上限*/
printf("fahrcelsius\n");/*显示表头*/
/*温度转换*/
for(fahr=lower,fahr<=upper,fahr++)
;
celsius=5/9*(fahr-32.0);
printf("%3.0f%6.1f\n",fahr,celsius);
return0;
}
7.编程题5
输入2个正整数m和n,计算m!
+n!
。
输入输出示例
Enterm:
3
Entern:
8
3!
+8!
=40326
8.编程题6
输入实数x和正整数n,计算xn,不允许调用pow函数求幂。
输入输出示例
Enterx:
2
Entern:
7
2的7次方是128
【实验结果与分析】
将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
2.4使用函数
【实验目的】
1.熟练掌握库函数的调用。
2.了解函数的定义和调用。
【实验内容】
1.编程题1
输入一个正整数n,生成一张3的乘方表,输出30~3n的值,可调用幂函数计算3的乘方。
输入输出示例
Entern:
3
pow(3,0)=1
pow(3,1)=3
pow(3,2)=9
pow(3,3)=27
2.编程题2
输入一个正整数n,生成一张阶乘表,输出1!
~n!
的值。要求定义和调用函数fact(n)计算n!
函数类型为double。
输入输出示例
Entern:
3
1!
=1
2!
=2
3!
=6
3.编程题3
根据下列公式可以计算出从n个不同元素中取出m个元素(m≤n)的组合数。编写程序,输入2个正整数m和n(m≤n),计算并输出组合数。要求定义和调用函数fact(n)计算n!
函数类型为double。
输入输出示例
Enterm:
5
Entern:
12
result=792
4.编程题4
计算y=
+
+…+
的值(保留2位小数),可调用sqrt函数计算平方根。
输入输出示例
sum=20435.99
5.编程题5(选作)
某客户为购房办理商业贷款,选择了按月等额本息还款方式,计算公式如下。在贷款本金(loan)和月利率(rate)一定的情况下,住房贷款的月还款额(money)取决于还款月数(month)。客户打算在5~30年的范围内选择还清贷款的年限,想得到一张“还款年限-月还款额”表以供参考。编写程序,输入贷款本金loan和月利率rate,输出“还款年限-月还款额”表,还款年限的范围是5~30年,输出时分别精确到年和元。
【实验结果与分析】
将源程序、运行结果和分析以及实验中遇到的问题和解决问题的方法,写在实验报告上。
.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 语言 编写 简单 程序