实验九指针
一实验目的
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
intx=-56;
printf(\return0; }
例程说明:
本例程通过abs函数计算出整型数-56的绝对值56,并在屏幕上显示结果。本例程的运行结果为:
number:-56absolutevalue:56
例程如下:计算长整数的绝对值。 #include
longx=
printf(\return0; }
例程说明:
number:absolutevalue:
例程如下:计算浮点数的绝对值。 #include
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
doubleresult; doublex=1.0; result=acos(x);
printf(\return0; }
例程说明:
本例程应用函数acos计算1.0的反余弦值,即:arccos1。返回计算结果的双精度值。本例程的运行结果是:
arccos1.000000=0.000000 3.asin:反正弦函数
函数原型:doubleasin(doublex); 头文件:#include