数据结构上机实验答案

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

求平均成绩最高学生的下标 */
{
int i,maxi=0;
for (i=1;i<n;i++)
if (s[i].average>s[maxi].average)
maxi=i;
return(maxi);
}
7
main() {int maxi,j; stu a[N];/* 定义变量 */ intput(a,N); stu_av(a,N); printf("the score average is %f\n", av(a,N)); maxi=max(a,N); printf("the max average student data:\n");
a 的长度。在主函数中
main() { char str[20],*cp; cp=str; gets(cp); printf("the length of %s is %d\n",cp,fun(cp)); }
9、 10、
#include <stdio.h>
#include <string.h>
#define N 2
sum+=i; return(sum); } main() { int x,sum; scanf("%d",&x); printf("the sum is %d\n",fun(&x));
}
3、 函数的功能是求数组 a 中最大数的位置(位序号) 。在主函数中输入 10 个整数、调用函
1
数 fun、输出结果。 #define N 10 #include <stdio.h> void input(int *a,int n) { int i;
typedef struct student /*
定义数据结构(数据类型) */
{long num;
char name[10];
int score[3]; /*
存放三门课成绩 */
float average; /*/
平均成绩 */
} stu;
void intput(stu s[],int n) /*
scanf("%d",&s[i].score[j]); } }
void stu_av(stu s[],int n)/* { int i,j,sum; for (i=0;i<n;i++)
{ sum=0; for (j=0;j<3;j++) sum+=s[i].score[j] ; s[i].average=sum/3.0;
void fun(int *a,int n) { int i,*max,*min,temp; max=min=a; for (i=1;i<n;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;}
《数据结构实验指导书》答案
实验一:
1、 请编写函数 int fun(int *a, int *b), 函数的功能是判断两个指针 a 和 b 所指存储单元的值 的符号是否相同;若相同函数返回 1,否则返回 0。这两个存储单元中的值都不为 0。在
主函数中输入 2 个整数、调用函数 fun、输出结果。
#include <stdio.h>
printf("%10ld",a[maxi].num); printf("%10s",a[maxi].name); for (j=0;j<3;j++)
printf("%5d",a[maxi].score[j]); printf("%5.1f",a[maxi].average); getch(); }
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");
int fun(int *a, int *b,int n) { int i,j=0;
for (i=0;i<n;i++) if (a[i]%2==0) { b[j]=a[i]; j++;}
return(j);
3
}
main() {int a[N],b[N],m; input(a,N); m=fun(a,b,N); output(b,m); }
4
}
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 <stdio.h> void input(int a[][4],int n) { int i,j;
for (i=0;i<n;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<n;i++)
printf("%5d",*(a+i)); /*printf("%d",a[i]);*/ }
6、请编写函数 int fun(int *a, , int n),函数的功能是把数组 a 中最大数和最小数交换。在主 函数中输入 10 个整数、调用函数 fun 、输出结果。
#define N 10 #include <stdio.h> void input(int *a,int n) { int i;
for (i=0;i<n;i++) for (j=0;j<n;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<n;i++)
{printf("\n"); for (j=0;j<n;j++) printf("%4d",*(*(a+i)+j)); /*printf("%d",a[i][j]);*/
实验二
1、 #include <stdio.h> #define MaxLen 50 typedef int elemtype; struct datatype {elemtype *elem;
int length; }; typedef struct datatype sqlist; void create (sqlist *a) { int i,n; a->elem=(elemtype *)malloc(MaxLen*sizeof(elemtype)); printf(" 创建一个顺序表 \n"); printf(" 输入元素个数 \n"); scanf("%d",&a->length); for (i=0;i<a->length;i++) {
printf(" 输入第 %d 个元素值 :",i+1); scanf("%d",a->elem+i); } }
2
int i,sum1=0,sum2=0;
for (i=0;i<n;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); }
输入数据 */
6
源自文库
{int i,j; /*i
表示处理学生的下标, J 表示成绩编号 */
for (i=0;i<n;i++) { printf("input num:\n"); scanf("%ld",&s[i].num); printf("input name:\n"); scanf("%s",s[i].name); printf("input 3 score:\n"); for (j=0;j<3;j++)
8、 请编写函数 int fun(char *a),
函数的功能是分别求出字符串
输入 1 个字符串、调用函数 fun 、输出结果。
#include <stdio.h>
int fun(char *a)
{
int i=0;
char *p;
p=a;
while (*p)
{i++;
p++;
}
return(i);
}
} }
求每个学生的平均成绩 */
float av(stu s[],int n)/* { int i; float sum=0.0,ave; for (i=0;i<n;i++)
sum+=s[i].average; ave=sum/n; return(ave); }
求总平均成绩 */
int max(stu s[],int n)/*
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、输出结果。
} }
void fun(int a[][4],int n) { int i,j,temp;
for (i=0;i<n;i++) for (j=0;j<i;j++) {temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;}
}
5
main() {int a[N][N]; input(a,N); fun(a,N); output(a,N); }
for (i=0;i<n;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<n;i++)
printf("%5d",*(a+i)); /*printf("%d",a[i]);*/ }
#define N 10 #include <stdio.h> void input(int *a,int n) { int i;
for (i=0;i<n;i++) scanf("%d",a+i); /*scanf("%d",&a[i]);*/
}
void fun(int *a,int n, int *odd, int *even) {
5、请编写函数 int fun(int *a, int *b ,int n),函数的功能是把数组 a 中所有为偶数的数,放 在另一个数组中 b。在主函数中输入 10 个整数、调用函数 fun、输出结果。 #define N 10 #include <stdio.h> void input(int *a,int n) { int i;
}
2、 计算 1+2+3+ ,, +100 ,要求用指针进行设计。即设计函数
int fun(int *n) 实现求
1+2+3+ ,, +*n ,在主函数中输入、调用、输出结果。
#include <stdio.h> int fun(int *n) {
int i,sum=0; for (i=1;i<=*n;i++)
for (i=0;i<n;i++) scanf("%d",a+i); /*scanf("%d",&a[i]);*/
}
int fun(int *a,int n) { int i,*max; max=a; for (i=1;i<n;i++)
if (a[i]>*max) max=a+i; return(max-a); }
相关文档
最新文档