教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 综合文档 >

C语言实验指导书24学时(4)

来源:网络收集 时间:2026-08-26
导读: C语言程序设计实验指导书 a[j]与a[j-1]交换;并置flag=1。 ⑤ 若没有交换(flag=0),排序完成,退出循环。 ⑥ 输出排序结果。 上述算法的①、⑥在main函数中实现,其余各步调用sort函数完成。主函数如下: #include

C语言程序设计实验指导书

a[j]与a[j-1]交换;并置flag=1。

⑤ 若没有交换(flag=0),排序完成,退出循环。 ⑥ 输出排序结果。

上述算法的①、⑥在main函数中实现,其余各步调用sort函数完成。主函数如下: #include

int a[100]; /* 外部数组 */ main() { int i,n;

void sort(int); /* 说明被调函数 */ printf(\请输入排序的数据个数n:\); scanf(\%d\,&n);

printf(\请输入要排序的%d个整数:\,n); for(i=0;i

sort(n); /* 调用sort函数完成排序 */ printf(\排序结果:\);

for(i=0;i

请编写sort函数(注意:函数只有一个形参int n)。

3 有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。 #include #define M 3 #define N 4 main()

{ int max,i,j,r,c;

int a[M][N]={{123,94,-10,218},{3,9,10,-83},{45,16,44,-99}}; max=a[0][0]; for(i=0;i

if(a[i][j]>max) { max=a[i][j]; r=i; c=j; } printf(\max=%d,row=%d,colum=%d\\n\,max,r,c); }

输入并调试、运行程序,记录程序的输出;若将a[0][0]改为1230,程序运行结果有错,应如何修改程序?

15

C语言程序设计实验指导书

4 按照下面算法编一个程序,将两个字符串连接起来,不能用strcat函数。 ⑴ 定义整型变量i、j,字符串s1、s2 ⑵ 输入字符串s1、s2

⑶ 当字符串s1尚未结束,改变字符串s1的下标,使之到s1结束处 ⑷ 当字符串s2尚未结束,将字符串s2逐个字符连接到字符串s1的后面 ⑸ 为字符串s1添加结束标志 ⑹ 输出连接后的字符串

三 思考题

1 将一个数组中的值按逆序重新存放,例如,原来顺序为8,6,5,4,1,要求改为1,4,5,6,8。

2 最常用的排序方法除了冒泡排序外,还有选择排序。

程序设计思路:设有10个元素a[0]~a[9],将a[0]与a[1]~a[9]比较,若a[0]比a[1]~a[9]都小,则不进行交换,即无任何操作。若a[1]~a[9]中有一个以上比a[0]小,则将其中最小的一个(假设为a[i])与a[0]交换,此时a[0]中存放了10个中最小的数。第二遍将a[1]与a[2]~a[9]比较,将剩下9个数中的最小者a[i]与a[1]对换,此时a[1]中存放的是10个中第2小的数。依此类推,共进行9遍比较,a[0]到a[9]就已按由小到大顺序存放。

n个数的选择排序的N-S图如下:

定义变量、输入n及数组a各元素 for(i=0;i

k=i

for(j=i+1;j

k=j

交换a[k]与a[i] 输出已排序的n个数

用冒泡排序同样的主函数,请根据上面的N-S图编写选择排序函数。

a[j]

四、注意事项

1 在C语言中,数组元素的下标从0开始,最大下标总是比定义的数组长度少1。 2 在C语言中,定义数组时,其长度必须指定且必须用常量表示。

16

C语言程序设计实验指导书

实验七 函数参数的传递

一.实验目的:

1.理解函数的形参和实参的概念和应用 2.掌握函数的值调用和引用调用的含义

3.掌握简单变量、数组和指针作为函数参数进行传递的形式 二.实验内容:

1.实验要求:编写自定义函数:进行两个数据之间的交换

2.分析与设计:使用两种参数传递方法,进行数据的交换,比较下面程序的运行结果有何不同。

3.源代码:

程序1:参数的值传递。 void swap(int x,int y) {int t; t=x; x=y; y=t;

printf(“x=%d\\ty=%d\\n”,x,y); }

main() {int a,b;

printf(“please input a,b:”); scanf(“%d,%d”,&a,&b); swap(a,b);

printf(“a=%d\\tb=%d\\n”,a,b); }

程序2:参数的地址传递。 void swap(int *x,int *y) {int t; t=*x; *x=*y; *y=t;

printf(“x=%d\\ty=%d\\n”,*x,*y); }

main() {int a,b;

printf(“please input a,b:”); scanf(“%d,%d”,&a,&b);

17

C语言程序设计实验指导书

swap(a,b);

printf(“a=%d\\tb=%d\\n”,a,b); }

程序3 编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数由键盘输入。

【提示】设有两个正整数m和n

⑴ 实验五介绍了求最大公约数的算法,下面介绍用递归求m和n的最大公约数h的方法。设hcf(int m,int n)是用来求m和n的最大公约数h函数,k=m%n,则:

?hcf(n,k)h???nk?0

k?0⑵ 若最大公约数为h,则最小公倍数l=m*n/h 。

实验时,完成以下两个函数的定义,使之和主程序构成完整的程序,实现题目的要求。 #include

int hcf(int m,int n) /* 求最大公约数的函数 */ { ?? }

int lcd(int m,int n,int h) /* 求最小公倍数的函数 */ { ?? } void main() { int m,n,h,l;

printf(\请输入两个正整数m、n:\); scanf(\%d,%d\,&m,&n); h=hcf(m,n);

printf(\%d和%d的最大公约数是:%d\\n\,m,n,h); l=lcd(m,n,h);

printf(\%d和%d的最大公约数是:%d\\n\,m,n,l); }

程序调试通过后,用m=350、n=125和m=96、n=64两组数据运行程序,记录程序的输出。

选做题:

1.编写求两个数中最大值的函数

2.编写一个判断某个数是否是素数的函数,要求在主函数中输入一个整数,并输出是否是素数的信息。

18

C语言程序设计实验指导书

实验八 嵌套与递归调用的实现

一.实验目的:

1.掌握函数嵌套调用与递归调用的函数的含义 2.重点掌握函数嵌套调用与递归调用的实现过程 3.培养和锻炼解决较复杂C程序设计的能力 4. 掌握单步运行的调试方法 二.实验内容:

1.实验要求: 利用函数嵌套调用与递归调用求两个数的阶乘和 2.分析与设计: 先分别求出两个数的阶乘值,然后相加 3.源代码:

#include #include

long sum(int a,int b)/*求两个数的阶乘和*/ {long c1,c2; c1=fact(a); c2=fact(b); return(c1+c2); }

long fact(int n)/* 利用递归求一个数的阶乘*/ {long r=1;

if(n<0) printf(“n<0,data error!\\n”); else if(n==0||n==1) r=1; else r=n*fact(n-1); return r; }

main()

{int n1,n2;

long result; clrcsr();

printf(“please input two number:\\n”); scanf(“%d,%d”,&n1,&n2); result=sum(n1,n2);

printf(“Result=%ld”,result); getch();}

选做题:

1.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃了一半,又多吃了一个。以后每天早上

19

…… 此处隐藏:1608字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言实验指导书24学时(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/404591.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)