数据结构上机实验答案

数据结构上机实验答案
数据结构上机实验答案

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

实验一:

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;}

}

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

for (j=0;j

scanf("%d",&a[i][j]);

}

void output(int a[][4],int n)

{

int i,j;

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

for (i=0;i

{printf("\n");

for (j=0;j

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

}

}

void fun(int a[][4],int n)

{

int i,j,temp;

for (i=0;i

for (j=0;j

{temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}

}

main()

{int a[N][N];

input(a,N);

fun(a,N);

output(a,N);

}

8、请编写函数int fun(char *a),函数的功能是分别求出字符串a 的长度。在主函数中

输入1个字符串、调用函数fun、输出结果。

#include

int fun(char *a)

{

int i=0;

char *p;

p=a;

while (*p)

{i++;

p++;

}

return(i);

}

main()

{

char str[20],*cp;

cp=str;

gets(cp);

printf("the length of %s is %d\n",cp,fun(cp));

}

9、

10、

#include

#include

#define N 2

typedef struct student /*定义数据结构(数据类型)*/

{long num;

char name[10];

int score[3]; /*存放三门课成绩 */

float average; /*/平均成绩*/

} stu;

void intput(stu s[],int n) /*输入数据 */

相关主题
相关文档
最新文档