《C语言程序设计》课程实验指导书文档格式.docx
- 文档编号:21251126
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:29
- 大小:75.43KB
《C语言程序设计》课程实验指导书文档格式.docx
《《C语言程序设计》课程实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》课程实验指导书文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
C语言程序的开发环境
2
验证性
数据的存储与运算
4
3
最简单的C程序设计—顺序程序设计
选择结构程序设计
设计性
5
循环结构程序设计
6
利用数组处理批量数据
7
用函数实现模块化程序设计
8
善于使用指针
9
使用结构体类型处理组合数据
10
文件
六、教材
《C语言程序设计(第2版)》潭浩强著,清华大学出版社,2008年。
第二部分 实验内容
实验一 C语言程序的开发环境
一、实验目的
1.了解所用的计算机系统。
2.了解在该系统上如何进行编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序了解C程序的特点。
二、实验内容和步骤
1.熟悉所用的系统。
了解Windows资源管理器的使用方法:
文件的查看、复制、运行等方法,VisualC++所在目录,文本文件的建立方法。
2.进入VisualC++,并新建一个C++源程序文件。
3.熟悉VisualC++的集成环境,了解各菜单项有哪些子菜单。
4.输入下面的程序(教材中的例1.1),注意区分大小写。
#include<
stdio.h>
voidmain()
{
printf("
ThisisaCprogram.\n"
);
}
编译并运行程序。
5.关闭工作区,新建一个程序,然后对教材中的例1.2重复4中的操作(即只将程序改为例1.2中的程序,其它操作步骤相同)。
6.关闭工作区,新建一个程序,然后输入并运行一个需要在运行时输入数据的程序
{inta,b,c;
intmax(intx,inty);
inputaandb:
"
scanf("
%d,%d"
&
a,&
b);
c=max(a,b);
\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.运行一个自己编写的程序,程序的功能是输出两行文字。
8.编写一个C程序,输入a,b,c3个值,输出其中最大者。
三、预习内容
预习教材第1章。
实验二 数据的存储与运算
1.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。
2.掌握不同数据类型之间赋值的规律。
3.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。
4.进一步熟悉C程序的编辑、编译、连接和运行的过程。
1.输入并运行下面的程序
{charc1,c2;
c1='
a'
;
c2='
b'
%c%c"
c1,c2);
(1)运行此程序
(2)加入下面的一个语句作为“}”前的最后一个语句:
%d,%d\n"
(3)将第3行改为:
intc1,c2;
然后再运行程序,并观察结果是否相同。
(4)将第3行改为intc1,c2;
将第4,5行依次改为:
c1=a;
c2=b;
c1="
a"
c2="
b"
c1=300;
c2=400;
每改为一次后运行程序,观察结果。
2.输入并运行下面的程序
{inta,b;
unsignedc,d;
longe,f;
a=100;
b=-100;
e=50000;
f=32767;
c=a;
d=b;
a,b);
%u,%u\n"
c,d);
c=a=e;
d=b=f;
请对照程序和运行结果分析:
(1)将一个负整数赋给一个无符号的变量,会得到什么结果。
画出它们在内存中的表示形式。
(2)将一个大于32767的长整数赋给一个整型变量,会得到什么结果。
(3)将一个长整数赋给无符号的变量,会得到什么结果。
3.运行程序并分析运行结果。
{inti,j;
i=8;
j=10;
++i,++j);
i++,j++);
++i,i);
i++,i);
4.编写课本47页习题2程序,观察运行结果,并上交作业。
5.按习题3的要求编程并上机运行:
要将“China”译成密码,密码规律是:
用原来的字母后面第4个字母代替原来的字母。
例如,字母“A”后面第4个字母是“E”,用“E”代替“A”,因此,“China”应译为“Glmre”。
请编一程序,用赋初值的方法使c1、c2、c3、c4、c5这5个变量的值分别为’C’,'
h'
'
i'
'
n'
经过计算,使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
预习教材第2章。
实验三 最简单的C程序设计—顺序程序设计
1.掌握C语言中使用最多的一种语句――赋值语句的使用方法。
2.掌握各种类型数据的输入输出方法,能正确使用各种格式输出符。
1.掌握各种格式输出符的使用方法。
floatd,e;
charc1,c2;
doublef,g;
longn,m;
unsignedp,q;
a=61;
b=62;
d=3.56;
e=-6.87;
f=3156.890121;
g=0.123456789;
m=50000;
n=-60000;
p=32768;
q=40000;
a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n"
a,b,c1,c2,d,e);
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行:
f=3156,890121;
d=f;
e=g;
p=a=m=50000;
q=b=n=-60000;
运行程序,分析运行结果。
(3)将9-14行改为以下的scanf语句,即用scanf函数接收从键盘输入的数据:
%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u"
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.按习题5的要求编写程序并运行:
设圆半径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函数输出这两个字符。
4.编写课本88页习题6程序,查看运行结果并上交。
预习教材第3章。
实验四 选择结构程序设计
1.了解C语言表示逻辑值的方法。
2.学会正确使用逻辑运算符和逻辑表达式的方法。
3.熟悉if语句和switch语句。
4.结合程序掌握一些简单的算法。
5.学习调试程序的方法。
二、实验内容
本实验要求编程解决以下问题,然后上机调试运行程序。
1.
用scanf函数输入x的值,求y的值。
main函数结构如下:
定义实型变量x与y
使用scanf函数输入x的值
ifx<
y=x
else
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
B'
=70
C'
=60
D'
elsegrade='
E'
输出百分制成绩和等级。
(2)使用switch语句的main函数结构如下:
switch(int(score/10))
case10:
case9:
grade='
break;
case8:
case7:
case6:
default:
输出百分制成绩和等级
3.编程实现:
输入一个不多于5位的正整数,要求:
(1)输出它是几位数,
(2)分别输出每一位数字,(3)按逆序输出各位数字,如原数为321,则应输出123。
应准备以下测试数据
要处理的数为1位正整数;
要处理的数为2位正整数;
要处理的数为3位正整数;
要处理的数为4位正整数;
要处理的数为5位正整数;
除此之外,程序还应当对不合法的输出作必要的处理。
例如:
输入负数;
输入的数超过5位;
定义long型变量num,int型变量c1,c2,c3,c4,c5
输入一个不超过5位的正整数赋给num
ifnum>
99999
输出:
输入的数超过5位
elseifnum<
输入的数是一个负数
求得num的各位数分别赋给C1,C2,C3,C4,C5
c1=num/10000;
c2=(num-c1*10000)/1000;
c3=(num/100)%10;
c4=(num/10)%10;
c5=num%10;
if(c1>
0)
{printf("
\n%ld是一个5位数\n"
num);
printf("
其各位分别为:
%1d,%1d,%1d,%1d,%1d\n"
c1,c2,c3,c4,c5);
printf("
逆序输出为:
%1d%1d%1d%1d%1d\n"
c5,c4,c3,c2,c1);
}
elseif(c2>
0)是4位数,输出其各位,格式与5位数类似
elseif(c3>
0)是3位数,输出其各位,格式与5位数类似
elseif(c4>
0)是2位数,输出其各位,格式与5位数类似
elseif(c5>
0)是1位数,输出其各位,格式与5位数类似
4.编程实现:
输入4个整数,要求按由小到大的顺序输出。
得到正确结果后,修改程序使之按由大到小的顺序输出。
inta,b,c,d,t;
输入4个整数:
赋给a,b,c,d;
if(a>
b)交换a,b
c)交换a,c
d)交换a,d
if(b>
c)交换b,c
d)交换b,d
if(c>
d)交换c,d
输出a,b,c,d
5.编程实现课本114页习题10,观察运行结果并上交作业。
预习教材第4章。
实验五 循环结构程序设计
熟悉使用while语句,do-while语句和for语句实现循环的方法。
掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。
1.上机完成习题:
输入两个正整数m和n,求出它们的最大公约数和最小公倍数。
输入时,使m<
n,观察结果是否正确;
再输入时使m>n,观察结果是否正确;
修改程序使对任何的整数都能得到正确的结果。
main结构如下:
intm,n,r,tm,tn;
输入两个正整数赋给m,n
tm=m;
tn=n;
if(m<
n)交换m,n
r=m%n;
while(r)
{
m=n;
n=r;
r=m%n;
}
输出最大公约数n和最小公倍数m*tn/n;
2.编写程序利用公式:
求e的近似值,精确到小数后6位
main函数算法为:
定义int型变量n,i,double型变量e,p,t
输入n的值
e=1;
t=1;
p=1;
i=1
while(t>
=1e-7)
{e=e+t;
i++;
p=p*i;
t=1.0/p;
输出e的值
3.编程求1到n中能被3或7整除的数之和。
分别用for循环语句和while循环语句完成本题。
for循环语句的主要算法如下:
for(i=1;
i<
=n;
i++)
ifi能被3或7整除
sum=sum+i
while循环语句的主要算法如下:
while(i<
=n)
sum=sum+i++;
4.上机完成习题4:
猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少桃子。
在得到正确结果后,修改题目,改为每天早上都吃了前一天剩下的一半加二个,请修改程序,并运行,检查运行结果是否正确。
使用以下循环结构
x=1
for(i=9;
i>
=1;
i--)
x=2*x+1
5.一个球从100m高度自由落下,每次落地后反跳原高度的一半,再落下,再反弹。
求它第10次落地时,共经过多少米?
第10次反弹多高?
预习教材第5章。
实验六 利用数组处理批量数据
1.掌握一维数组与二维数组的定义、赋值及输入输出方法。
2.掌握字符数组和字符串函数的使用。
3.掌握与数组有关的算法(特别是排序算法)
1.用选择法对10个整数排序。
10个整数用scanf函数输入。
输入10个整数存放到数组a的a[1]到a[10]中
输出10个数
10;
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(number<
a[0]||number>
a[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;
elseif(number<
a[mid])bott=mid-1;
elsetop=mid+1;
if(sign==1||loca==-1)printf("
\n查无此数\n"
\n是否继续查找?
(Y/N)"
scanf("
%c"
c);
getchar();
\n"
if(c=='
N'
||c=='
)flag=0;
3.将两个串连接起来,不要用strcat函数。
分别输入二个串字符
i指向第一个数组的最后一个空数组元素
while(s2[j]!
='
\0'
)
s1[i++]=s2[j++];
s1[i]='
输出连接后的字符串
4.找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。
也可能没有鞍点。
至少准备两组测试数据:
(1)二维数组有鞍点
98020540
90-60961
210-310189
(2)二维数组没有鞍点
98020540
90-60961
45541567
用scanf函数从键盘输入数组的各元素的值,检查结果是否正确,题目未指定二维数组的行数和列数,程序应能处理任意行数和列数的数组。
输入矩阵
flag2=0;
//矩阵中无鞍点
for(i=0;
n;
i++)//找第i行的鞍点
max=a[i][0];
maxj=0;
用for循环语句找第i行的最大值存放在max中,其下标j保存到maxj中
for(k=0,flag1=1;
k<
n&
flag1;
k++)//判断max是否在该列上最小flag1=0则不是最小
if(max>
a[k][maxj])flag1=0;
//max不是该列的最小元素
if(flag1)
\n第%d行第%d列的%d是鞍点\n"
i+1,maxj+1,max);
flag2=1;
}//endfori
if(!
flag2)printf("
\n矩阵中无鞍点\n"
5.已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩排序记录。
6.输出以下图案:
*****
预习教材第6章。
实验七 用函数实现模块化程序设计
1.掌握定义函数的方法。
2.掌握函数实参及形参的对应关系以及“值传递”方式。
3.掌握函数的嵌套调用和递归调用的方法。
4.掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。
5.学会对多文件程序的编译和运行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 课程 实验 指导书