数据结构上机实验答案

  • 格式:doc
  • 大小:119.50 KB
  • 文档页数:23

下载文档原格式

  / 23
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构实验指导书》答案

实验一:

1、请编写函数int fun(int *a, int *b),函数的功能是判断两个指针a和b所指存储单元的值

的符号是否相同;若相同函数返回1,否则返回0。这两个存储单元中的值都不为0。在主函数中输入2个整数、调用函数fun、输出结果。

#include

int fun(int *a, int *b)

{

if (*a*(*b)>0) return(1);

else return(0);

}

main()

{

int x,y;

scanf("%d%d",&x,&y);

if (fun(&x,&y)) printf("yes\n");

else printf("no");

}

2、计算1+2+3+……+100,要求用指针进行设计。即设计函数int fun(int *n)实现求

1+2+3+……+*n,在主函数中输入、调用、输出结果。

#include

int fun(int *n)

{

int i,sum=0;

for (i=1;i<=*n;i++)

sum+=i;

return(sum);

}

main()

{

int x,sum;

scanf("%d",&x);

printf("the sum is %d\n",fun(&x));

}

3、函数的功能是求数组a中最大数的位置(位序号)。在主函数中输入10个整数、调用函

数fun、输出结果。

#define N 10

#include

void input(int *a,int n)

{

int i;

for (i=0;i

scanf("%d",a+i); /*scanf("%d",&a[i]);*/

}

int fun(int *a,int n)

{

int i,*max;

max=a;

for (i=1;i

if (a[i]>*max) max=a+i;

return(max-a);

}

main()

{int a[N],maxi;

input(a,N);

maxi=fun(a,N);

printf("\n the max position is %d\n",maxi);

}

4、请编写函数fun(int *a,int n, int *odd, int *even),函数的功能是分别求出数组a中所有奇数之和和所有偶数之和。形参n给出数组中数据的个数;利用指针odd和even分别返回奇数之和和偶数之和。在主函数中输入10个整数、调用函数fun、输出结果。

#define N 10

#include

void input(int *a,int n)

{

int i;

for (i=0;i

scanf("%d",a+i); /*scanf("%d",&a[i]);*/

}

void fun(int *a,int n, int *odd, int *even)

{

int i,sum1=0,sum2=0;

for (i=0;i

{

if (a[i]%2==0) sum1+=a[i];

else sum2+=a[i];

}

*odd=sum1;

*even=sum2;

}

main()

{int a[N],odd,even;

input(a,N);

fun(a,N, &odd, &even);

printf("the odd is %d\tthe even is %d\n",odd,even);

}

5、请编写函数int fun(int *a, int *b,int n),函数的功能是把数组a中所有为偶数的数,放在另一个数组中b。在主函数中输入10个整数、调用函数fun、输出结果。

#define N 10

#include

void input(int *a,int n)

{

int i;

for (i=0;i

scanf("%d",a+i); /*scanf("%d",&a[i]);*/

}

void output(int *a,int n)

{

int i;

printf("\nthe odd is:\n");

for (i=0;i

printf("%5d",*(a+i)); /*printf("%d",a[i]);*/

}

int fun(int *a, int *b,int n)

{

int i,j=0;

for (i=0;i

if (a[i]%2==0) { b[j]=a[i]; j++;}

return(j);

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

void input(int *a,int n)

{

int i;

for (i=0;i

scanf("%d",a+i); /*scanf("%d",&a[i]);*/

}

void output(int *a,int n)

{

int i;

printf("\nthe result is:\n");

for (i=0;i

printf("%5d",*(a+i)); /*printf("%d",a[i]);*/

}

void fun(int *a,int n)

{

int i,*max,*min,temp;

max=min=a;

for (i=1;i

{

if (a[i]>*max) max=a+i;

if (a[i]<*min) min=a+i;

}

printf("the max is %d,the position is %d\n",*max,max-a);

printf("the min is %d,the position is %d\n",*min,min-a);

if (max!=min)

{temp=*max;*max=*min;*min=temp;}