您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页C语言运行环境

C语言运行环境

来源:华佗小知识
 C语言上机指导 睿佳教育内部资料 第1页

C语言上机实验指导

实验一 C语言运行环境及顺序结构程序设计

实验目的

⑴熟练掌握C语言在VC6.0编程环境下的操作; ⑵运行简单的C程序,初步了解C源程序的特征; ⑶熟悉printf( )函数以及scanf( )函数的基本使用。

实验内容

C语言源程序(后缀名为.c)可以在VC6.0等很多编译系统或集成环境中编译运行,最新版2008年全国计算机等级考试(NCRE)将全面使用VC6.0,所以我们主要介绍VC6.0上机环境。

一、Microsoft Visual C++6.0(简称VC++6.0或VC6.0)的简介和安装 现在常用的VisualC++6.0版本,虽然已有公司推出汉化版,但只是把菜单汉化了,并不是真正的中文版VisualC++6.0,而且汉化的用词不准确,因此许多人都使用英文版。如果计算机中未安装VisualC++6.0,则应先安装VisualC++6.0。Visual C++是Microsoft Visual Studio的一部分,因此需要找到Visual Studio的光盘,执行其中的setup.exe,并按照屏幕上的提示进行安装即可。

安装结束后,在Windows的“开始”菜单中的“程序”子菜单中就会出现Microsoft Visual Studio子菜单。在需要使用Visual C++时,只需从电脑上选择“开始”→“程序”→Microsoft Visual Studio→VisualC++6.0(也可以从桌面快捷方式进入)即可。此时屏幕上短暂显示Visual C++6.0的版权页后,出现VisualC++6.0的主窗口,如图1-1所示。在VisualC++6.0主窗口的顶部是VisualC++的主菜单栏,其中包括9个菜单项:File(文件)、Edit(编辑)、Insert(插入)、Project(项目)、Build(构建)、Tools(工具)、Window(窗口)、Help(帮助)。以上各项在括号中的是VC6.0中文版中的中文显示,以使读者在使用VC6.0中文版时便于对照。

主窗口的左侧是项目工作区窗口,右侧是程序编辑窗口,下面是调试信息窗口。工作区窗口显示所设定的工作区的信息,程序编辑窗口用来输入和编辑源程序,调试信息窗口用来显示程序出错信息和结果有无错误(errors)或警告( warinings)。

图1-1 VisualC++6.0主窗口

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第2页

二、熟悉VC6.0编程环境

下面我们介绍如何在VC6.0环境中编译运行C语言的程序。首先我们介绍比较简单的情况,即程序只由一个源程序文件组成,即单文件程序。我们平时学习二级C语言一般都是单文件程序。

新建一个C语言源程序,其编译运行的步骤如下:

在Visual C++主窗口的主菜单栏中单击File(文件),在其下拉菜单中单击New(新建),如图1-2所示。

图1-2 单击New(新建)

弹出一个对话框,单击此对话框的左上角的File(文件)选项卡,选择C++Source File选项,如图1-3所示。

图1-3给程序命名

使用默认的文件存储路径则可以不必更改Location(目录)文本框,但如果想在其它地方存储源程序文件则需要在对话框右半部分的Location(目录)文本框中输入文件的存储路径,也可以单击右边的省略号(…)来选择存储的目标文件夹。

然后,我们在右上方的File(文件)文本框输入准备编辑的源程序文件的名字(如ruijia.c)。

注意:如果不写后缀,系统会默认指定为.cpp,表示要建立的是C++源程序。因此命名时要加上后缀.c。 单击OK按钮后,如图1-4所示,就可以输入程序代码了。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第3页

图1-4 开始输入程序代码

我们输入的程序代码如下: #include \"stdio.h\" main( ); {

