当前位置:首页 >> 其它考试 >>

专升本 练习题 C练习12--算法(数组、链表)


C 专升本辅导

练习 12

算法(1)

1

(12-1) fun 函数的功能是:首先对 a 所指的 N 行 N 列的矩阵,找出各行中的最大的数,再求这 N 个最大值 中的最小的那个数作为函数值返回。请填空。 #include <stdio.h> #define N 100 int fun(int a[][]) {int row,col,max,min; for(row=0;row<N;row++) {for(max=a[row][0],col=1;col<N;col++) if(_____________) max=a[row][col]; if(row==0) min=max; else if(_______________) min=max; } return min; } (12-2) 以下程序段用于构成一个简单的单向链表,请填空。 struct STRU { int x, y ; float rate; _____________ ; } a, b; a.x=0; a.y=0; a.rate=0; a.p=&b; b.x=0; b.y=0; b.rate=0; b.p=NULL; (12-3) 若以下定义: struct link { int data; struck link *next; }a,b,c,*p,*q; 且变量 a 和 b 之间已有如下图所示的链表结构: a ┌──┬──┐ │ 5 ↑p c ┌──┬──┐ │ 7 ↑q 指针 p 指向变量 a,q 指向变量 c。则能够把 c 插入到 a 和 b 之间并形成新的链表的语句组是: A) a.next=c; c.next=b; q->next=p->next; B) p.next=q; q.next=p.next; D) (*p).next=q; (*q).next=&b; │ │ └──┴──┘ │ └──┴──┘ b ┌──┬──┐ │ └──┴──┘ ┼──→ │ 9 │ \0

C) p->next=&c;

C 专升本辅导

练习 12

算法(1)

2

(12-4) 以下程序中, select 函数的功能是: N 行 M 列的二维数组中,选出一个最大值作为函数值返回,并通 在 过形参传回此最大值所在的行下标。请填空。 #define N 3 #define M 3 select(int a[N][M],int *n) { int i,j,row=1,colum=1; for(i=0;i<N;i++) for(j=0;j<M;j++) if(a[i][j]>a[row][colum]){row=i;colum=j;} *n= ______________; return __________________________; } main() {int a[N][M]={9,11,23,6,1,15,9,17,20},max,n; max=select(a,&n); printf("max=%d,line=%d\n",max,n); }

(12-5)有以下程序 #include <stdlib.h> struct NODE {int num; struct NODE *next; } main() {struct NODE *p,*q,*r; p=(struct NODE *)malloc(sizeof(struct NODE)); q=(struct NODE *)malloc(sizeof(struct NODE)); r=(struct NODE *)malloc(sizeof(struct NODE)); p->num=10;q->num=20;r->num=30; p->next=q;q->next=r; printf("%d\n",p->num+q->next->num); } 程序运行后的输出结果是______。 A) 10 B) 20 C) 30 D) 40

(12-6)以下程序中函数 sort 的功能是对 a 所指数组中的数据进行由大到小的排序 void sort(int a[],int n) {int i,j,t; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++)

C 专升本辅导 if(a[i]<a[j]) {t=a[i];a[i]=a[j];a[j]=t;} } main() {int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(&aa[3],5); for(i=0;i<10;i++) printf("%d,",aa[i]); printf("\n"); } 程序运行后的输出结果是______。 A) 1,2,3,4,5,6,7,8,9,10, C) 1,2,3,8,7,6,5,4,9,10,

练习 12

算法(1)

3

B) 10,9,8,7,6,5,4,3,2,1, D) 1,2,10,9,8,7,6,5,4,3,

(12-7)有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。 struct node { int data; struct node *next; } *p, *q, *r; 现要将 q 和 r 所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是 A)r->next=q; C)p->next=r; q->next=r->next; q->next=r->next; p->next=r; r->next=q; B)q->next=r->next; D)q->next=r->next; p->next=r; r->next=q; r->next=q; p->next=r;

(12-8)已有定义如下: struct node { int data; struct node *next; } *p; 以下语句调用 malloc 函数,使指针 p 指向一个具有 struct node 类型的动态存储空间。请填空。 p = (struct node *)malloc( _____________________ );

C 专升本辅导

练习 12

算法(1)

4

答案: (12-1)a[row][col]>max max<min (12-2)struct STRU *p (12-3)D (12-4)row (12-5)D (12-6)C (12-7)A (12-8)sizeof(struct node) a[row][colum]


相关文章:
更多相关标签: