页码
程 序
200 打印输出身份证结构中身份证号码和姓名
200 建立一个动态分配的POINT结构
205 词频统计

返回 总目录

例:打印输出身份证结构中身份证号码和姓名
 
void prtIDCard0(IDCARD ic) {
    printf("%s\n", ic.id_number);
    printf("%s\n\n", ic.name);
}

或者定义下面的函数,调用时应该传身份证记录的地址:

void prtIDCard(IDCARD *icp) {
    printf("%s\n", icp->id_number);
    printf("%s\n\n", icp->name);
}

例:建立一个动态分配的 POINT 结构

POINT *mkpoint2(double x, double y) {
    POINT *p;
    p = (POINT *)malloc(sizeof(POINT));
    p->x = x;
    p->y = y;
    return p;
}

例:词频统计

#include <string.h> /* 程序中需要做字符串复制和比较 */
#include <stdlib.h> /* 程序中要做动态存储分配 */

#define MAXLEN 20

typedef struct node NODE, *LINK; /* 类型定义 */

struct node {
    char word[MAXLEN];
    int count;
    LINK next;
};

int getword(char w[], int limit); /* 有关函数的原型说明 */
LINK addword(LINK l, char w[]);
void printwords(LINK l);

LINK list = NULL; /* 全局变量,作为表的头指针 */
char word[MAXLEN]; /* 读入用的临时字符数组 */

int main (void) {
    while (getword(word, MAXLEN) != 0)
        if (isalpha(word[0]))
            list = addword(list, word);
    printwords(list);
    return 0;
}
 
void printwords(LINK p) {
    for ( ; p != NULL; p = p->next)
        printf("%d %s\n", p->count, p->word);
}
 
LINK mknode(char w[]) {
    LINK p = (LINK)malloc(sizeof(NODE));
    if (p != NULL) {
        strncpy(p->word, w, MAXLEN);
        p->count = 1;
        p->next = NULL;
    }
    return p;
}

LINK addword(LINK p, char w[]) {
    if (p != NULL) {
        if(strcmp(p->word, w) == 0)
            p->count++;
        else
            p->next = addword(p->next, w);
        return p;
    }
    else
        return mknode(w);
}