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

内容发布更新时间 : 2024/12/26 2:12:31星期一 下面是文章的全部内容请认真阅读。

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个数的有序序列中,确保插入后其仍然有序,。 1、算法分析:①将待插入的数与序列中的每个数进行比较,找到其插入的具体位置i; ②将从第i个数组元素开始,一直到原数组中的最后一个元素,整体往后

移,空出一空间来存储待插入的整数。

2、程序代码:

#include \

void main()

{int a[10]={2,5,7,11,14,19,21,33,67},i,k,m; printf(“原数组为:”);

for(i=0;i<9;i++) printf(“M”,a[i]); printf(“\\n请输入待插入的整数:”); scanf(“%d”,&m); for(i=0;i<9;i++)

if (m<=a[i]) break;//查找待插入的位置 for(k=9;k>=i;k--)

a[k]=a[k-1]; //移位,准备插入新的整数

a[i]=m; printf(“新数组为:”); for(i=0;i<10;i++) printf(“M”,a[i]); }

二、编程实现:将字符串str2连接到字符串str1 后,构成新的字符串str1。 1、算法分析:

本程序即实现字符串处理函数strcat()的功能。两字符串str1和str2进行连接,要注意的是字符串的结束标志。 2、程序代码: #include \ #include \ void main()

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

printf(\请输入字符串str1:\ len1=strlen(str1);

printf(\请输入字符串str2:\ len2=strlen(str2);

for(i=len1,j=0;j

printf(\新的字符串str1为:\ } 【课后练习】

1、 判断一方阵是不是对称矩阵。 2、 实现两个字符串拷贝的功能。

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

【实验分析与讨论】

1、 分析两种基本排序算法的核心与两者的不同之处。 2、 在实现字符串处理函数时的一些注意事宜及其实现方法。 3、 讨论二维数组解决矩阵与行列式。

实验六: 函数及其应用

【目的与要求】

1、掌握C中函数的定义、调用及设计。 2、掌握函数嵌套调用、递归调用的设计。 3、掌握变量、函数的作用域及存储类。 【实验内容】

一、设计一个子函数对n个整数进行排序,由主函数从键盘接收若干个数,调用子函数进行排序,并在主函数中进行输出显示。 1、算法分析: ①子函数的设计 以两个参数来实现,一个是接收主函数传来的数组首地址,另一个是持排序的整数个数,如fun(int a[],int n); ②主函数的实现 定义一整型数组,从键盘上接收若干个整数,调用子函数fun,再将最后的结果输出。 2、程序代码: #include \void fun(int a[],int n) // 选择排序算法 {int i,j,t; for(i=0;ia[j]) {t=a[i];a[i]=a[j];a[j]=t;} } void main() { int a[10],i; for(i=0;i<10;i++) scanf(\ printf(\输入的数值序列为:\ for(i=0;i<10;i++) printf(\ printf(\ printf(\输入的数值序列为:\ for(i=0;i<10;i++) printf(\} 二、输入任意两数m,n的值,输出下列表达式的值。 m! S= (m?n)!n! 1、算法分析 ① 编写一函数fac(n), 返回n!的值。 ② 编写主函数,从键盘输入m,n的值,调用上述fac()函数,计算表达式的值,并将其输出。 2、程序代码 #include “stdio.h” long fac(int n) {if (n==1) return 1; else return n*fac(n-1); } void main() {int m,n,t; float s; printf(“please input 2 integer numbers:”); scanf(“%d%d”,&m,&n); if(m

printf(“s=%f”,fac(m)/(fac(m-n)fac(n))); } 【课后练习】

1、 若正整数A恰好出现在其平方数的右侧,则称A为一个同构数。如:5,6,76。求100

以内的所有同构数。

要求:(1)编写一子函数int fun(int n),判断给定正整数n是不是同构数,若是,

返回1,否则,返回0。

(2)编写主函数,调用函数fun(),寻找并输出100以内的所有同构数。 (3)在输出同构数的同时,要输出其平方的值。

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

【实验分析与讨论】

1、 被调函数的实现及调用过程。 2、 简单递归问题的实现。

实验七:指针及其应用

【目的与要求】

1、了解指针的定义与应用。 2、掌握使用指针变量的程序设计。 3、 了解使用函数指针的程序设计。 4、 了解使用指针数组的程序设计。 【实现内容】

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

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

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

2、 程序代码:

#include “stdio.h” void swap(int *p,int *q); void main() {int a,b;

printf(“请输入两个整数:”); scanf(“%d%d”,&a,&b);

printf(“两个数交换前顺序为:a=%d,b=%d”,a,b); swap(&a,&b);

printf(“两个数交换后顺序为:a=%d,b=%d”,a,b); }

void swap(int *p,int *q)

{int t;

t=*p;*p=*q;*q=t;}

二、编程实现:运用指针将字符串str2连接到字符串str1 后,构成新的字符串str1。 1、算法分析:

本程序即实现字符串处理函数strcat()的功能。两字符串str1和str2进行连接,要注意的是字符串的结束标志,并运用指向字符串的指针来实现。 2、程序代码: #include \ #include \ void main()

{char str1[20] ,str2[10],*p=str1,*q=str2 ,j,len1,len2; printf(\请输入字符串str1:\ len1=strlen(str1); p=p+len1-1;

printf(\请输入字符串str2:\ len2=strlen(str2); for( j=0;j

*(++p)=*(q++);str1[len1+len2]='\\0'; printf(\新的字符串str1为:\ }

【课后练习】

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

【实验分析与讨论】

实验八:结构体及其应用

【目的与要求】

1、了解结构体类型的定义。 2、掌握结构体类型变量的使用。 【实验内容】

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

定义一个结构体类型,其中含有学号、姓名、三门课的成绩、总分数据;先后根据要求解决上述问题。 2、程序代码: #include \typedef struct stu

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi