现在的位置: 首页 > 14 二级C语言 > 正文

2011秋 C语言 完善程序(12分)

2012年09月16日 14 二级C语言 ⁄ 共 241字 ⁄ 字号 暂无评论

二级C的30分填空题中,第3部分(最后)是完善程序题,共4小题,12分

13.以下程序中judge函数的功能是判断x指向的int类型数组(长度为n)中各元素之间的逻辑关系。
若n个元素的值均相等则输出"all elements are same";
若n个元素的值无序则输出"no order";
若n个元素的值按升序排列则输出"ascend";
若n个元素的值按降序排列则输出"descend'。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<stdio.h>
 
void judge(___(19)___,int n)
{
    int f,i=0;
    while(i<n-1&&x[i]==x[i+1])
        i++;
    if(i==___(20)___) {
        printf("\n all elements are same");
        return;
    }
    if(x[i]<x[i+1])f=1;
    else f=0;
    for(; i<n-1; i++)
        if(f&&x[i]>x[i+1]||!f&&___(21)___) {
            printf("\n no order");
            return;
        }
    if(___(22)___) printf("\n ascend");
    else printf("\n descend");
}
 
void main()
{
    int a[5]= {1,2,3,4,5},b[5]= {5,4,3,2,1},
	c[5]= {1,4,2,3,5),d[5]={2,2,2,2,2}};
    judge(a,5);
    judge(b,5);
    judge(c,5);
    judge(d,5);
}

14. 下列程序的功能是判断一个n阶对称方阵是否双对称方阵。4阶对称方阵是指a(i,j) =a(j,i) (1<=i<=4,1<=j<=4)。4阶双对称矩阵是指一个4阶对称矩阵的第1列与第4列对换,第2列与第3列对换后仍然是对称矩阵,函数issym(int m[][N],int n)的功能是判断二维数组m中存放的一个n阶方阵是否为对称矩阵,如果是则函数返回值1,否则返回值0。 函数exchange(int a[][N],int n)的功能是将一个二维数组a中存放的一个n阶矩阵做横向翻转,即:将矩阵的第1列与第n列对换,将第2列与第n-1列对换,...,直到n/2列为止。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h>
#define N 10
 
void exchange(int a[][N],int n)
{
    int i,j,t;
    for(j=0; j<n/2; j++)
        for(i=0; i<n; i++) {
            t=a[i][j];
            ___(23)___=a[i][n-j-1];
            a[i][n-j-1]=t;
        }
}
 
int issym(int m[][N],int n)
{
    int i,j;
    for(i=0; i<n-1; i++)
        for(j=i; j<n; j++)
            if(___(24)___)    /*对称矩阵判断*/
                return 0;
    ___(25)___ ;
}
void main()
{
    int a[N][N];
    int n=4,i,j,r1,r2;
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
            scanf("%d",&a[i][j]);
    for(i=0; i<n; i++) {
        for(j=0; j<n.j++)
            printf("%4d",a[i][j]);
        printf("\n");
    }
    r1=issym(a,n);
    exchange( ___(26)___);
    r2=issym(a,n);
    if((r1+r2==2))
        printf("matrix is double symmetric\n");
    else
        printf("matrix is not double symmetric\n");
}

15.函数deletelist的功能:在head指向的单向链表中查找是否出现多个x值相同的结点。如果发现存在这样的结点,则保留第一个结点,删除其他重复出现的结点。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
typedef struct point {   /*链表结点数据结构定义*/
    int x;
    struct point*next;
} ___(27)___    ;
 
POT *deletelist(POT *head)
{
    POT *p,*p1,*p2;
    p=___(28)___;
    while(p->next!=NULL) {
        p1=p;
        p2=p->next;
        while(p2!=NULL) {
            if(p2->x==p->x) {
                p1->next=___(29)___;
                free(p2);
                p2=p1->next;
            } else {
                p1=p2;
                p2=p2->next;
            }
        }
        p=___(30)___;
    }
    return head;
}

抱歉!评论已关闭.