}
a2++; a3++; a4++; a5++;
else if(employee1[i].age >= 30&&employee1[i].age < 40) else if(employee1[i].age >= 40&&employee1[i].age < 50) else if(employee1[i].age >= 50&&employee1[i].age <= 60)
printf(\printf(\printf(\printf(\printf(\}
int main( ) {
int m;
struct employee employee1[20];
printf(\scanf(\input(employee1,m); average(employee1,m); agenum(employee1,m); }
10.已有a,b两个链表,每个链表中的结点包括学号,成绩.要求把2个链表合并. 答:
#include
#define LEN sizeof(struct student) typedef struct student {
long num; float fScore;
struct student *next; }stu,*sp; sp creat();
sp insert(sp a,sp b); void print(sp head); int main() {
sp ahead,bhead,abh; int a,b,sum;
printf(\ ahead = creat(); printf(\ bhead = creat();
abh = insert(ahead,bhead); print(abh); system(\ return 0; }
sp creat() {
sp head = NULL,p1,p2; long num = 0; float fScore = 0; int input = 0; while(1) {
input = scanf(\ if(input != 2 || num == 0) break;
p1 = (sp)malloc(LEN); p1->num = num; p1->fScore = fScore; p1->next = NULL; if(head == NULL) head = p1; else
p2->next = p1; p2 = p1; }
return(head); }
sp insert(sp ah,sp bh) {
sp pa = ah,pb = bh,abh = NULL,pab; if(ah == NULL) return bh; if(bh == NULL) return ah;
while(pa != NULL && pb != NULL) {
if(abh == NULL)
if(pa->num < pb->num) {
pab = abh =pa; pa = pa->next; } else {
pab = abh = pb; pb = pb->next; } else
if(pa->num < pb->num) {
pab->next = pa; pab = pa; pa = pa->next; } else {
pab->next=pb; pab=pb; pb=pb->next; }
}
if(pa == NULL) pab->next = pb; else
pab->next = pa;
return(ah); }
void print(sp head) {
sp p; int sum;
for(sum = 0,p = head;p != NULL;p = p->next,sum++); printf(\ p = head;
while(p != NULL) {
printf(\
p=p->next; } }
11.建立一个链表,每个结点包括学号、姓名和年龄。输入一个学号,如果链表中的结点所包含的学号等于此学号,则将此结点删去。 答:
#include
#define LEN sizeof(struct student) struct student {
int num; }; int n;
struct student *creat(void) {
}
struct student *del(struct student *head,int num) {
struct student *p1,*p2; if (head == NULL) {
struct student *head,*p1,*p2; n = 0;
p1 = p2 = (struct student *)malloc(LEN); scanf(\head = NULL; {
n = n+1; }
p2->next = NULL; return(head);
if(n == 1) head = p1; else p2->next = p1;
p1 = (struct student *)malloc(LEN);
scanf(\char name[20]; int age;
struct student *next;
while(p1->num != 0)
p2 = p1;
printf(\goto end;
}
for(p1 = head;p1->next != NULL;p1 = p1->next) { } end: }
int main() {
/*return(head); */ p2 = p1;
if(num == p1->num)
{ }
if (p1 == head)
head = p1->next; p2->next = p1->next; else
printf(\n = n-1;
else p2 = p1;
}
struct student *head; int num;
printf(\head = creat();
printf(\scanf(\head = del(head,num);
思考题
用结构类型编写一个程序,完成生命游戏的功能:在一个由方格组成的矩形阵列上,每个方格可包含一个机体。每个方格和8个方格相邻,我们用occ(k)表示与方格k相邻的包含机体的方格数。各机体生死的规则是:
如果2≤occ(k)≤3,那么在方格k中的机体继续活下去;否则该机体死亡。 如果occ(k)=3,那么在方格k中诞生一个新机体。
写一个程序,读入初始机体配置,按规则计算一系列生成过程,并打印出每一时间的配置情况。为处理方便,不考虑矩形阵列最外围方格中机体的生死问题,但它们对临近方格中机体的生成起作用。 答:
/*lifegame.c*/