C语言实验指导书新 下载本文

内容发布更新时间 : 2024/5/18 14:22:24星期一 下面是文章的全部内容请认真阅读。

实验九指针

一实验目的

1了解指针的概念,学会定义和使用指针变量。 2.掌握函数的值调用和引用调用的含义

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

二、实验内容

1.运行下列程序,写出运行结果。 #include\main()

{inta[5],*p,j;

for(j=0;j<5;j++)a[j]=j+1; p=a;

for(j=0;j<5;j++)printf(\改为p[j] }

2.想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的?

swap(int*p1,int*p2) {int*p;

p=p1;p1=p2;p2=p;//inta;a=*p1;*p1=*p2;*p2=a; }

main()

{inta,b;int*pt1,*pt2; scanf(\pt1=&a;pt2=&b;

if(a

printf(\}

上机调试此程序。如果不能实现题目要求,指出原因并修改之。

1.编写自定义函数:进行两个数据之间的交换。分析与设计:使用两种参数传递方法,进行数据的交换,比较下面程序的运行结果有何不同。 程序1:参数的值传递。 voidswap(intx,inty) {intt;t=x;x=y;y=t;

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

main() {inta,b;

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

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

程序2:参数的地址传递。 voidswap(int*x,int*y) {intt;

t=*x;*x=*y;*y=t;

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

main() {inta,b;

printf(“pleaseinputa,b:”); scanf(“%d,%d”,&a,&b); swap(a,b);//swap(&a,&b);

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

三.案例项目

1.用指针变量记录一门课的成绩a,并用指针输出a的值;

2.用指针数组score[]记录两个学生的成绩a[3],b[3],并用score输出所有成绩.

3(选做).输入学生课程的数目,并用指针与动态内存分配函数malloc()记录一个学生的成绩:pp2811)函数malloc

实验十自定义数据、文件

一实验目的

1掌握结构体类型的概念和定义方法与使用。

2掌握指向结构体变量的指针变量的概念和应用。 二案例项目

1.完成下列自定义函数:

1)定义一个学生信息结构体Student_Info(其成员变量有姓名,学号,成绩数组,平均分),并在main()函数中用结构体变量记录一个学生的信息,然后输出该学生的所有信息。

2)用一个结构体数组Student_InfoStudent[1000],记录N个学生的结构体变量。定义一个函数AddStudent(structStudent_Infos[]),向Student[]数组中添加一个学生的信息。

3)定义一个函数find(intnumber)查找指定学号number的学员,并返回该学生在Student[1000]数组中的下标i,如果指定学号不存在,返回-1;

4)定义一个函数voidquery(intnumber):用find(intnumber)函数根据学号查找学生在Student[1000]数组中的下标i,并显示该学员的所有信息。

5)定义一个函数voiddel(intnumber),根据学号查找学生,并删除该学员信息 6)定义一个函数voidmodify(intnumber),根据学号查找并修改学员的信息 2.用上述自定义函数完成主函数的编写

//定义一个结构体数组Student_InfoStudent[1000], main()

{//用AddStudent函数添加3个学生的信息,并输出所有学生的信息。 //用query()函数查找一个学生,并输出该有学生的信息。 //用del()函数删除一个学生,并显示删除后所有学生的信息

//用modify()函数修改一个学生,并显示modify后所有学生的信息 }

附1:c语言函数库

1. abs、labs、fabs:求绝对值函数 2. acos:反余弦函数 3. asin:反正弦函数 4. atan:反正切函数 5. atan2:反正切函数 6. ceil:向上舍入函数 7. cos:余弦函数

8. cosh:双曲余弦函数 9. div、ldiv:除法函数 10. exp:求e的x次幂函数 11. floor:向下舍入函数 12. fmod:求模函数 13. frexp:分解浮点数函数 14. hypot:求直角三角形斜边长函数 15. ldexp:装载浮点数函数 16. log、log10:对数函数 17. modf:分解双精度数函数 18. pow、pow10:指数函数 19. rand:产生随机整数函数 20. sin:正弦函数 21. sinh:双曲正弦函数 22. sqrt:开平方函数 23. srand:设置随机时间的种子函数 24. tan:正切函数 25. tanh:双曲正切函数

1.abs、labs、fabs:求绝对值函数 函数原型:intabs(intx); longlabs(longx); doublefabs(doublex);

头文件:#include 是否是标准函数:是

函数功能:函数intabs(intx);是求整数x的绝对值;函数longlabs(longn);是求长整型数x的绝对值;函数doublefabs(doublex);是求浮点数x的绝对值。 返回值:返回计算结果。

例程如下:计算整数的绝对值。 #include intmain(void) {

intx=-56;

printf(\return0; }

例程说明:

本例程通过abs函数计算出整型数-56的绝对值56,并在屏幕上显示结果。本例程的运行结果为:

number:-56absolutevalue:56

例程如下:计算长整数的绝对值。 #include intmain(void) {

longx=

printf(\return0; }

例程说明:

number:absolutevalue:

例程如下:计算浮点数的绝对值。 #include intmain(void) {

floatx=-128.0;

printf(\return0; }

例程说明:

本例程通过fabs函数计算出浮点数-128.0的绝对值128.0,并在屏幕上显示结果。本例程的运行结果为:

number:-128.000000absolutevalue:128.000000 2.acos:反余弦函数

函数原型:doubleacos(doublex); 头文件:#include 是否是标准函数:是

函数功能:求x的反余弦值,这里,x为弧度,x的定义域为[-1.0,1.0],arccosx的值域为[0,π]。

返回值:计算结果的双精度值。 例程如下:求arccosx。 #include #include intmain(void) {

doubleresult; doublex=1.0; result=acos(x);

printf(\return0; }

例程说明:

本例程应用函数acos计算1.0的反余弦值,即:arccos1。返回计算结果的双精度值。本例程的运行结果是:

arccos1.000000=0.000000 3.asin:反正弦函数

函数原型:doubleasin(doublex); 头文件:#include 是否是标准函数:是