C语言上机实验指导.docx
- 文档编号:26303087
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:29
- 大小:74.60KB
C语言上机实验指导.docx
《C语言上机实验指导.docx》由会员分享,可在线阅读,更多相关《C语言上机实验指导.docx(29页珍藏版)》请在冰豆网上搜索。
C语言上机实验指导
《C语言程序设计》课程实验指导书
第一部分 前言
一、实验的目的
学习C程序设计课程不能满足于“懂得了”,满足于能看懂书上的程序,而应当熟练地掌握程序设计的全过程,即独立编写源程序、独立上机调试、独立运行程序和分析结果。
上机实验的目的,绝不仅仅是为了验证教材和讲课的内容,或者验证自己所编写的程序的正确与否。
程序设计课程上机实验的目的是:
1.加深对讲授内容的理解,尤其是一些语法规定。
通过实验来掌握语法规则是行之有效的方法。
2.熟悉所用的操作系统。
3.学会上机调试程序。
通过反复调试程序掌握根据出错信息修改程序的方法。
4.通过调试完善程序。
二、实验前的准备工作
1.了解所用的计算机系统(包括C编译系统)的性能和使用方法。
2.复习和掌握与本实验有关的教学内容。
3.准备好上机所需的程序,切忌不编程或抄别人的程序去上机。
4.对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。
5.准备好调试程序和运行程序所需的数据。
三、实验的步骤
上机实验应一人一组,独立实验。
上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。
尤其对“出错信息”,应善于分析判断,找出出错的行,然后检查该行或其上一行。
上机实验一般应包括以下几个步骤:
1.双击桌面VisualC++快捷方式进入VisualC++,或通过执行“开始=>程序=>
MicrosoftVisualStudio6.0=>MicrosoftVisualC++6.0”或执行文件"C:
\ProgramFiles\MicrosoftVisualStudio\COMMON\MSDev98\Bin\MSDEV.EXE"。
2.单击“文件”菜单的“新建”命令。
3.在打开的“新建”对话框中选择“文件”标签。
4.选择C++SourceFile,选择文件保存位置,然后在文件输入栏中输入文件名。
如图所示:
5.输入源程序。
6.编译程序:
按“Ctrl+F7”或通过“编译”菜单中的“编译”命令,或使用工具栏中的相应工具进行编译 编译 连接 运行
若程序有错则找到出错行修改程序。
7.连接:
若程序没有语法错误,则可按功能键F7或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。
8.运行程序:
按组合键“Ctrl+F5”,或通过“编译”菜单中的执行命令,或通过工具栏中的“!
”工具运行程序。
四、实验任务与时间安排
序号
实验项目名称
实验内容提要
学时
每组人数
实验属性
1
C程序的运行环境和运行一个C程序的方法
VC环境、建立VC程序
2
1
验证性
2
数据类型、运算符与表达式
C语言数据类型,定义各职能变量并赋值,不同类型数据之间赋值的规律、算术运算符的运用
2
1
验证性
3
最简单的C程序设计
赋值语句的使用,各种数据的输入输出方法,输入输出函数的使用
2
1
验证性
4
选择结构
If语句和switch语句的格式及应用
2
1
验证性
5
循环结构
用while语句、do-while语句和for语句实现循环的方法,用循环的方法实现各种算法,
2
1
验证性
6
数组
数组初始化和输入/输出方法,字符数组与字符串函数的使用,练习使用与数组有关的算法
2
1
验证性
7
函数
函数实参与形参的对应关系,函数的嵌套调用和递归调用
2
1
验证性
8
指针
指针变量的使用,数组的指针和指向数组的指针变量,字符串的指针和指向字符串的指针变量的使用
2
1
验证性
9
结构体和共用体
结构体类型变量的使用,结构体类型数组的使用,共用体的使用
2
1
验证性
10
文件
文件的建立与访问
2
1
验证性
五、教材
《C程序设计(第四版)》潭浩强著 清华大学出版社
第二部分 实验内容
实验一 C程序的运行环境和运行一个C程序的方法
一、实验目的
1.了解所用的计算机系统。
2.了解在该系统上如何进行编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序了解C程序的特点。
二、实验内容和步骤
1.熟悉所用的系统。
了解Windows资源管理器的使用方法:
文件的查看、复制、运行等方法,VisualC++所在目录,文本文件的建立方法。
2.进入VisualC++,并新建一个C++源程序文件。
3.熟悉VisualC++的集成环境,了解各菜单项有哪些子菜单。
4.输入下面的程序(教材中的例1.1),注意区分大小写。
#include
voidmain()
{
printf("ThisisaCprogram.\n");
}
编译并运行程序。
5.关闭工作区,新建一个程序,然后对教材中的例1.2重复4中的操作(即只将程序改为例1.2中的程序,其它操作步骤相同)。
6.关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的程序
#include
voidmain()
{inta,b,c;
intmax(intx,inty);
printf("inputaandb:
");
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("\nmax=%d",c);
}
intmax(intx,inty)
{intz;
if(x>y)z=x;
elsez=y;
return(z);
}
(1)运行程序,若程序有错,则修改错误后继续运行程序,当没有错误信息时输入:
2,5并按Enter键,查看运行结果。
(2)将程序的第三行改为:
inta;b;c;然后按F9看结果如何,将其修改为inta,b,c;将子程序max的第3,4行合并为一行,运行程序,看结果是否相同。
7.运行一个自己编写的程序,程序的功能是输出两行文字。
实验二 数据类型、运算符和表达式
一、实验目的
1.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
2.掌握不同数据类型之间赋值的规律。
3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。
4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
二、实验内容和步骤
1.输入并运行下面的程序
#include
intmain()
{charc1,c2;
c1='a';
c2='b';
printf("%c%c",c1,c2);
return0;
}
(1)运行此程序
(2)加入下面的一个语句作为“}”前的最后一个语句:
printf("%d,%d\n",c1,c2);
(3)将第3行改为:
intc1,c2;
然后再运行程序,并观察结果是否相同。
(4)将第3行改为intc1,c2;将第4,5行依次改为:
c1=a;c2=b;
c1="a";c2="b"
c1=300;c2=400;
每改为一次后运行程序,观察结果。
2.分析教材第3章例3.6中的程序的运行结果,然后输入该程序并运行,将运行结果与前面分析的结果对比。
3.输入并运行下面的程序
#include
voidmain()
{inta,b;
unsignedc,d;
longe,f;
a=100;
b=-100;
e=50000;
f=32767;
c=a;
d=b;
printf("%d,%d\n",a,b);
printf("%u,%u\n",a,b);
printf("%u,%u\n",c,d);
c=a=e;
d=b=f;
printf("%d,%d\n",a,b);
printf("%u,%u\n",c,d);
}
请对照程序和运行结果分析:
(1)将一个负整数赋给一个无符号的变量,会得到什么结果。
画出它们在内存中的表示形式。
(2)将一个大于32767的长整数赋给一个整型变量,会得到什么结果。
画出它们在内存中的表示形式。
(3)将一个长整数赋给无符号的变量,会得到什么结果。
画出它们在内存中的表示形式。
4.按习题3.6的要求编程并上机运行:
要将“China”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
例如,字母“A”后面第4个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为’C’,'h','i','n','a',经过计算,使c1、c2、c3、c4、c5分别变为:
'G','l','m',r','e',并输出.
程序提示:
main函数算法如下:
定义char型变量c1,c2,c3,c4,c5;
给字符型变量赋值
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
输出c1,c2,c3,c4,c5
实验三 最简单的C程序设计
一、实验目的
1.掌握C语言中使用最多的一种语句――赋值语句的使用方法。
2.掌握各种类型数据的输入输出方法,能正确使用各种格式输出符。
二、实验内容和步骤
1.掌握各种格式输出符的使用方法。
#include
voidmain()
{inta,b;
floatd,e;
charc1,c2;
doublef,g;
longn,m;
unsignedp,q;
a=61;b=62;
c1='a';c2='b';
d=3.56;e=-6.87;
f=3156.890121;g=0.123456789;
m=50000;n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q);
}
(1)运行此程序并分析运行结果。
(2)在此基础上,修改程序的第9-14行:
a=61;b=62;
c1=a;c2=b;
f=3156,890121;g=0.123456789;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
运行程序,分析运行结果。
(3)将9-14行改为以下的scanf语句,即用scanf函数接收从键盘输入的数据:
scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);
运行程序(无错误的情况下)输入数据如下:
61,62,a,b,3.56,-6.87,3156,890121,0.123456789,50000,-60000,32768,40000
2.按习题3.7的要求编写程序并运行:
设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积,圆球表面积、圆球体积、圆柱体体积。
用scanf输入数据,输出计算结果,输出时要有文字说明,取小数后2位数字。
程序提示:
#definePI3.14159
main算法如下
定义float型变量r,h,L,s1,s2,v1,v2;
用scanf语句输入圆半径和圆柱高
求圆周长、面积、圆球表面积、圆柱体体积
输出圆周长、圆面积、圆球表面积、圆球体体积
程序中的π用PI代替。
3.编写程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar函数和printf函数输出这两个字符。
实验四 选择结构程序设计
一、实验目的
1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。
3.熟悉if语句和switch语句。
4.结合程序掌握一些简单的算法。
5.学习调试程序的方法。
二、实验内容
本实验要求编程解决以下问题,然后上机调试运行程序。
1.
用scanf函数输入x的值,求y的值。
程序提示:
main函数结构如下:
定义实型变量x与y
使用scanf函数输入x的值
ifx<1
y=x
else
ifx<10
y=2x-1
else
y=3x-11
输出x的值与y的值
2.给出一个百分制的成绩,要求输出成绩等级A,B,C,D,E。
90分及以上为A,80-89为B,70-79为C,60-69为D,60分以下为E。
要求从键盘输入成绩,然后输出相应等级,分别用if语句和switch语句实现。
程序提示:
(1)使用if语句的main函数结构如下:
定义float型变量score,char型变量grade
输入百分制成绩赋给score
ifscore>=90
grade='A'
elseifscore>=80
grade='B'
elseifscore>=70
grade='C'
elseifscore>=60
grade='D'
elsegrade='E'
输出百分制成绩和等级。
(2)使用switch语句的main函数结构如下:
定义float型变量score,char型变量grade
输入百分制成绩赋给score
switch(int(score/10))
{
case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
default:
grade='E';break;
}
输出百分制成绩和等级
3.编程实现:
输入4个整数,要求按由小到大的顺序输出。
得到正确结果后,修改程序使之按由大到小的顺序输出。
main函数结构如下:
inta,b,c,d,t;
输入4个整数:
赋给a,b,c,d;
if(a>b)交换a,b
if(a>c)交换a,c
if(a>d)交换a,d
if(b>c)交换b,c
if(b>d)交换b,d
if(c>d)交换c,d
输出a,b,c,d
实验五 循环控制
一、实验目的
熟悉使用while语句,do-while语句和for语句实现循环的方法。
掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
二、实验内容
1.上机完成习题5.3:
输入两个正整数m和n,求出它们的最大公约数和最小公倍数。
输入时,使m 再输入时使m>n,观察结果是否正确; 修改程序使对任何的整数都能得到正确的结果。 程序提示: main结构如下: intm,n,r,tm,tn; 输入两个正整数赋给m,n tm=m;tn=n; if(m r=m%n; while(r) { m=n; n=r; r=m%n; } 输出最大公约数n和最小公倍数m*tn/n; 2.上机完5.12: 猴子吃桃问题。 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第10天早上想再吃时,见只剩下一个桃子了。 求第一天共摘了多少桃子。 在得到正确结果后,修改题目,改为每天早上都吃了前一天剩下的一半加二个,请修改程序,并运行,检查运行结果是否正确。 程序提示: 使用以下循环结构 x=1 for(i=9;i>=1;i--) x=2*x+1 3.完成习题5.8. 实验六 数组 一、实验目的 1.掌握一维数组与二维数组的定义、赋值及输入输出方法。 2.掌握字符数组和字符串函数的使用。 3.掌握与数组有关的算法(特别是排序算法) 二、实验内容 1.用选择法对10个整数排序。 10个整数用scanf函数输入。 程序提示: 输入10个整数存放到数组a的a[1]到a[10]中 输出10个数 for(i=1;i<10;i++) { min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; 交换a[i]与a[min] } 输出排序后的10个数 2.有15个数存放在一个数组中,输入一个数要求用折半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出无此数,要找的数用scanf函数输入。 程序提示: 用循环语句输入15个数 调用排序算法对其进行排序 while(flag) { 输入要查找的数 loca=0; top=0; bott=N-1; if(numbera[N-1])loca=-1; while(sign==1&&top<=bott&&loca>=0) { mid=(bott+top)/2; if(number==a[mid]) {loca=mid; printf("找到了,数%d在数组的第%d位、\n",number,loca+1); sign=0;}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 上机 实验 指导
![提示](https://static.bdocx.com/images/bang_tan.gif)