printf(Hello,Ruijia!\\n\") }

在输入过程中我们故意出了两个错误。输入完毕后,我们开始编译和调试程序,单击主菜单栏中的Build(编译),在其下拉菜单中选择Compile ruijia.c(编译ruijia.c)项,如图1-5所示。

图1-5编译程序

单击Compile ruijia.c(编译ruijia.c)命令后,屏幕上出现一个对话框,内容是:This build command requires an active project workspace.Would you like to create a default project workspace?(此编译命令要求一个有效的项目工作区,你是否同意建立一个默认的项目工作区?)(注:如果你事先已经建立了工作区,则不会出现这个对话框)单击是(Y)按钮,表示同意由系统建立默认的项目工作区,如图1-6所示。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第4页

图1-6 要求建立默认的项目工作区

屏幕如果继续出现“将改动保存到E:\\ruijia\\ruijia.c”,单击是(Y)。 也可以不用选择菜单的方法,而用Ctrl+F7快捷键来完成编译。

屏幕下面的调试信息窗口指出源程序有无错误,本例显示2 error(s),0 warning(s)。我们现在开始程序的调试,发现和改正程序中的错误。编译系统能检查程序中的语法错误。语法错误分为两类:一类是致命错误,以error表示,如果程序有这类错误,就通不过编译,无法形成目标程序,更谈不上运行了;另一类是轻微错误,以warning(警告)表示,这类错误不影响生成目标程序和可执行程序,但有可能影响运行的结果,因此也应当改正,使程序既无error,又无warning。本例显示如图1-7所示。

图1-7 调试信息窗口指示程序有无错误

用鼠标单击调试信息窗口中右侧的向上箭头,可以看到出错的位置和性质,如图1-8所示。

图1-8出错位置

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第5页

进行改错时,双击调试信息窗口中的第1个报错行,这时在程序窗口中出现一粗箭头指向被报错的程序行(第3行),提示改错位置,如图1-9所示。

图1-9提示改错位置

将第2行末尾的分号删去。再用同样的方式找到第2个出错位置,在第4行末尾加上分号。再仔细阅读程序,应该没有问题了。

在选择compile ruijia.c项重新编译,此时编译信息告诉我们:0 error(s),0 warning(s),既没有致命错误(error),也没有警告错误(warning),编译成功。这时产生一个ruijia.obj文件,见图1-10的调试信息窗口。

图1-10 产生目标文件

在得到了目标程序后,我们就可以对程序进行连接了,选择主菜单Build(构建)→Build ruijia.exe(构建ruijia.exe),成功完成连接后,生成了一个可执行文件ruijia.exe。

以上我们是分别进行程序的编译和连接,其实我们可以选择菜单Build→Build(或按F7键)一次完成编译和连接。但对于初学者,我们还是提倡分步进行编译和连接。

我们得到了可执行文件ruijia.exe后 ,就可以直接执行ruijia.exe了。选择Build→!Execute ruijia.exe(执行 ruijia.exe)(或按Ctrl+F5运行也可)。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第6页

程序执行后,屏幕切换到输出结果的窗口,显示出运行结果,如图1-13所示。可以看到Hello,Ruijia! 第2行Press any key to continue 并非程序所指定的输出,而是VC6.0在输出完运行结果后系统又自动加上的一行信息,通知用户:“按任何一键以便继续”。当你按下任何一键后,输出窗口消失,回到VC6.0主窗口,此时可以继续对源程序进行修改补充或进行其它的工作。

图1-13 显示运行结果

然后我们选择File(文件)→Close Workspace (关闭工作区),屏幕提示如图1-14所示

图 1-14 确认是否关闭所有工作区

单击是(Y)关闭工作区以结束对该程序的操作,然后又可以写新程序了。提醒:如果不关闭工作区就编写新程序,可能原来的程序还在工作区内,从而会给初学者运行程序带来麻烦。

如果我们需要打开已经保存的文件,方法如下。 方法一:在VC6.0中选择File→Open菜单或按Ctrl+O键,或单击工具栏中的Open 小图标来打开Open对话框,从中选择所需的文件,打开该文件,程序显示在编辑窗口。如果在修改后。仍保存在原来的文件中,可以选择File(文件)→Save(保存),或用Ctrl+S快捷键或单击工具栏中的小图标来保存文件。另外,如果不想将源程序存放到原先指定的文件中,可以不选Save项,而选择Save As(另存为)项,并在弹出的Save As对话框中指定文件路径和文件名。

方法二:如果后缀为.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中输入以下求矩形面积的程序,故意出现错误,运行并调试修正如下程序: #include \"stdio.h\" main( ) {

float a,b,area; a=1.4 b=3.5;

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第7页

area=abb;

printf(\" a=%f,b=%f,area=%f\\n\" ,a,b,area);

}

新建并调试运行步骤如下:

⑴在Visual C++主窗口的主菜单栏中单击File(文件),在其下拉菜单中单击New(新建),弹出一个对话框,单击此对话框的左上角的File(文件)选项卡,选择C++Source File选项。使用默认的文件存储路径则可以不必更改Location(目录)文本框,在右上方的File(文件)文本框输入准备编辑的源程序文件的名字(现输入mycl.c),当然,读者完全可以指定其它路径和文件名。单击OK按钮后,就可以输入如上程序代码了。

⑵如上代码输入后,单击主菜单栏中的Build(构建),在其下拉菜单中选择Compile mycl.c(编译mycl.c)项。 ⑶屏幕上出现一个对话框,内容是This build command requires an active project workspace.Would you like to create a default project workspace?(此编译命令要求一个有效的项目工作区,你是否同意建立一个默认的项目工作区?)(注:如果你事先已经建立了工作区,则不会出现这个对话框)单击是(Y)按钮,表示同意由系统建立默认的项目工作区,屏幕如果继续出现“将改动保存到…”单击是(Y)。

⑷屏幕下面的调试信息窗口指出源程序有2 error(s),2 warning(s)(发现a=1.2这一行掉了分号“;”)。 ⑸改正后单击Build→Compile mycl.c(发现仍有错误area=a*b写成了area=abb)。

⑹再改正后单击Build→Compile mycl.c下面的调试信息窗口显示0 error(s),0 warning(s)证明计算机已经检查不出语法错误了。

⑺运行程序(Build菜单→!Execute mycl.exe命令)。 ⑻查看结果后,按ESC返回。

⑼单击File菜单→Close Workspace命令,选择是(Y)。 ⑽编写新的程序…… 注意:

⑴在C程序中,有时可以省略#include\"stdio.h\"这个命令行,在TC2.0中运行时不会报错,但在VC6.0运行时,系统会报告警告(warning),如果不影响程序正常执行,我们可以放过这样的警告。

⑵有时我们写#include也可以,至于尖括号和双引号有什么不同,我们初学者现在不必理会,后面自然会学到的。

2.在VC中输入以下的程序,运行并查看运行结果: main( ) {

printf(\"Hello Ruijia! \"); }

多运行几遍,看看运行结果,将printf(\"Hello Ruijia! \")改成printf(\"Hello Ruijia!\\n\"),再运行几遍,看看运行结果,比较一下有什么不同,想想为什么。

3.输入并运行以下程序 #include \"stdio.h\" main( ) {

printf(\"****************\\n\"); printf(\"*Welcome to ruijia!*\\n\"); printf(\"****************\\n\"); }

四、熟悉顺序结构,掌握printf( )和scanf( )函数

1.输入并运行如下程序 #include \"stdio.h\" main( ) {

float p=3.14159; printf(\"p=%.2f\\n\printf(\"p=%.4f\\n\

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第8页

printf(\"p=%10.2f\\n\printf(\"p=%10.4f\\n\printf(\"p=%-10.2f\\n\ printf(\"p=%-10.4f\\n\

}

说明:分析并观察完该程序的运行结果之后,在语句float p=3.14159; 的后面加入语句

printf(\"\\n\\n\\n\");

再次运行程序,注意观察运行结果有什么变化。 2.运行下列程序,注意观察运行结果。 #include \"stdio.h\" main( ) {

int a,b; float c;

scanf(\"%d%d%f\printf(\"a=%d\\n\printf(\"b=%d\\n\printf(\"c=%f\\n\}

说明:运行这个程序时,分别按下面4种格式输入数据,注意观察各自的运行结果。 第一种格式:

10 25 4.72↙ 第二种格式:

10↙ 25↙ 4.72↙ 第三种格式:

10↙ 4.72↙ 第四种格式:

10,25,4.72↙(这种输入格式是错误的,想一想错在什么地方) 3.输入如下程序:

#include \"stdio.h\" void main( ) {

int i,j,m,n; i=2; j=5; m=++i; n=j++; printf(\"%d,%d,%d,%d\\n\}

⑴编译和运行程序,注意i、j、m、n各变量的值。 ⑵将第6、7行改为: m=i++; n=++j;

再编译和运行,分析结果。 ⑶程序改为:

#include \"stdio.h\"

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第9页

void main( ) { int i,j; i=2; j=5;

printf(\"%d,%d\\n\}

再编译和运行,分析结果。

⑷在⑶的基础上,将printf语句改为:

printf(\"%d,%d\\n\再编译和运行。

⑸再将printf语句改为:

printf(\"%d,%d,%d,%d,\\n\再编译和运行,分析结果。

4.完善程序。下面程序的功能是,根据商品的原价和折扣率,计算商品的实际售价。请在程序中的横线处填写正确的语句或表达式,使程序完整。上机调试程序,使程序的运行结果与书中的结果一致。

#include \"stdio.h\" main( ) {

double cost,percent,c;

printf(\"Please Enter the First Price: \");

scanf(\" \ /*答案是填“%lf”*/

printf( ); /*答案是填“''Enter the Discount: ''”*/ scanf(\" \ /*答案是填“%lf”*/ c=cost*percent;

printf( ,c); /*答案是填“''Actual Price is:%f\\n''”*/ }

运行结果:

Please Enter the First Price: 120↙ Enter the Discount: 0.85↙ Actual Price is: 102.000000↙ 5.输入并运行以下程序

#include \"stdio.h\" main( ) { int a; a=-1;

printf(\"%d %u\\n\}

对照书本上的知识,想想为什么。

6.以下程序对一个实型数保留小数点后两位,对第三位四舍五入

#include \"stdio.h\" main( ) { double x;

printf(\"Enter x: \"); scanf(\"%lf\

printf(\" (1)x=%f\\n\x=x*100; x=x+0.5; x=(int)x; x=x/100;

printf(\" (2) x=%f\\n\

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第10页

}

试将scanf(\"%lf\改为scanf(\"%f\看看有什么变化。

编程训练

⑴编写一个程序,输入两个整数:2000和425,求出它们的商数和余数,并进行输出。

⑵已知:1公里=2里=1000米,请编写一个程序,输入公里数,将其换算成里和米。要求程序的输入输出形式如下:

Enter Kilo: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( ) {int a,b,t; {

scanf(\"%d%d\ int a,b,t;

while(a!=0&&b!=0) scanf(\"%d,%d\{ while(a!=0&&b!=0) if(a欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第11页

}

程序⑴没有采用缩格的书写形式,整个程序看上去较乱,读起来也比较困难,如果要改正程序中的错误(如花括号是否匹配、错误是在循环之内还是在循环之外,等等),就更加不容易了。

程序⑵采用了缩格的书写形式,程序结构清晰,可读性好。对初学者来说,无论是在纸上书写程序,还是上机建立源程序,都应该注重程序的书写格式,这样,才能大大提高后面调试程序的效率。

二、运行下列程序,分析并观察运行结果

1.输入并运行以下程序 main( )

{ int x, y;

printf(\"Enter x&y:\\n\"); scanf(\"%d%d\

printf(\"x, y: %d %d\\n\ if(x>y) printf(\"x=%d\\n\ if(y>x) printf(\"y=%d\\n\

if(x= =y) printf(\"x= =y%d:\\n\}

2.输入并运行以下程序 main( )

{ int a,b,c, t;

printf(\"input a, b, c: \");

scanf(\"%d%d%d\

printf(\"a=%d,b=%d,c=%d\\n\

if(a>b)

{t=a; a=b;b=t;} if(a>c)

{t=a; a=c; c=t;}

if(b>c)

{t=b; b=c; c=t;}

printf(\"%d, %d, %d\\n\

}

3.输入并运行以下程序 main( )

{ int x,y;

printf(\"Enter x&y: \"); scanf(\"%d%d\ printf(\"x,y:%d%d\\n\ if(x>y) printf(\"max=x=%d\\n\else printf(\"max=y=%d\\n\ printf(\"**end**\\n\"); }

4.输入并运行以下程序 main( ) { int n;

printf(\"input n: \"); scanf(\"%d\ if(n%3= =0)

printf(\"n=%d YES\\n\ else

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第12页

printf(\"n=%d NO\\n\

}

5.输入并运行以下程序 main( ) { int g;

printf(\"Enter g: \"); scanf(\"%d\ printf(\"g=%d: \ if(g>=90)

printf(\"A\\n\"); else if(g>=80)

printf(\"B\\n\"); else if(g>=70) printf(\"C\\n\"); else if(g>=60) printf(\"D\\n\");

else

printf(\"E\\n\");

}

6.输入并运行以下程序 main( ) { int g;

printf(\"Enter a mark: \"); scanf(\"%d\ printf(\"g=%d: \ switch(g/10)

{ case 10:

case 9: printf(\"A\\n\"); break; case 8: printf(\"B\\n\"); break; case 7: printf(\"C\\n\"); break; case 6: printf(\"D\\n\"); break; case : printf(\"E\\n\"); } } 去掉每一句话后面的break语句,看看运行结果有什么不同。

编程训练 ⑴有一函数: x (x<1) y= 2x-1 (1≤x≤10) 3x-11 (x≥10) 用scanf函数输入x的值,求y值。

运行程序,输入x的值(分别为x<1、1≤x<10、x≥10三种情况),检查输出的y值是否正确。

⑵编写程序,输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1)。输出该学生的实际年龄。

⑶编写程序,输入一个整数,打印出它是奇数还是偶数。 ⑷编写程序,输入a、b、c三个数,打印出最大者。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第13页

实验三 循环结构、字符型数据C语言程序设计

实验目的

⑴熟练掌握while、do-while语句实现循环的方法; ⑵熟练掌握for语句实现循环的方法; ⑶熟悉掌握字符型数据。

实验内容

1.输入并运行以下程序 main( )

{ int i,sum; i=1; sum=0;

while(i<=100)

{ sum=sum+i; i++; } printf(\"sum=%d\\n\

}

⑴本程序功能是从1累加到100,要求能熟练记住。

⑵将while(i<=100)改为while(i<100),看看运行结果有什么不同,想想为什么。 ⑶如果要求1到1000的和,本程序应该怎么改?

⑷改进程序,求1+2+……+n(n为你想输入的任意整数)

⑸再次改进程序,可以求m+(m+1)+……+n的和(m,n为任意整数)。 2.将上面的程序修改为求阶乘 main( )

{ int i,sum; i=1; sum=1; while(i<=6)

{ sum=sum*i; i++; } printf(\"sum=%d\\n\}

比较一下,与上一题有什么不同,想想如果将6改为8将会怎么样。 3.将第1题改为用for循环来做 main( ) { int i,sum; sum=0; for(i=1;i<=100;i++) { sum=sum+i; }

printf(\"sum=%d\\n\

}

4.将第2题改为用for循环来做 main( )

{ int i,sum; sum=1;

for(i=1;i<=6;i++) { sum=sum*i;}

printf(\"sum=%d\\n\

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第14页

}

5.将第3题稍做修改,学会break和continue的使用 ⑴ main( )

{ int i,sum; sum=0;

for(i=1;i<=100;i++) { if(i= =4)break;

sum=sum+i; }

printf(\"sum=%d\\n\

}

将以上程序的运行结果与第3题的运行结果比较。 ⑵ main( )

{ int i,sum; sum=0;

for(i=1;i<=100;i++) { if(i= =4) continue;

sum=sum+i; }

printf(\"sum=%d\\n\}

将以上程序的运行结果与第3题的运行结果比较。 6.输入并运行以下程序 #include \"math.h\" main( ) { int s;

float n,t,pi; t=1.0; pi=0; n=1.0; s=1.0;

while(fabs(t)>=1e-4) { pi=pi+t; n+=2.0; s=-s; t=s/n; } pi=pi*4; printf(\"pi=%f\\n\}

本程序为求π值的程序。必须记住求绝对值的函数fabs,以及使用s=-s;来改变正负号。 7.输入并运行以下程序 main( )

{ float r,s;

const float pi=3.14159; for(r=0.5; r<6.0; r++)

{ s=pi*r*r;

printf(\"r=%f s=%f\\n\

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第15页

}

}

8.输入并运行以下程序 main( ) { int k,i,j;

for(i=0;i<=2;i++)

{ for(k=1;k<=i;k++) printf(\" \"); for(j=0;j<=3;j++) printf(\"*\"); printf(\"\\n\"); }

}

9.输入并运行以下程序 main( ) { int i,s; s=0;

for(i=1;i<=10;i++) { s=s+i;

if(s>5)break;

printf(\"s=%d\\n\ }

}

10.输入并运行以下判断一个数是否为素数的程序(备注:这个程序很重要): main( ) { int i,x;

printf(\"Enter a Number:\\n\"); scanf(\"%d\ for(i=2;i{ if(x%i= =0)break; }

if(i= =x)printf(\"YES\\n\");

else printf(\"NO\\n\"); }

想想看,如果将for(i=1;i#include main( ) {

char ch; ch=getchar( ); putchar(ch);

printf(\"ASCII Code:%d\\n\}

说明:运行这个程序,输入一个字母,看看运行结果如何. ⑵

#include main( ) {

char c1,c2;

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第16页

c1=getchar( ); c2=getchar( );

printf(\"c1=\\'%c\\'\\n\ /* \\'的作用是输出符号' */ (c2= ='\\n')?printf(\"c2=Enter\"):printf(\"c2=\\'%c\\' \;

}

说明:运行这个程序时,分别输入下面3组数据,注意观察各自的运行结果,并思考为什么会产生这样的运行结果。

第一组数据: a↙

第二组数据: ab↙

第三组数据: abc↙ ⑶

#include main( ) {

char ch, c1,c2;

printf(\"Enter an Alpha: \"); ch=getchar( ); c1=ch-1; c2=ch+1;

printf(\"\\nBefore %c is %c,After it is %c\\n\}

说明:可将程序中的语句

ch=getchar( ); 改为 ch=getch( ); 看看运行结果有什么变化。

编程训练

⑴编写一个程序,输出1~1000之内所有的非素数(注意:素数即质数)。 ⑵编写程序,求1-3+5-7+…-99+101的值。

⑶编写程序,求e的值。e≈1+1/1!+1/2!+1/3!+1/4!+…+1/n! ①用for循环,计算前50项。

②用while循环,要求直至最后一项的值小于10-4

⑷编写程序,输出从公元1000年至2000年所有闰年的年号。每输出3个年号换一行。判断公元年是否为闰年的条件是: ①公元年数能被4整除,而不能被100整除。 ②公元年数能被400整除也是闰年。

⑸猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上只剩下一个桃子了。求第一天共摘了多少个桃子。

在得到正确结果后,修改题目,改为猴子每天吃了前一天剩下的一半后,再吃两个。请修改程序并运行,检查结果是否正确。

实验四 数组和指针C程序设计

实验目的

⑴熟练掌握一维数组和二维数组;

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第17页

⑵熟练掌握指针的使用;

⑶熟练掌握数组与指针的关系。

实验内容

1.输入并运行以下程序 #include \"stdio.h\" main( )

{ int i,a[10];

for(i=0;i<=9;i++) a[i]=i;

for(i=0;i<=9;i++) printf(\"%d\

printf(\"\\n\"); }

2.输入并运行以下程序 #include \"stdio.h\" #define M 30 main( )

{ int s[M],i,k=1;

for(i=0;ifor(i=0; iif((i+1)%10= =0)printf(\"\\n\"); }

}

3.输出杨辉三角形 #include \"stdio.h\" void main(void) {

static int array[10][10],i,j,k; for(i=0;i<10;i++) {

array[i][i]=array[i][0]=1; for(j=1;j<=i;j++) array[i][j]=array[i-1][j]+array[i-1][j-1]; } for(i=0;i<10;i++) { for(k=0;k<10-i;k++)

printf(\" \"); /*三个空格,一定要记着是三个哦*/ for(j=0;j<=i;j++) {

printf(\"%5d\ printf(\" \"); }

printf(\"\\n\"); } }

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第18页

4.排序函数(优化的选择排序,从小到大),要求能熟练掌握 #include \"stdio.h\" #define NUM 6 main( )

{ int i,j,p,t,a[NUM]={5,7,4,2,8,6};

for(i=0 ifor(i=0;i{ p=i;

for(j=i+1;ja[j]p=j;

if(p!=i)

{t=a[i];a[i]=a[p];a[p]=t;}

}

for(i=0;i5.排序函数(冒泡排序,从小到大),要求能熟练掌握 #include \"stdio.h\" #define NUM 6 main( )

{ int i,j,p,t,a[NUM]={5,7,4,2,8,6};

for(i=0 ;iputchar('\\n');

for(i=NUM-1; i>0; i--) { for(j=0;jif(a[j+1]for(i=0;i6.输入并运行以下程序 main( )

{ int a,b,min; int *pa,*pb,*pmin; pa=&a; pb=&b; pmin=&min; scanf(\"%d%d\ printf(\"a=%d b=%d\\n\ *pmin=*pa; if(*pa>*pb) *pmin=*pb;

printf(\"min=%d\\n\}

编程训练

⑴输入一数组,按从大到小的顺序排列(提示:可用选择排序、冒泡排序或插入排序的任意一种)。 ⑵输入一行数字字符,请用数组元素作为计数器来统计每个数字字符的个数。用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数……

⑶写函数,对具有10个整数的数组进行如下操作:从第n个元素开始直到最后一个元素,依次向前移动一个位置。输出移动后的结果。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第19页

⑷写函数把任意十进制正整数转换成二进制数。提示:把十进制数不断被2除余数放在一个一维数组中,直到商数为0。在主函数中进行输出,要求不得按逆序输出。

⑸N个人围成一圈顺序排号。从第1人开始报数(从1到3),凡报到3的退出圈,问最后留下的是原来几号。

实验五 函数C程序设计

实验目的

⑴熟练掌握什么是函数,编写并调用函数; ⑵熟练掌握函数和数组的关系; ⑶熟练掌握函数和指针的关系。

实验内容

1.输入并运行以下程序 main( )

{ int x=2,y=3,z=0;

printf(\" (1)x=%d y=%d z=%d\\n\ try(x,y,z);

printf(\" (4)x=%d y=%d z=%d\\n\}

try(int x,int y,int z)

{ printf(\" (2)x=%d y=%d z=%d\\n\ z=x+y; x=x*x; y=y*y;

printf(\" (3)x=%d y=%d z=%d\\n\}

2.输入并运行以下程序 main( )

{ int x=10,y=20;

printf(\" (1)x=%d y=%d\\n\ swap(x,y);

printf(\"(4)x=%d y=%d\\n\}

swap(int a,int b) { int t; printf(\" (2)a=%d b=%d\\n\ t=a; a=b; b=t;

printf(\" (3)a=%d b=%d\\n\

}

3.输入并运行以下程序 #include \"math.h\" int isprime(int); main( ) { int x;

printf(\"Enter a integer number: \"); scanf(\"%d\ if(isprime(x))

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第20页

printf(\"%d is prime\\n\

else printf(\"%d is not prime\\n\

}

isprime (int a ) { int i;

for(i=2;i<=sqrt((double)a);i++) if(a%i= =0) return 0; return 1;

}

以上是判断素数的程序,其中sqrt为开方的函数,需要记住。Isprime函数的编写方法需要熟练掌握。 4.输入并运行以下程序 myadd(int *a,int *b) { int sum; sum=*a+*b;

return sum; }

main( )

{ int x,y,z;

printf(\"Enter x,y: \"); scanf(\"%d%d\ z=myadd(&x,&y);

printf(\"%d+%d=%d\\n\

}

5.输入并运行以下程序 main( )

{ int x=30,y=20;

printf(\" (1)x=%d y=%d\\n\ swap(&x,&y);

printf(\" (4)x=%d y=%d\\n\

}

swap(int *a,int *b) { int t;

printf(\" (2)a=%d b=%d\\n\ t=*a; *a=*b; *b=t; printf(\" (3)a=%d b=%d\\n\}

比较本题与第2题之间的区别,想一想为什么? 6.输入并运行以下程序 swap(int *x1, int *x2) { int t;

t=*x1; *x1=*x2; *x2=t;

}

order(int *a,int *b)

{ if(*a>*b) swap(a,b); } main( )

{ int x,y;

printf(\"Enter x,y: \"); scanf(\"%d%d\

printf(\"x=%d y=%d \ x,y);

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第21页

order(&x,&y);

printf(\"x=%d y=%d\\n\

}

7.输入并运行以下程序 int *fun(int*,int*); main( )

{ int *p,i,j;

printf(\"Enter tow number: \"); scanf(\"%d%d\

p=fun(&i,&j);

printf(\"i=%d,j=%d,*p=%d\\n\

}

int *fun(int*a,int*b) { if(*a>*b) return a; return b;

}

8.输入并运行以下程序 #define M 100

void arrout(int *, int); int arrin(int * ); main( )

{ int s[M], k; k=arrin(s); arrout(s,k);

}

arrin(int *a) { int i,x; i=0;

scanf(\"%d\ while(x>=0) { *(a+i)=x; i++;

scanf(\"%d\ }

return i;

}

void arrout(int *a,int n) { int i;

for(i=0; i9.输入并运行以下程序 #define M 10 #define B 4

void setstar(char *, int ); void arrout(char *, int ); main( )

{ char c[M]={'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}; setstar(&c[4],M-B);

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第22页

arrout(c,M);

}

void setstar(char *a, int n) { int i;

for(i=0;i}

void arrout(char*a,int n) {

int i;

for(i=0;i}

10.输入并运行以下程序 #include \"stdio.h\" #define NUM 8 void invert(int*,int); void priout(int*,int); main( )

{ int a[NUM]={10,20,30,40,50,60,70,80}; printf(\"Output primary data: \"); priout(a,NUM); invert(a,NUM);

printf(\"Output the inverse data: \"); priout(a, NUM);

}

void priout(int s[],int n) { int i;

for(i=0;i}

void invert(int *a,int n) { int i,j,t; i=0; j=n-1; while(i{ t=a[i]; a[i]=a[j]; a[j]=t; i++; j--; }

}

11.输入并运行以下程序 #include \"stdlib.h\" #define M 50 #define N 10 getdata(int *s) { int i;

for(i=0;i}

stat(int *a,int *c) { int i;

for(i=0;i欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第23页

}

outdata(int *c) { int i;

for(i=0; i}

main( )

{ int a[M],c[N]; getdata(a);

stat(a,c);

printf(\"Output the result: \\n\"); outdata(c);

}

编程训练

⑴编写函数 int mymod(int a, int b)用以求a被b除之后的余数。 ⑵编写函数:1-1/2+1/3-1/4+1/5-1/6+1/7-…+1/n。

⑶编写函数用以求表达式X2-5x+4,x作为参数传送给函数,调用此函数求: Y1=22+5·2+4 Y2=(x+15)2-5·(x+15)+4 y3=sin2x-5·sinx+4

⑷请编写函数,其功能是对传送过来的两个浮点数求出和值与差值,并通过形参传送回调用函数。 ⑸请编写函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。

实验六 上机考试系统的使用

实验目的

⑴熟悉上机考试题型;

⑵熟悉程序填空题、程序修改题和程序设计题的做法; ⑶熟悉上机考试系统的使用。

实验内容

一、上机考试题型概述 全国计算机等级考试上机考试系统的运行平台是Microsoft的中文版Windows 2000操作系统。测试考生对Windows 2000操作系统的一般理解及考生在Windows 2000环境下的微机操作能力和各种应用软件的使用能力。2008年版最新大纲二级C语言上机编程环境为VC6.0。

2008年最新大纲规定二级C语言上机考试时间为90分钟。二级C语言考试题目类型有三种:程序填空题(30分)、程序修改题(30分)和程序设计题(40分)。等级考试上机考试评分是由计算机评分和人工阅卷相结合的。

1.程序填空题

填空题是新考试系统二级上机考试出现的新题型,要求在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。根据填空题的特点,需要注意以下事项:

⑴试题中用/******found******/来提示一个填空,并用 1 、 2 、等来标识每个需填的空,考生应使用正确的答案来代替上面的填空编号。记住一定要将横线和编号删除掉。

⑵只能在填空的地方改动程序,不要改动程序的结构,也不要增加或删除行,哪怕是空行也不行。

⑶程序是否运行与得分无关,即使没有任何错误,能正确运行,也不一定能得分,这与改错题是一样的,详细分析参考下面的改错题。

⑷题目做完后必须保存。 2.程序修改题(也叫改错题)

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第24页

⑴错误的性质基本分语法错和逻辑错两种。

⑵试题中用/******found******/来提示在下一行(或下面第2行)有错。

⑶只能在出错行上进行修改,不要改动程序行结构,也不要增加或删除行,哪怕是空行也不行。

⑷不得删除/******found******/,评分程序将根据这个标志,从考生的modil.c文件中抽取它的下一行信息,与标准答案进行比较。通常,标准答案会有多种,只要考生的答案和其中一个对应上了即可得到相应的分数。由于标准答案不可能涵盖所有可能正确的答案,所以要求考生在做改错题时,务必做到答案的“朴实无华”和“平易近人”。比如说在累加到100的for循环控制语句中,判断是否达到上限,例如x<100应改为x<=100,最好不要使用x-100<=0这个答案,因为标准答案中没有这种答案!由上述可以得到这样一个奇怪的结论:①即使你的改错程序能够正确执行,也未必可以得分。②改错程序修改完毕后,无所谓运行与否,这与得分无关。很多考生把自己改过的改错程序运行后,没有任何错误,但却没有得到理想的分数,造成上机不能通过,心里想不通,其实是对上述问题没有了解罢了。

建议做改错题的步骤:

⑴先按F9检查程序是否有语法错误。当编译提示有语法错时,可参考编译提示查找并改正错误。 ⑵当不再出现语法错误时,使用CTRL+F9执行,按照试题的示例给出的数据进行试算,若试算的结果与输出结果相同时,该题就做对了;若试算的结果与输出的结果不同,就应进一步检查程序中的逻辑错误。

⑶当程序存在逻辑错误时,首先应当理解题意、读懂程序的算法,必要时可按步检查数据的流程,以便确定错误所在。例如,题目要求数据按由小到大排序,而结果数据是按由大到小进行了排序,问题可能出现在条件判断上。又如,输出的字符串比预期的短,就有可能字符串的结束标志放错了位置。再如做循环的时候,数组上限下限错误了,基数是从0开始,而不是从1开始的。修改程序中的逻辑错时,要求考生认真读懂程序代码。

⑷修改完成,得到正确结果后,一定不要忘记把修改后的程序保存。 3.程序设计题(也叫编程题)

上机编程题目都必将生成一个out.dat文件,所以,评分程序是按照最终生成的文件给分的。 ⑴只要考生能生成最终答案文件,均可得分。

⑵很多最终答案文件只有少数若干行数据,分数由正确答案的行数决定。比如有一道题,要求用迭代方法计算cos(x)-x=0的一个近似根,其答案是0.739085,最终要求生成的文件OUT.DAT中只有一行数据。有这个文件,并且该文件只有一行数据0.739085的话,就可以得到100分,无所谓你是否编写程序了。

因此,编辑题必须运行,并且要保证运行结构是正确的。有的是直接由程序写例子,有的是要求考生手工输入,这样的程序一般都会有这样一句话:例如,输入×××××,则输出×××××。如果你输入这个数据,得到和题目要求一样的结果,那么恭喜你,这道题你就做对了。

在编程题中,都会有一个或两个与文件操作有关的函数NONO( ),这是用于评分使用的,不要改动。编程题做完后一定要正确运行,否则肯定是0分。

必须认真完成上机考试题库的练习。在上机考试时,将会在题库中随机各抽取一道题目。填空题和改错题需要参考本中心提供的标准答案,如果答案和标准答案不同,将不能得分。编程题没有标准答案,本中心提供的答案可以提供参考。

二、上机考试系统使用说明

2008年版最新大纲全国计算机等级考试上机考试系统工作站的运行平台是Microsoft的中文版Windows2000操作系统。测试考生对Windows2000操作系统的一般理解及考生在Windows2000下的微机操作能力和各种应用软件的应用能力。使用方法如下。

⑴启动考试程序,出现如图6-1所示的登陆界面。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第25页

⑵在“开始登陆”功能项上单击鼠标左键或按回车键出现考号输入窗口,如图6-2所示。

⑶按回车或选择“考号验证”对输入的考号以及姓名、身份证号进行验证

⑷如果考号不正确,选择“否(N)”重新输入;如果考号正确,选择“是(Y)”继续。

⑸正确地输入了考号和密码之后,选择“开始考试”按钮。系统出现如图6-4所示的“考试须知”。(二级C语言和三级C语言上机都是类似的形式)

⑹选择“开始考试并计时”,进入考试界面,就可以看题、做题,并开始计时,如图6-5所示。上机考试系统将自动在屏幕中间生成装载试题内容查阅工具的考试窗口,并在屏幕顶部始终显示着考生的准考证号、姓名、考试剩余时间以及可以随时显示或隐藏试题内容查阅工具和退出考试系统进行交卷的按钮的窗口,窗口最左边的“显示窗口”字符表示屏幕中间的考试窗口正被隐藏着,当用鼠标点击“显示窗口”字符时,屏幕中间就会显示考试窗口,且“显示窗口”字符变成“隐藏窗口”。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第26页

在考试窗口中单击“程序填空题”、“程序修改题”和“程序设计题”按钮,可以分别查看各个题型的题目要求,如图6-6所示。

⑺开始做题,编译、连接和运行程序。

当考试系统登录成功后,考生在试题内容查阅窗口的“考试项目”(也叫“答题”)菜单上根据试题内容的要求选择“启动VisualC++”(如果点击“启动VisualC++,这对我们做题完全没有任何影响),启动VisualC++后,我们再根据“程序填空题”、“程序修改题”和“程序设计题”内容的要求进行操作。我们以“程序填空题”为例。如图6-7所示,我们可从VC6.0主菜单File(文件)→Open(打开)方式打开程序填空题源程序BLANK1.C。

程序填空题打开后如图6-8所示,考生根据试题要求在相应的空格处填入相应的内容。

根据要求做完题目后,接着单击菜单Build(构建)→Compile(编译)……(或单击工具栏相应按钮也可以)进行编译、连接和运行,这在本书实验一介绍过,不再赘述。

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第27页

单击Compile(编译)(Ctrl+F7)或Build(构建)(F7)或执行(!Execute)(Ctrl+F5)后,VC6.0系统可能会出现图6-9的提示信息。

其实这在本书前面的实验一已经介绍过,VC系统没有发现工程文件,要求建立一个活动的工程,此时单击“是(Y)”按钮即可。接着如果再出现提示要求保存文件,那么请单击“是(Y)”按钮进行保存。VC系统开始进行编译,如果没有发现错误,则程序通过调试;如果发现有错误或没有得到正确的运行结果,则重新进行修改,再进行编译,直至得到正确的运行结果后,保存,然后关闭整个工作区。下面就可以接着做改错题和编程题了。

如果“程序填空题”、“程序修改题”和“程序设计题”都顺利做完后,我们就可以选择“交卷”按钮进行交卷后离开考场了。

三、关于上机考试的补充说明

1.考生文件夹

当考生登录成功后,上机考试系统将自动产生一个考生考试文件夹。该文件夹将存放该考生所有上机考试的考试内容以及答题过程,因此考生不能随意删除该文件夹以及该文件夹下与考生内容有关的文件及文件夹,避免在考试和评分时产生错误,从而影响考生的考试成绩。

假设考生登录的准考证号为240199990001,则上机考试系统生成的考生文件夹将存放到G盘根目录下用户目录文件夹下,即考生文件夹为G:\\用户目录文件夹\\2401001。

考生在考试过程中所有操作不能脱离上机系统生成的考生文件夹,否则将会直接影响考生的考试成绩。在考试界面的菜单栏下,左边的区域可显示考生文件夹的路径。

2.文件的恢复

如果考生在考试过程中,所操作的文件不能复原或误删除,那么请考生自行把相应的文件从考生文件夹下HLPSYS子文件夹中拷贝回来即可,这样考生就可以继续进行考试且不会影响考生的考试成绩。

3.文件名的说明

当考生登录成功后,上机考试系统将在考生文件夹下产生一系列文件夹和文件,这其中有些文件夹和文件是不能被删除的,否则将会影响考生的考试成绩;也有些文件会根据试题内容的要求进行修改操作。我们这里列出4种类型的文件不能删除:①BLANK1.C:存放二级C语言程序填空题的源文件。②MODI1.C:存放二级C语言程

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

C语言上机指导 睿佳教育内部资料 第28页

序修改题的源文件。③PROG1.C:存放二级C语言程序编制题的源文件。④程序填空题、程序修改题和程序编制题所规定的输入数据文件和输出结果文件,例如:IN.DAT和OUT.DAT等。

最后,预祝所有考生朋友取得好成绩!

欢迎访问睿佳教育网站 http://www.ruijiajiaoyu.com

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务