《数据结构实验指导书》答案
实验一:
1、 请编写函数int fun(int *a, int *b),函数的功能是判断两个指针a和b所指存储单元的值
的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。 #include
if (*a*(*b)>0) return(1); else return(0); }
main() {
int x,y;
scanf(\
if (fun(&x,&y)) printf(\else printf(\}
2、 计算1+2+3+??+100,要求用指针进行设计。即设计函数int fun(int *n)实现求
1+2+3+??+*n,在主函数中输入、调用、输出结果。
#include
int i,sum=0;
for (i=1;i<=*n;i++) sum+=i; return(sum); }
main() {
int x,sum;
scanf(\
printf(\ }
3、 函数的功能是求数组a中最大数的位置(位序号)。在主函数中输入10个整数、调用函
数fun、输出结果。 #define N 10
#include
for (i=0;i scanf(\} int fun(int *a,int n) { int i,*max; max=a; for (i=1;i main() {int a[N],maxi; input(a,N); maxi=fun(a,N); printf(\}?? 4、请编写函数fun(int *a,int n, int *odd, int *even),函数的功能是分别求出数组a中所有奇数之和和所有偶数之和。形参n给出数组中数据的个数;利用指针odd和even分别返回奇数之和和偶数之和。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include for (i=0;i scanf(\} void fun(int *a,int n, int *odd, int *even) { int i,sum1=0,sum2=0; for (i=0;i *odd=sum1; *even=sum2; } main() {int a[N],odd,even; input(a,N); fun(a,N, &odd, &even); printf(\} 5、请编写函数int fun(int *a, int *b,int n),函数的功能是把数组a中所有为偶数的数,放在另一个数组中b。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include for (i=0;i scanf(\} void output(int *a,int n) { int i; printf(\for (i=0;i printf(\} int fun(int *a, int *b,int n) { int i,j=0; for (i=0;i } main() {int a[N],b[N],m; input(a,N); m=fun(a,b,N); output(b,m); } 6、请编写函数int fun(int *a,,int n),函数的功能是把数组a中最大数和最小数交换。在主函数中输入10个整数、调用函数fun、输出结果。 #define N 10 #include for (i=0;i scanf(\} void output(int *a,int n) { int i; printf(\for (i=0;i printf(\} void fun(int *a,int n) { int i,*max,*min,temp; max=min=a; for (i=1;i printf(\printf(\if (max!=min) {temp=*max;*max=*min;*min=temp;} } main() {int a[N],m; input(a,N); fun(a,N); output(a,N); }?? 7、请编写函数int fun(int a[4][4]),函数的功能是把矩阵a转置。在主函数中输入、调用函数fun、输出结果。 #define N 4 #include void input(int a[][4],int n) { int i,j; for (i=0;i scanf(\} void output(int a[][4],int n) { int i,j; printf(\for (i=0;i void fun(int a[][4],int n) { int i,j,temp;