⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4-4-9.c

📁 2005软件工程师考试下午编程题源代码
💻 C
字号:
/*中国系统分析员顾问团,http://www.csai.cn*/
/*程序员下午考试指南书籍源码*/

#include <stdio.h>
#include <malloc.h>
typedef struct ELE{
int no;	/*职工工号*/
int num;	/*完成的产品总数*/
struct ELE *next;
}ELEM;

ELEM *proc(FILE *fp){
int m,n;
ELEM  *u,*v,*p,*base;
base = NULL;	/*base是链表的首指针*/
while(fscanf(fp,"%d%d",&n,&m) == 2){ /*链表中是否存在工号为n的结点*/
for(v = base; v != NULL && v->no != n; u = v,v = v->next);
if(v != NULL) {/*若链表中已有工号为n的结点v,则将其从链表中脱钩*/
if(v == base ) base = v->next;
else  u->next = v->next;
v->num += m;	/*累加工号为n的职工完成的产品数量*/
}
else {	/*创建一个工号为n的结点*/
v = (ELEM *)malloc(sizeof(ELEM));
v->no = n; v->num = m;
}
/* 寻找结点v的插入位置*/
p = base;
while(p != NULL)
if(v->num > p->num || v->num == p->num && v->no < p->no) break;
else {
u = p;  
p = p->next;
}
/* 将结点v插入链表*/
if(p == base) base = v;
else  u->next = v;
v->next = p;
}
return base;
}

main(){
	FILE *fp;
	ELEM *head;
	fp=fopen("work.txt","r");
	if (fp) 
		{head=proc(fp);
		printf("   工号   完成产品数量\n");
		}
	else
		printf("Can't open file!");
	
	while(head)
	{
		printf(" %5d ",head->no);
		printf(" %10d \n",head->num);
		head=head->next;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -