C语言程序设计课程实验指导书Word文档格式.docx

上传人:b****2 文档编号:2942853 上传时间:2023-05-01 格式:DOCX 页数:38 大小:79.70KB
下载 相关 举报
C语言程序设计课程实验指导书Word文档格式.docx_第1页
第1页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第2页
第2页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第3页
第3页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第4页
第4页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第5页
第5页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第6页
第6页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第7页
第7页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第8页
第8页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第9页
第9页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第10页
第10页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第11页
第11页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第12页
第12页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第13页
第13页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第14页
第14页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第15页
第15页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第16页
第16页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第17页
第17页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第18页
第18页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第19页
第19页 / 共38页
C语言程序设计课程实验指导书Word文档格式.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计课程实验指导书Word文档格式.docx

《C语言程序设计课程实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程实验指导书Word文档格式.docx(38页珍藏版)》请在冰点文库上搜索。

C语言程序设计课程实验指导书Word文档格式.docx

2

验证性

数据类型、运算符和表达式

3

最简单的C程序设计

4

选择结构程序设计

5

循环控制

6

数组

7

函数

8

编译预处理

9

指针

10

结构体、共用体

设计性

11

位运算

12

文件

六、教材

《C程序设计(第三版)》潭浩强著 清华大学出版社

第二部分 实验内容

实验一 C程序的运行环境和运行一个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.运行一个自己编写的程序,程序的功能是输出两行文字。

实验二 数据类型、运算符和表达式

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.分析教材第3章习题3.6中的程序的运行结果,然后输入该程序并运行,将运行结果与前面分析的结果对比。

3.输入并运行下面的程序

{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)将一个长整数赋给无符号的变量,会得到什么结果。

4.输入习题3.10

(1)运行程序,注意i,j,m,n的值。

(2)将第4,5行改为:

m=i++;

n=++j;

再运行。

(3)将程序改为:

{inti,j;

i=8;

j=10;

++i,++j);

i++,j++);

++i,i);

i++,i);

运行程序并分析运行结果。

5.按习题3.7的要求编程并上机运行:

要将“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

实验三 最简单的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.;

g=0.;

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,;

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,,0.,50000,-60000,32768,40000

2.按习题3.8的要求编写程序并运行:

 设圆半径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<

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

实验五 循环控制

熟悉使用while语句,do-while语句和for语句实现循环的方法。

掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。

1.上机完成习题6.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.上机完成习题6.10:

猴子吃桃问题。

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。

第二天早上又将剩下的桃子吃掉了一半,又多吃了一个。

以后每天早上都吃了前一天剩下的一半零一个。

到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘了多少桃子。

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

使用以下循环结构

x=1

for(i=9;

i>

=1;

i--)

x=2*x+1

实验六 数组

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"

实验七 函数

1.掌握定义函数的方法。

2.掌握函数实参及形参的对应关系以及“值传递”方式。

3.掌握函数的嵌套调用和递归调用的方法。

4.掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。

5.学会对多文件程序的编译和运行。

1.写出一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。

本程序应准备以下测试数据:

17,34,2,1,0,分别输入数据,运行程序并检查结果是否正确。

求素数函数如下:

intprime(intn)

{ifn<

2return0

for(i=2;

n/2;

ifn能被i整除 return0;

return1;

main函数中输入一个整数赋给变量n,通过prime(n)判断其是否素数,若函数值为1则是素数否则不是素数。

2.用一个函数来实现将一行字符串中最长的单词输出。

此行字符从主函数传递给该函数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2