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

📄 4-4-3.c

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

#include <stdio.h>
#include <malloc.h>
typedef struct ele {
		int no,q;
		struct ele * next;
} elem;



elem * proc( FILE *fp ) {
int n, m; elem *u, *v, *p, *base;
base = NULL;
fscanf( fp, "%d", &n );
while ( !feof(fp) ) {
fscanf( fp, "%d", &m );
for ( v = base; v != NULL && v->no != n; u = v, v = v->next);
if (v != NULL) {
if (v == base) base = v->next;
else u->next = v->next;
v->q += m;
}
else {v = ( elem * ) malloc( sizeof( elem ));
v->no = n;
v->q = m;
}
p = base;
while ( p != NULL )
if (p->q < v->q || p->q == v->q && p->no > n) break ;
else {
u = p; p = p->next;
}
if ( p == base) base = v;
else u->next = v;
v->next  =p;
fscanf( fp, "%d",&n );
}
return base;
}

output( elem * head ) {
int count,order;elem *u, *v;
printf( "ORDER QUANTITY COUNT NUMBER\n" );
u = head; order = 1;
while ( u != NULL ) {
for ( count = 1,v = u->next;v != NULL && v->q == u->q;count++,v = v->next );
printf( "%4d%9d%6d",order,u->q,count );
order += count;
for(; count-- != 0 ;printf( "%4d",u->no),u=u->next);
printf( "\n");
}
}

main( int argc, char **argv) {
FILE *fp; elem *h, *u, *proc();
if ( argc == 2 && ( fp = fopen( argv[1],"r" )) != NULL ){
h = proc(fp);
fclose (fp);
output(h);
while (h != NULL) { 
u = h->next; free(h); h = u;
}
}
}

⌨️ 快捷键说明

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