|
某学校的考研题
(一)子程序sort()对链表进行直接选择排序,实施排序的链表不带标志结点,首指针由参数提供。为排序方便,本函数于排序前为链表添一个辅助头标志结点,排序完成后再把这个结点删除。
typedef struct node
{
int value;
struct node *next;
}node;
void sort(_______(1)_______h)
{
struct node *p,*q,*r,*s,*h1;
h1=p=(node*)malloc(sizeof(node));
p->next=*h;
while(p->next)
{
q=p->next;
r=p;
while(q->next)
{
if(q->next->value < _______(2)_______)
r=q;
q=q->next;
}
if(r!=q)
{
s=_______(3)_______;
_______(4)_______=s->next;
s->next=_______(5)_______;
}
p=p->next;
}
*h=_______(7)_______;
free(h1);
}
(二)
如下程序输入一个方阵的阶数和“幸运数”,生成星云方阵。幸运方阵是这样的:划去它的任意一行和任意一列,记下交叉点的值;再在方阵剩余部分任意划去一行和一列,再记下交叉点的值;继续这一过程,当方阵不剩任何值时,所有记下的值之和恰好为预先指定的那个幸运数。
程序中rand()功能:返回一个随机的正整数。
#define N 30
#include <stdio.h>
#include <math.h>
void main()
{
int lucky[N][N],row[N],col[N];
int n,lucky_n,k,sum=0,i,j;
printf("请输入方阵阶数");scanf("%d",&n);
printf("请输入幸运数字");scanf("%d",&lucky_n);
k=lucky_n/n;
if(k==0) printf(“输入数值太小”);
for(i=0;i<n;i++)
{
row[i] = rand()%k;
col[i] = rand()%k;
sum+=_______(1)_______;
}
col[n-1]+=_______(2)_______;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
_______(3)_______;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d",_______(4)_______);
}
} |
|