《C语言程序设计方案》实验指导书Word格式.docx

上传人:b****4 文档编号:7591247 上传时间:2023-05-08 格式:DOCX 页数:19 大小:24.37KB
下载 相关 举报
《C语言程序设计方案》实验指导书Word格式.docx_第1页
第1页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第2页
第2页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第3页
第3页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第4页
第4页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第5页
第5页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第6页
第6页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第7页
第7页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第8页
第8页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第9页
第9页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第10页
第10页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第11页
第11页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第12页
第12页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第13页
第13页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第14页
第14页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第15页
第15页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第16页
第16页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第17页
第17页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第18页
第18页 / 共19页
《C语言程序设计方案》实验指导书Word格式.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《C语言程序设计方案》实验指导书Word格式.docx

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

《C语言程序设计方案》实验指导书Word格式.docx

八、实验内容

实验一:

C语言运行环境的认识与简单的C程序

【目的与要求】

1、了解TC环境下C语言的运行环境,熟悉编译系统的操作环境。

2、了解在该系统上如何编辑、编译、连接和运行一个C程序。

3、通过运行简单的C程序,初步了解C源程序的特点。

4、掌握和理解C程序中最基本的C语句。

【实验内容】

1、题目:

由键盘输入两个整数,计算并输出两个数之和。

2、程序如下:

#include“stdio.h”

voidmain()

{inta,b,sum;

printf(“Pleaseinputtwointegernumbers:

\n”);

scanf(“%d%d”,&

a,&

b);

sum=a+b;

printf(“%d+%d=%d”,a,b,sum);

}

3、具体操作:

(1)输入程序,然后进行编译连接。

若在编译中有词法或语法错误,则根据提示进行修改,再进行调试,直到没有语法错误。

(2)运行程序,依下列不同的方式输入数据,查看程序执行结果。

①12_34↙

②12↙

34↙

③12<

Tab>

【实验分析与讨论】

1、总结C程序的基本结构和书写规则。

2、分析调试过程中常见的错误提示和解决策略。

实验二:

C语言程序的单步调试

 

实验三:

选择结构的程序设计

1、了解三种基本数据类型的定义。

2、掌握各种不同运算符及其对应的表达式的使用。

3、熟练掌握if语句和switch语句的使用

一、判断方程ax2+bx+c=0有几个解,若有,则输出其解。

1、算法分析:

对于方程ax2+bx+c=0的解,存在以下情况:

①a=0,不是一元二次方程;

②b2-4ac=0,有两个相等的实根;

③b2-4ac>

0,有两个不等的实根;

④b2-4ac<

0,有两个共轭复根。

(1)定义变量:

a,b,c,x1,x2,d

(2)输入a,b,c

(3)if(a==0)不是一元二次方程elsed=b2-4ac

根据d的取值,输出方程根的情况:

if(b2-4ac==0)x1=x2=-b/(2*a)

elseif(b2-4ac>

0)x1=(-b+sqrt(d))/(2*a)x2=(-b-sqrt(d))/(2*a)

elsex1=(-b+sqrt(-d)i)/(2*a)x2=(-b-sqrt(-d)i)/(2*a)

2、程序代码:

#include“stdio.h”

#include“math.h”

voidmain()

{floata,b,c,x1,x2,d;

printf(“请输入ax2+bx+c=0方程三系数值:

”);

scanf(“%f%f%f”,&

b,&

c);

if(abs(a)<

=1e-6)//a==0

printf(“该方程非一元二次方程.\n”);

else

{d=sqr(b)-4*a*c;

if(abs(d)<

=1e-6)//sqr(b)-4*a*c==0

printf(“该方程的两个相等实根为:

x1,x2=%4.2f”,-b/(2*a));

elseif(abs(d)>

1e-6)

{x1=(-b+sqrt(d))/(2*a);

x2=(-b-sqrt(d))/(2*a);

printf(“该方程的两个不等实根为:

x1=%4.2f,x2=%4.2f”,x1,x2);

else//sqr(b)-4*a*c<

printf(“该方程的两个复数根为:

x1=%4.2f+%4.2fi,x2=%4.2f-%4.2fi”,

-b/(2*a),sqrt(-d)/(2*a),-b/(2*a),sqrt(-d)/(2*a));

}

二、简单的菜单程序设计。

假设要求设计一菜单如下:

主菜单

1--------汉字

2--------拼音

3--------英文

1、算法分析:

(1)根据要求使用输出语句将上述菜单输出,提示按要求选择。

(2)运用if语句或switch语句,编写分支结构。

{inti;

printf(“\n\n\n========主菜单========\n”);

printf(“(中国)”)

printf(“1------汉字\n”);

printf(“2------拼音\n”);

printf(“3------英文\n”);

printf(“请选择:

scanf(“%d”,&

i);

switch(i)

{case1:

printf(“中国\n”);

break;

case2:

printf(“China\n”);

case3:

printf(“Zhongguo\n”);

【课后练习】

1、判断一年份是不是闰年。

2、从键盘上输入1-7之间的数字,输出表示一个星期中对应某一天的英文单词。

1、总结分支选择结构的设计方法与技巧。

2、掌握简单菜单的设计。

实验四:

循环结构的程序设计

1、掌握三种循环语句在编程中的使用。

2、理解break语句和continue语句在循环结构中的不同作用。

3、了解循环的嵌套,学会穷举算法与迭代算法。

一、输入两个正整数,求出它们的最大公约数与最小公倍数。

[辗转相除法]对于两个数m和n,将大数放在m中,小数放在n中,用n去除m,若余数为0,则n为最大公约数,否则将n作为m,余数作为n,再用n去除m,直到余数为0,则n为最大公约数。

{intm,n,t,max,min;

printf(“请输入两个正整数:

m,&

n);

min=m*n;

if(m<

n){t=n;

n=m;

m=t;

while(n!

=0)

{t=m%n;

m=n;

n=t;

printf(“最大公约数为:

%d\n”,m);

printf(“最小公倍数为:

%d\n”,min/m);

二、将一张100元钱,换成10元,20元,50元零钱,问有多少种不同的换法(假设三种零钱每种都可不出现)。

1、算法分析

运用穷举算法实现:

考虑到三种零钱各种可以不出现,则各自的张数范围如下:

10元--------0张到10张

20元--------0张到5张

50元--------0张到2张

并且要考虑到共数只有一张100元票子。

#include"

stdio.h"

{intTencount,Twecount,Fifcount,i=0;

for(Tencount=0;

Tencount<

=10;

Tencount++)

for(Twecount=0;

Twecount<

=5;

Twecount++)

for(Fifcount=0;

Fifcount<

=2;

Fifcount++)

if(Tencount*10+Twecount*20+Fifcount*50==100)

printf("

第%d种换法为:

10元%d张20元%d张50元%d张\n"

++i,Tencount,Twecount,Fifcount);

【课后练习】*

1、求1—100之间,能被5整除的数之和。

***

2、判断任一个数是否是质数。

*****

3、输出一有规则的图形,如右图。

*

【实验分析与讨论】

1、分析总结for语句,while语句,do-while语句的用法。

2、巧用break语句和continue语句。

实验五:

数组及其应用

1、掌握一维数组与二维数组的使用。

2、掌握字符数组与字符串的区别与使用。

3、熟练掌握与数组有关的算法(选择排序与冒泡排序、查找与插入)。

一、输入一个整数,将其插入一含有9个数的有序序列中,确保插入后其仍然有序,。

①将待插入的数与序列中的每个数进行比较,找到其插入的具体位置i;

②将从第i个数组元素开始,一直到原数组中的最后一个元素,整体往后移,空出一空间来存储待插入的整数。

2、程序代码:

{inta[10]={2,5,7,11,14,19,21,33,67},i,k,m;

printf(“原数组为:

for(i=0;

i<

9;

i++)printf(“%4d”,a[i]);

printf(“\n请输入待插入的整数:

m);

i++)

if(m<

=a[i])break;

//查找待插入的位置

for(k=9;

k>

=i;

k--)

a[k]=a[k-1];

//移位,准备插入新的整数

a[i]=m;

printf(“新数组为:

10;

二、编程实现:

将字符串str2连接到字符串str1后,构成新的字符串str1。

本程序即实现字符串处理函数strcat()的功能。

两字符串str1和str2进行连接,要注意的是字符串的结束标志。

string.h"

{charstr1[40],str2[20],i,j,len1,len2;

请输入字符串str1:

"

);

gets(str1);

len1=strlen(str1);

请输入字符串str2:

gets(str2);

len2=strlen(str2);

for(i=len1,j=0;

j<

len2;

i++,j++)

str1[i]=str2[j];

str1[i]='

\0'

;

新的字符串str1为:

puts(str1);

1、判断一方阵是不是对称矩阵。

2、实现两个字符串拷贝的功能。

3、运行折半查找法,在一个有序序列中查找某一特定的数。

1、分析两种基本排序算法的核心与两者的不同之处。

2、在实现字符串处理函数时的一些注意事宜及其实现方法。

3、讨论二维数组解决矩阵与行列式。

实验六:

函数及其应用

1、掌握C中函数的定义、调用及设计。

2、掌握函数嵌套调用、递归调用的设计。

3、掌握变量、函数的作用域及存储类。

一、设计一个子函数对n个整数进行排序,由主函数从键盘接收若干个数,调用子函数进行排序,并在主函数中进行输出显示。

①子函数的设计以两个参数来实现,一个是接收主函数传来的数组首地址,另一个是持排序的整数个数,如fun(inta[],intn);

②主函数的实现定义一整型数组,从键盘上接收若干个整数,调用子函数fun,再将最后的结果输出。

#include"

voidfun(inta[],intn)//选择排序算法

{inti,j,t;

n-1;

for(j=i+1;

n;

j++)

if(a[i]>

a[j]){t=a[i];

a[i]=a[j];

a[j]=t;

{inta[10],i;

i++)scanf("

%d"

&

a[i]);

输入的数值序列为:

i++)printf("

%4d"

a[i]);

\n"

fun(a,10);

二、输入任意两数m,n的值,输出下列表达式的值。

S=

1、算法分析

1编写一函数fac(n),返回n!

的值。

2编写主函数,从键盘输入m,n的值,调用上述fac()函数,计算表达式的值,并将其输出。

2、程序代码

longfac(intn)

{if(n==1)return1;

elsereturnn*fac(n-1);

{intm,n,t;

floats;

printf(“pleaseinput2integernumbers:

”);

if(m<

n){t=m;

printf(“s=%f”,fac(m)/(fac(m-n)fac(n)));

1、若正整数A恰好出现在其平方数的右侧,则称A为一个同构数。

如:

5,6,76。

求100以内的所有同构数。

要求:

(1)编写一子函数intfun(intn),判断给定正整数n是不是同构数,若是,返回1,否则,返回0。

(2)编写主函数,调用函数fun(),寻找并输出100以内的所有同构数。

(3)在输出同构数的同时,要输出其平方的值。

2、运用递归,求任一个字符串的长度。

1、被调函数的实现及调用过程。

2、简单递归问题的实现。

实验七:

指针及其应用

1、了解指针的定义与应用。

2、掌握使用指针变量的程序设计。

3、了解使用函数指针的程序设计。

4、了解使用指针数组的程序设计。

【实现内容】

一、设计一程序,将两个变量的值进行交换。

1、算法分析:

(1)编写一个函数swap(int*p,int*q),交换两个参数指针所指的数据。

(2)编写主函数,调用函数swap,将两个变量的值进行交换。

2、程序代码:

voidswap(int*p,int*q);

{inta,b;

printf(“请输入两个整数:

printf(“两个数交换前顺序为:

a=%d,b=%d”,a,b);

swap(&

printf(“两个数交换后顺序为:

voidswap(int*p,int*q)

{intt;

t=*p;

*p=*q;

*q=t;

运用指针将字符串str2连接到字符串str1后,构成新的字符串str1。

两字符串str1和str2进行连接,要注意的是字符串的结束标志,并运用指向字符串的指针来实现。

{charstr1[20],str2[10],*p=str1,*q=str2,j,len1,len2;

p=p+len1-1;

for(j=0;

j++)

*(++p)=*(q++);

str1[len1+len2]='

1、运用指向数组的指针,求一数组中所有元素之和。

2、

实验八:

结构体及其应用

1、了解结构体类型的定义。

2、掌握结构体类型变量的使用。

有10个学生,每个学生包括学号、姓名、三门课的成绩,从键盘输入10个学生数据,要求输出三门课中每一门课的平均成绩,以及最高分学生的数据。

定义一个结构体类型,其中含有学号、姓名、三门课的成绩、总分数据;

先后根据要求解决上述问题。

typedefstructstu

{intnumber;

charname[4];

floatlen1,len2,len3;

floatscore;

}student;

{studentstu[10];

inti,flag;

floatave[3],sum[3]={0,0,0},max=0;

printf("

请输入10位同学的所有信息:

for(i=0;

{scanf("

%d%s%f%f%f"

stu[i].number,stu[i].name,

&

stu[i].len1,&

stu[i].len2,&

stu[i].len3);

stu[i].score=stu[i].len1+stu[i].len2+stu[i].len3;

if(stu[i].score>

=max){max=stu[i].score;

flag=i;

sum[0]+=stu[i].len1;

sum[1]+=stu[i].len2;

sum[2]+=stu[i].len3;

3;

i++)

ave[i]=sum[i]/3;

三门课的平均成绩分别为"

%6.2f"

ave[i]);

\n最高分是:

%d%s%6.2f%6.2f%6.2f"

stu[flag].number,stu[flag].name,stu[flag].len1,

stu[flag].len2,stu[flag].len3);

13个人围成一圈,从第1个人开始顺序报号1、2、3。

凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。

实验九:

链表的处理

1、了解键表的相关概念。

2、掌握单向键表的创建、编历、插入、删除等简单处理。

【内容】

创建一个链表。

stdlib.h"

typedefstructlist

{intdata;

structlist*next;

}list;

{list*head,*ptr;

intnum,i;

ptr=(list*)malloc(sizeof(list));

head=ptr;

Pleaseinput5numbers:

5;

num);

ptr->

data=num;

next=(list*)malloc(sizeof(list));

if(i==4)ptr->

next=NULL;

elseptr=ptr->

next;

ptr=head;

Thevalueis:

while(ptr!

=NULL)

{printf("

->

ptr->

data);

ptr=ptr->

getchar();

实验十:

文件及其应用

1、了解运用于文件操作的库函数。

2、掌握对文件进行简单的处理。

有5个学生,每个学生包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,计算每个人的平均成绩,并将原有数据及平均成绩存放于磁盘文件“stud.txt”中。

先将5个学生的相关信息从键盘上输入,并求出各自的平均成绩;

再次以写方式打开一个文件“stud.txt”,将5个学生的信息全存入文件中。

2、程序代码:

floatlen[3],ave;

{studentstu[5];

FILE*fp;

inti;

pr

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

当前位置:首页 > 医药卫生 > 基础医学

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

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