《 C语言程序设计》实验指导书 联系客服

发布时间 : 星期四 文章《 C语言程序设计》实验指导书更新完毕开始阅读4a6f0a774b35eefdc9d33315

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

{int number; char name[4]; float len1,len2,len3; float score;}student; void main() {student stu[10]; int i,flag;

float ave[3],sum[3]={0,0,0},max=0; printf(\请输入10位同学的所有信息:\for(i=0;i<10;i++)

{scanf(\ &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; }

for(i=0;i<3;i++)

ave[i]=sum[i]/3;printf(\三门课的平均成绩分别为\ for(i=0;i<3;i++) printf(\

printf(\最高分是:%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、掌握单向键表的创建、编历、插入、删除等简单处理。 【内容】 创建一个链表。 #include \#include \typedef struct list

{int data;struct list *next;}list;

void main() {list *head,*ptr; int num,i;

ptr=(list *)malloc(sizeof(list)); head=ptr; printf(\for(i=0;i<5;i++) {scanf(\ptr->data=num;

ptr->next=(list *)malloc(sizeof(list)); if(i==4) ptr->next=NULL; else ptr=ptr->next; } ptr=head;

printf(\while(ptr!=NULL)

{printf(\getchar(); }

【实验分析与讨论】

实验十:文件及其应用

【目的与要求】

1、了解运用于文件操作的库函数。 2、掌握对文件进行简单的处理。 【实验内容】

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

先将5个学生的相关信息从键盘上输入,并求出各自的平均成绩;再次以写方式打开一个文件“stud.txt”,将5个学生的信息全存入文件中。 2、程序代码: #include \typedef struct stu {int number; char name[4];

float len[3],ave;}student; void main()

{student stu[5]; FILE *fp;