C语言程序设计实验指导书.docx
- 文档编号:23732683
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:119
- 大小:434.25KB
C语言程序设计实验指导书.docx
《C语言程序设计实验指导书.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验指导书.docx(119页珍藏版)》请在冰豆网上搜索。
C语言程序设计实验指导书
盛年不重来,一日难再晨。
及时宜自勉,岁月不待人。
计算机软件基础实验指导书
计算中心
辽宁工业大学
2008年12月
实验一熟悉C语言编程环境
【实验目的】
1、熟悉C语言编程环境,掌握C程序在VisualC++6.0环境下的编辑、编译、连接和运行。
2、能够编写简单的C程序。
3、掌握程序的调试方法,能够找出并改正程序中的语法错误。
【实验内容】
一、在VisualC++6.0编程环境下的操作步骤
用一个示例详细介绍C语言源程序在VisualC++6.0编程环境下,操作的整个过程。
【示例】在屏幕上显示你的学号、姓名和专业
源程序:
/*在屏幕上显示你的学号、姓名及专业*/
#include"stdio.h"
voidmain()
{
printf("\t08001020\t张楠\t车辆工程\n");
}
操作步骤:
(1)启动VC++。
执行“开始”“程序”“MicrosoftVisualSvtudio6.0”“MicrosoftVisualC++6.0”命令,进入VC++编程环境(如图1-1所示)。
图1-1VC++窗口
(2)新建文件。
执行“文件”“新建”命令,单击“文件”选项卡(如图1-2所示),选列表中的“C++SourceFile”,在“文件”文本框中输入2-1.c,在“C目录”文本框确定存放位置,然后单击确定。
图1-2新建文件
(3)编辑和保存。
在编辑窗口(如图1-3所示)中输入源程序,然后执行“文件”“保存”命令,保存源文件。
(4)编译。
执行“编译”“编译2-1.c”命令(或编译微型条),在弹出的消息框中单击“是”按钮,开始编译,并在消息窗口中显示编译信息(如图1-3所示)。
图1-3编辑、编译源文件
信息窗口中出现“2-1.obj–0error(s),0warning(s)”,表示编译正确,没有发现错误和警告,并生成了目标文件2-1.obj。
如果显示错误信息,说明程序中存在严重的错误,必须改正;如果显示警告信息,说明这些错误并未影响目标文件的生成,但通常也应该改正。
如果显示错误信息,拖曳信息窗口的滚动条到错误信息处,双击第一个错误点,指针指到出错处。
如果指向位置没有错误,在此行的上一行或下一行找错误。
根据提示进行改正。
然后,再编译。
(如图1-4所示)。
注意:
有时,信息窗口会显示多个错误,但有时,改正第一个错误后,其它错误也没有了。
因为其它错误是由第一个错误引起的。
图1-4出错信息
(5)连接。
执行“编译”“构件2-1.exe”(或编译微型条),开始连接,并在信息窗口中显示连接信息(如图1-5所示)。
图1-5连接成功并产生运行文件
信息窗口中出现的“2-1.exe–0error(s),0warning(s)”表示连接成功,并生成了可执行文件“2-1.exe”。
(6)运行。
执行“编译”“执行2-1.exe”命令(如图1-6所示),自动弹出运行窗口(如图1-7所示),显示运行结果。
其中,“Pressanykeytocontinue”提示用户按任意键退出运行窗口,返回到VC++编辑窗口。
图1-6运行程序
图1-7显示运行结果
(7)关闭程序工作区。
执行“文件”“关闭工作区”命令(如图1-8所示),在弹出的对话框(如图1-9所示)中单击“是”按钮,关闭工作区。
图1-8关闭工作区
图1-9关闭所有文档窗口
(8)打开文件。
如果要再次打开C源文件,可以执行“文件”“打开”,在C:
\中选择文件2-1.c或者直接双击文件2-1.c。
(9)查看C源文件、目标文件和可执行文件的存放位置。
经过编辑、编译、连接和运行后,在C:
\和C:
\Debug中存放着相关文件。
其中,源文件2-1.c在c:
\中,目标文件2-1.obj和可执行文件2-1.exe都在C:
\Debug中。
二、试着编写下列程序
【例1-1】设计一个程序,程序运行后,在屏幕上显示如下图形
**************
**
*hello*
**
**************
源程序:
#include
main()/*定义主函数main()*/
{
printf("**************\n");/*调用printf函数输出*/
printf("**\n");
printf("*hello*\n");
printf("**\n");
printf("**************\n");
}
举一反三
【1-1】在屏幕上显示你的学号、姓名和专业,分别各占一行显示。
【1-2】如何在屏幕上显示下列图形?
*****
***
*
三、调试并改正错误
在屏幕上显示以下3行信息。
************
Welcome
************
源程序:
#include"stdio.h"
voidmain()
{
printf("************");
/********found********/
printf("Welcome\n")
printf("************\n");
}
【思考题】
1、计算机能够直接执行C语言中扩展名为.c的源程序文件、扩展名为.obj的目标程序和扩展名为.exe的可执行文件,对吗?
2、在编译和连接程序时,系统显示5个错误信息,那么,程序中一定有5处语法错误吗?
3、程序编译和连接时没有错误信息,那么,程序一定是正确的吗?
实验二基本数据处理
【实验目的】
1、掌握算术表达式和赋值表达式的使用
2、掌握基本输出函数的使用
3、能够编写简单的数据处理程序
【实验内容】
一、试着编写下列程序
【例2-1】求正方形的面积和周长
源程序:
#include
main()
{
inta=6,zhou,mian;/*用类型名int定义三个基本型整型变量*/
zhou=4*a;/*计算周长*/
mian=a*a;/*计算面积*/
printf("周长=%d,面积=%d\n",zhou,mian);/*用printf函数输出整型数格式控制为:
%d*/
}
运行结果:
周长=24,面积=36
举一反三
【2-1】求半径为2.3的圆的周长和面积。
提示:
定义实型变量,类型名用double。
【例2-2】任意输入一个华氏温度求对应的摄氏温度。
计算公式如下:
,式中:
C表示摄氏温度,f表示华氏温度。
源程序:
#include
main()
{
doublef,c;/*定义两个双精度的实型数*/
printf(“Enterf:
”);/*输入提示*/
/*调用scanf函数给双精度的实型变量赋值,格式控制为%lf,变量名前要加地址操作符&*/
scanf("%lf",&f);
c=5*(f-32)/9;/*根据公式求摄氏度*/
printf("\nf=%f,c=%f\n",f,c);
}
运行结果:
Enterf:
80
f=80.000000,c=26.666667
Enterf:
100
f=100.000000,c=37.777778
举一反三
【2-2】任意输入两个基本型的整型数,其中一个为正数,另一个为负数,输出它们的余数。
提示:
取余操作符:
%
二、程序改错
不允许增加行也不允许删除行,也不得更改程序的结构。
1、已知a=3,b=5,输出a+b的和值
源程序:
#include“stdio.h”
main()
{/********found********/
inta=3;b=5;sum;
sum=a+b;
printf(“sum=%d\n”,sum);}
2、任意输入两个实型数,输出它们的积。
源程序:
#include“stdio.h”
main()
{
doublex,y;
printf(“在键盘上给x,y赋值:
”);
/********found********/
scanf(“%lf%lf”,x,y);
printf(“%f,%lf\n”,x*y,x*y);
}
3、分别输出234的每一位数字。
源程序:
#include“stdio.h”
main()
{
intx=234,a,b,c;
a=x/100;
/********found********/
b=x%100;
/********found********/
c=x/10;
printf(“a=%d,b=%d,c=%d\n”,a,b,c);
}
【思考题】
1、在定义变量时,变量名sum和Sum是同一个变量吗?
2、两个数取余数,余数的符号和被除数符合相同吗?
取余符号两端的数可以是任意类型的数据吗?
3、用scanf函数给变量赋值时,变量名的前面为什么必须加&(即地址操作符)?
4、给一个双精度实型变量以%f形式赋值,会得到正确的值吗?
实验三计算分段函数
【实验目的】
1、使用if语句编写简单分支结构程序。
2、正确书写关系表达式
【实验内容】
一、试着编写下列程序
【例3-1】输出a=3,b=9中大的数。
源程序:
#include"stdio.h"
main()
{
inta=3,b=9,max;
/*使用if-else分支结构*/
if(a>b)
max=a;
else
max=b;
printf("max=%d\n",max);
}
举一反三
【3-1】任意输入一个整数,如果能被3整除,输出此数;否则,输出“不是3的倍数”。
【例3-2】计算分段函数,
(x≥0)
3x3+1(x<0)
源程序:
#include"stdio.h"
#include"math.h"/*程序中调用了数学库函数,需包含头文件math.h*/
main()
{
doublex,y;
printf(“Enterx:
”);
scanf("%lf",&x);
if(x>=0)
y=sqrt(x);/*调用开方函数sqrt()计算*/
else
y=3*pow(x,3)+1;/*调用幂函数pow()计算*/
printf("\nx=%.2lf,y=%f\n",x,y);/*%.2lf保留两位小数输出*/
}
运行结果:
Enterx:
3
x=3.00,y=1.732051
Enterx:
-4
x=-4.00,y=-191.000000
举一反三
【3-2】编写程序,输入x,利用分段函数,计算并输出y值。
|x|(x≤0)
y=
ex(x>0)
提示:
需要调用求实型数绝对值函数fabs和指数函数exp。
二、程序改错
不允许增加行也不允许删除行,也不得更改程序的结构。
1、任意输入一个数,如果是奇数输出“奇数”,否则,输出“偶数”。
源程序:
#include“stdio.h”
main()
{
intx;
printf(“Enterx:
”);
scanf(“%d”,&x);
/********found********/
ifx%2!
=0
printf(“奇数”);
else
printf(“偶数”);
}
输入输出示例(共运行2次)
第一次运行:
Enterx:
10
偶数
第一次运行:
Enterx:
11
奇数
2、输入x,计算并输出下列分段函数y的值(保留一位小数)。
(x≠0)
0(x=0)
源程序:
#include“stdio.h”
main()
{
intx;
doubley;
printf(“Enterx:
”);
scanf(“%d”,&x);
/********found********/
if(x!
=0);
/********found********/
y=1/x;
else
y=0;
printf(“y=%.1f\n”,y);
}
输入输出示例(共运行2次)
第一次运行:
Enterx:
10
y=0.1
第二次运行:
Enterx:
0
y=0.0
【思考题】
1、else可以省略吗?
2、if-else语句用于编写什么程序段?
实验四指定次数的循环
【实验目的】
1、熟悉掌握for语句的使用。
2、熟悉掌握指定次数的循环程序设计方法。
【实验内容】
一、试着编写下列程序
【例4-1】求
源程序:
#include"stdio.h"
main()
{
/*变量sum用来放累加和,和值从0开始;i用来取1~5中的数,同时也控制循环次数*/
inti,sum=0;
for(i=1;i<=5;i++)/*循环体执行5次*/
sum=sum+i;/*反复累加5次i的值*/
printf("sum=%d\n",sum);
}
运行结果:
sum=15
举一反三
【4-1】求
【例4-2】求1-2+3-4+。
。
。
。
。
。
n的值
源程序:
#include
main()
{
inti,f=1,n,sum=0;/*变量f用来存放正负号*/
printf("Entern:
");
scanf("%d",&n);
for(i=1;i<=n;i++)
{sum=sum+i*f;
f=-f;/*改变正负号*/
}
printf("\nsum=%d\n",sum);
}
运行结果:
Entern:
5
sum=3
举一反三
【4-2】求
的值
【例4-3】求1×2×3×4×5的积。
(即求5!
)
源程序:
#include
main()
{
inti,t=1;/*t用来放阶乘值*/
for(i=1;i<=5;i++)
t=t*i;
printf("%d!
=%d\n",5,t);
}
运行结果:
5!
=120
举一反三
【4-3】任意输入两个正整数m和n,求m!
+n!
的值。
二、程序改错
不允许增加行也不允许删除行,也不得更改程序的结构。
1、改正下列程序中的错误,计算表达式1+2+3+。
。
。
。
。
+100的值。
源程序:
#include“stdio.h”
main()
{/********found********/
inti,sum;
for(i=1,i<=100,i++)
sum=sum+i;
printf(“sum=%d\n”,sum);
}
运行结果(改正后程序的运行结果)
sum=5050
2、输出三位数中能够被300整除的数。
源程序:
#include
main()
{
inti;
/********found********/
for(i=100;i<=999;i++);
if(i%300==0)
printf("%5d",i);
}
运行结果:
300600900
【思考题】
1、for语句用于编写什么样的程序段?
2、如何执行for循环?
实验五分支结构程序设计
【实验目的】
1.掌握基本输入输出函数、赋值语句的使用方法。
2.熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计。
3.熟练掌握switch语句中break语句的使用。
【实验内容】
一、试着编写下列程序
【例5-1】任意输入一个字符,如果是小写字母字母以大写字母输出,是大写字母以小写字母输出;否则,按原样输出。
源程序:
#include
main()
{
charch;
printf("Enterch:
");
ch=getchar();/*调用字符输入函数getchar()从键盘输入一个字符*/
if(ch>='a'&&ch<='z')/*判断ch变量内容是否是小写字母*/
putchar(ch-32);/*输出存放在变量ch中的字符*/
elseif(ch>='A'&&ch<='Z')/*判断ch变量内容是否是大写字母*/
putchar(ch+32);
else
putchar(ch);
}
举一反三
【5-1】任意输入一个字符,如果是数字字符,则输出相应的数字,是空格输出它的ASCII码值;否则,原样输出。
提示:
例:
‘5’-‘0’=5
【例5-2】输入十个字符,统计其中的空格、回车和其它字符个数。
源程序:
#include
main()
{
charch;
inti,num1=0,num2=0,num3=0;
for(i=1;i<=10;i++)
{ch=getchar();/*循环一次给变量ch赋值一次*/
if(ch=='')
num1=num1+1;/*统计空格个数*/
elseif(ch=='\n')
num2=num2+1;/*统计回车个数*/
else
num3=num3+1;/*统计其它字符个数*/
}
printf("空格=%d,回车=%d,其它=%d\n",num1,num2,num3);
}
举一反三
【5-2】输入n个字符统计其中数字字符、*号和字母的个数。
【例5-3】输入x,计算并输出下列分段函数y的值。
x3(0 y=lnx(5≤x<10) |x|(x<0) 源程序: #include #include main() { floatx,y;/*定义两个单精度的实型变量*/ printf("Enterx: "); scanf("%f",&x);/*给单精度变量赋值,格式控制为: %f*/ if(x>0&&x<5)/*不能表示为: 0 y=pow(x,3); elseif(x>=5&&x<10) y=log(x); elseif(x<0) y=fabs(x); printf("\nx=%f,y=%f\n",x,y); } 举一反三 【5-3】输入x,计算并输出下列分段函数y的值。 0(x<0) y= (0≤x<10) 4.5x-8.5x(x≥10) 【例5-4】任意输入year,判断是否是闰年,判断闰年的条件: 能被4整除但不能被100整除,或者能被400整除。 源程序: #include main() { intyear; printf("Enteryear: "); scanf("%d",&year); if(year%4==0&&year%100! =0||year%400==0) printf("yes"); else printf("no"); } 举一反三 【5-4】任意输入一个数,判断是否是偶数,是,输出“yes”;否则,输出“no”。 【例5-5】任意输入一个人的成绩,输出相应的成绩等级。 100-90: 等级A、89-80: 等级B、79-70: 等级C、69-60: 等级D,其它等级E 源程序: #include main() { intx; printf("Enterx: "); scanf("%d",&x); switch(x/10)/*成绩除以10取整数*/ { case10: case9: printf("A");break;/*break语句: 提前退出switch语句*/ case8: printf("B");break; case7: printf("C");break; case6: printf("D");break; default: printf("E"); } } 举一反三 【5-5】输入10个字符,分别统计空格、回车和其它字符出现的次数。 【例5-6】任意输入三角形的三条边判断能否构成三角形 (1)能,再判断能否构成等边三角形,能输出面积;否则,不输出任何信息。 提示: 三角形面积公式: 和 (2)不能构成三角形,输出“NO”。 源程序: #include #include main() { intx,y,z; doubles,area; printf("Enterx,y,z: "); scanf("%d%d%d",&x,&y,&z); if(x+y>z&&x+z>y&&y+z>x) {if(x==y&&y==z&&x==z) {s=1.0/(x+y+z); area=sqrt(s*(s-x)*(s-y)*(s-z)); printf("面积=%f\n",area); } } else printf("NO"); } 举一反三 【5-6】任意输入一个数,判断是否是2~100之间的数 (1)是,判断是否是3的倍数,是,输出此数;否则,不输出。 (2)不是,输出“输入错误”。 二、程序改错 不允许增加行也不允许删除行,也不得更改程序的结构。 1、计算下面分段函数的值 x+5(x<0) f(x)=x2-x+3(0≤x<10) 4x-7(x≥10) 源程序: main() { intx,y; /********found********/ scanf(“%d”,x); if(x<0)y=x+5; /********found********/ elseif(x<10)y=x^2-x+3; /********found********/ elsey=4x-7; printf(“y=%d”,y) } 2、给变量b和c赋值,然后输出它们的值。 源程序: main() { inta=2,b,c; if(a>1) /********found********/ b=1;c=3; else b=2; printf(“%d,%d\n”,b,c); } 【思考题】 1、大写字母Z的后面紧挨着是小写字母a,对吗? 2、getchar函数和putchar函数都不带参数吗? 3、if后面的表达式可以任意类型吗? 4、if(E),与E等价的形式是什么? 5、switch语句中所有break语句都去掉,运行结果会改变吗? 6、switch后面表达式为实型变量表达式类型,运行时为什么会出错? 分析之。 实验六循环结构程序设计 (一) 【实验目的】 1.熟悉使用while循环语句的结构、执行过程。 2.学会确定循环条件和循环体。 3.理解死循环的概念。 【实验内容】 一、试着编写下列程序 【例6-1】求1+2+3+4+5的和。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实验 指导书