C语言实验指导Word文档下载推荐.docx
《C语言实验指导Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言实验指导Word文档下载推荐.docx(49页珍藏版)》请在冰点文库上搜索。
#include"
stdio.h"
main();
{
printf(Hello,Ruijia!
\n"
)
}
在输入过程中我们故意出了两个错误。
输入完毕后,我们开始编译和调试程序,单击主菜单栏中的Build(编译),在其下拉菜单中选择Compileruijia.c(编译ruijia.c)项,如图1-5所示。
图1-5编译程序
单击Compileruijia.c(编译ruijia.c)命令后,屏幕上出现一个对话框,内容是:
Thisbuildcommandrequiresanactiveprojectworkspace.Wouldyouliketocreateadefaultprojectworkspace?
(此编译命令要求一个有效的项目工作区,你是否同意建立一个默认的项目工作区?
)(注:
如果你事先已经建立了工作区,则不会出现这个对话框)单击是(Y)按钮,表示同意由系统建立默认的项目工作区,如图1-6所示。
图1-6要求建立默认的项目工作区
屏幕如果继续出现“将改动保存到E:
\ruijia\ruijia.c”,单击是(Y)。
也可以不用选择菜单的方法,而用Ctrl+F7快捷键来完成编译。
屏幕下面的调试信息窗口指出源程序有无错误,本例显示2error(s),0warning(s)。
我们现在开始程序的调试,发现和改正程序中的错误。
编译系统能检查程序中的语法错误。
语法错误分为两类:
一类是致命错误,以error表示,如果程序有这类错误,就通不过编译,无法形成目标程序,更谈不上运行了;
另一类是轻微错误,以warning(警告)表示,这类错误不影响生成目标程序和可执行程序,但有可能影响运行的结果,因此也应当改正,使程序既无error,又无warning。
本例显示如图1-7所示。
图1-7调试信息窗口指示程序有无错误
用鼠标单击调试信息窗口中右侧的向上箭头,可以看到出错的位置和性质,如图1-8所示。
图1-8出错位置
进行改错时,双击调试信息窗口中的第1个报错行,这时在程序窗口中出现一粗箭头指向被报错的程序行(第3行),提示改错位置,如图1-9所示。
图1-9提示改错位置
将第2行末尾的分号删去。
再用同样的方式找到第2个出错位置,在第4行末尾加上分号。
再仔细阅读程序,应该没有问题了。
在选择compileruijia.c项重新编译,此时编译信息告诉我们:
0error(s),0warning(s),既没有致命错误(error),也没有警告错误(warning),编译成功。
这时产生一个ruijia.obj文件,见图1-10的调试信息窗口。
图1-10产生目标文件
在得到了目标程序后,我们就可以对程序进行连接了,选择主菜单Build(构建)→Buildruijia.exe(构建ruijia.exe),成功完成连接后,生成了一个可执行文件ruijia.exe。
以上我们是分别进行程序的编译和连接,其实我们可以选择菜单Build→Build(或按F7键)一次完成编译和连接。
但对于初学者,我们还是提倡分步进行编译和连接。
我们得到了可执行文件ruijia.exe后,就可以直接执行ruijia.exe了。
选择Build→!
Executeruijia.exe(执行ruijia.exe)(或按Ctrl+F5运行也可)。
程序执行后,屏幕切换到输出结果的窗口,显示出运行结果,如图1-13所示。
可以看到Hello,Ruijia!
第2行Pressanykeytocontinue并非程序所指定的输出,而是VC6.0在输出完运行结果后系统又自动加上的一行信息,通知用户:
“按任何一键以便继续”。
当你按下任何一键后,输出窗口消失,回到VC6.0主窗口,此时可以继续对源程序进行修改补充或进行其它的工作。
图1-13显示运行结果
然后我们选择File(文件)→CloseWorkspace(关闭工作区),屏幕提示如图1-14所示
图1-14确认是否关闭所有工作区
单击是(Y)关闭工作区以结束对该程序的操作,然后又可以写新程序了。
提醒:
如果不关闭工作区就编写新程序,可能原来的程序还在工作区内,从而会给初学者运行程序带来麻烦。
如果我们需要打开已经保存的文件,方法如下。
方法一:
在VC6.0中选择File→Open菜单或按Ctrl+O键,或单击工具栏中的Open小图标来打开Open对话框,从中选择所需的文件,打开该文件,程序显示在编辑窗口。
如果在修改后。
仍保存在原来的文件中,可以选择File(文件)→Save(保存),或用Ctrl+S快捷键或单击工具栏中的小图标来保存文件。
另外,如果不想将源程序存放到原先指定的文件中,可以不选Save项,而选择SaveAs(另存为)项,并在弹出的SaveAs对话框中指定文件路径和文件名。
方法二:
如果后缀为.c的文件与VC6.0建立的关联,在Windows“资源管理器”或“我的电脑”中按路径找到已有的C程序名(如在E:
\RUIJIA文件夹下面找到ruijia.c)。
双击此文件名,则自动进入了VC6.0集成环境,并打开了该文件,程序显示在编辑窗口。
保存方法同上,不再赘述。
特别提醒:
其实VC6.0系统工具栏有几个图标分别对应Compile(编译)、Build(构建)。
当进行Compile(编译)后,!
Execute(执行)也变得可用,我们有时可以不使用菜单中的相应选项,而单击这些工具栏图标进行操作。
事实上,还有相应的快捷键Compile(Ctrl+F7)、Build(F7)和!
Execute(Ctrl+F5)更加方便快捷。
三、熟悉C语言的语法结构,了解在VC6.0中成功运行简单C语言程序的过程
1.在VC中输入以下求矩形面积的程序,故意出现错误,运行并调试修正如下程序:
main()
floata,b,area;
a=1.4
b=3.5;
area=abb;
printf("
a=%f,b=%f,area=%f\n"
a,b,area);
新建并调试运行步骤如下:
⑴在VisualC++主窗口的主菜单栏中单击File(文件),在其下拉菜单中单击New(新建),弹出一个对话框,单击此对话框的左上角的File(文件)选项卡,选择C++SourceFile选项。
使用默认的文件存储路径则可以不必更改Location(目录)文本框,在右上方的File(文件)文本框输入准备编辑的源程序文件的名字(现输入mycl.c),当然,读者完全可以指定其它路径和文件名。
单击OK按钮后,就可以输入如上程序代码了。
⑵如上代码输入后,单击主菜单栏中的Build(构建),在其下拉菜单中选择Compilemycl.c(编译mycl.c)项。
⑶屏幕上出现一个对话框,内容是Thisbuildcommandrequiresanactiveprojectworkspace.Wouldyouliketocreateadefaultprojectworkspace?
如果你事先已经建立了工作区,则不会出现这个对话框)单击是(Y)按钮,表示同意由系统建立默认的项目工作区,屏幕如果继续出现“将改动保存到…”单击是(Y)。
⑷屏幕下面的调试信息窗口指出源程序有2error(s),2warning(s)(发现a=1.2这一行掉了分号“;
”)。
⑸改正后单击Build→Compilemycl.c(发现仍有错误area=a*b写成了area=abb)。
⑹再改正后单击Build→Compilemycl.c下面的调试信息窗口显示0error(s),0warning(s)证明计算机已经检查不出语法错误了。
⑺运行程序(Build菜单→!
Executemycl.exe命令)。
⑻查看结果后,按ESC返回。
⑼单击File菜单→CloseWorkspace命令,选择是(Y)。
⑽编写新的程序……
注意:
⑴在C程序中,有时可以省略#include"
这个命令行,在TC2.0中运行时不会报错,但在VC6.0运行时,系统会报告警告(warning),如果不影响程序正常执行,我们可以放过这样的警告。
⑵有时我们写#include<
stdio.h>
也可以,至于尖括号和双引号有什么不同,我们初学者现在不必理会,后面自然会学到的。
2.在VC中输入以下的程序,运行并查看运行结果:
HelloRuijia!
"
);
多运行几遍,看看运行结果,将printf("
)改成printf("
),再运行几遍,看看运行结果,比较一下有什么不同,想想为什么。
3.输入并运行以下程序
****************\n"
*Welcometoruijia!
*\n"
四、熟悉顺序结构,掌握printf()和scanf()函数
1.输入并运行如下程序
floatp=3.14159;
p=%.2f\n"
p);
p=%.4f\n"
p=%10.2f\n"
p=%10.4f\n"
p=%-10.2f\n"
p=%-10.4f\n"
说明:
分析并观察完该程序的运行结果之后,在语句floatp=3.14159;
的后面加入语句
\n\n\n"
再次运行程序,注意观察运行结果有什么变化。
2.运行下列程序,注意观察运行结果。
inta,b;
floatc;
scanf("
%d%d%f"
&
a,&
b,&
c);
a=%d\n"
a);
b=%d\n"
b);
c=%f\n"
c);
运行这个程序时,分别按下面4种格式输入数据,注意观察各自的运行结果。
第一种格式:
10254.72↙
第二种格式:
10↙
25↙
4.72↙
第三种格式:
第四种格式:
10,25,4.72↙(这种输入格式是错误的,想一想错在什么地方)
3.输入如下程序:
voidmain()
inti,j,m,n;
i=2;
j=5;
m=++i;
n=j++;
%d,%d,%d,%d\n"
i,j,m,n);
⑴编译和运行程序,注意i、j、m、n各变量的值。
⑵将第6、7行改为:
m=i++;
n=++j;
再编译和运行,分析结果。
⑶程序改为:
{inti,j;
%d,%d\n"
i++,j++);
⑷在⑶的基础上,将printf语句改为:
++i,++j);
再编译和运行。
⑸再将printf语句改为:
%d,%d,%d,%d,\n"
i,j,i++,j++);
4.完善程序。
下面程序的功能是,根据商品的原价和折扣率,计算商品的实际售价。
请在程序中的横线处填写正确的语句或表达式,使程序完整。
上机调试程序,使程序的运行结果与书中的结果一致。
#include"
doublecost,percent,c;
PleaseEntertheFirstPrice:
cost);
/*答案是填“%lf”*/
printf();
/*答案是填“'
'
EntertheDiscount:
'
”*/
percent);
c=cost*percent;
printf(,c);
ActualPriceis:
%f\n'
运行结果:
120↙
0.85↙
102.000000↙
5.输入并运行以下程序
{inta;
a=-1;
%d%u\n"
a,a);
对照书本上的知识,想想为什么。
6.以下程序对一个实型数保留小数点后两位,对第三位四舍五入
{doublex;
Enterx:
%lf"
x);
(1)x=%f\n"
x);
x=x*100;
x=x+0.5;
x=(int)x;
x=x/100;
(2)x=%f\n"
试将scanf("
改为scanf("
%f"
看看有什么变化。
编程训练
⑴编写一个程序,输入两个整数:
2000和425,求出它们的商数和余数,并进行输出。
⑵已知:
1公里=2里=1000米,请编写一个程序,输入公里数,将其换算成里和米。
要求程序的输入输出形式如下:
EnterKilo:
3.3↙(以数据3.3为例)
3.30Kilo=6.60Li=3300Meter
⑶编写一个程序,将两个两位数的正整数a,b合并成一个整数放在c中,合并的方式:
将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上,如当a=55,b=13时,c=5482。
⑷编写程序,把560min换算成用h和min表示,然后进行输出。
⑸编写程序,读入3个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第2位数进行四舍五入,最后输出结果。
实验二选择结构C程序设计
⑴掌握程序的书写风格;
⑵熟练掌握if语句的使用;
⑶熟练掌握switch语句的使用。
一、关于程序设计风格
C语言的书写格式非常自由,例如,一行内可以写多个语句,一个语句很长时也可以分写在多行上。
但是,为了提供程序的可读性,我们在书写源程序时应该尽可能地做到清晰、美观,这不仅能使程序容易读懂,更重要的是,当程序出现错误时便于查错和改错。
程序的可读性也是结构化程序设计方法强调的一个要点。
要使程序清晰易读,一个较好的做法是采用缩格书写形式。
下面两个程序的功能完全相同,其它语句也完全一样,只是程序的书写格式不同。
试比较它们的书写格式,从中领会缩格书写的好处(注:
以下程序大家不必理解,因为循环结构是下一章的内容,大家只需借此程序领略一下程序设计风格)。
程序⑴程序⑵
main()main()
{inta,b,t;
{
%d%d"
b);
inta,b,t;
while(a!
=0&
&
b!
=0)scanf("
%d,%d"
{while(a!
=0)
if(a<
b){
{t=a;
if(a<
b)
a=b;
{t=a;
b=t;
}a=b;
max=%d,min=%d\n"
a,b);
b=t;
}}
}printf("
scanf("
}
程序⑴没有采用缩格的书写形式,整个程序看上去较乱,读起来也比较困难,如果要改正程序中的错误(如花括号是否匹配、错误是在循环之内还是在循环之外,等等),就更加不容易了。
程序⑵采用了缩格的书写形式,程序结构清晰,可读性好。
对初学者来说,无论是在纸上书写程序,还是上机建立源程序,都应该注重程序的书写格式,这样,才能大大提高后面调试程序的效率。
二、运行下列程序,分析并观察运行结果
1.输入并运行以下程序
{intx,y;
printf("
Enterx&
y:
x,&
y);
x,y:
%d%d\n"
x,y);
if(x>
y)printf("
x=%d\n"
if(y>
x)printf("
y=%d\n"
y);
if(x==y)printf("
x==y%d:
2.输入并运行以下程序
{inta,b,c,t;
inputa,b,c:
%d%d%d"
a,&
b,&
a=%d,b=%d,c=%d\n"
a,b,c);
if(a>
{t=a;
a=b;
c)
a=c;
c=t;
if(b>
{t=b;
b=c;
%d,%d,%d\n"
a,b,c);
{intx,y;
x,y:
%d%d\n"
x,y);
y)
max=x=%d\n"
else
max=y=%d\n"
**end**\n"
4.输入并运行以下程序
{intn;
inputn:
%d"
n);
if(n%3==0)
n=%dYES\n"
n);
else
n=%dNO\n"
{intg;
Enterg:
g);
g=%d:
g);
if(g>
=90)
A\n"
elseif(g>
=80)
B\n"
=70)
C\n"
=60)
D\n"
E\n"
6.输入并运行以下程序
Enteramark:
switch(g/10)
{case10:
case9:
break;
case8:
case7:
case6:
case: