问题 单项选择题

假定系统日期是1998年12月20日, 有如下命令:Nz(YEAR(DATE())-1900)%100,执行后N的值应为 ______。

A.1998

B.98

C.20

D.12

答案

参考答案:B

解析:[知识点] 常用函数;日期时间函数[评析] DATE返回当前系统日期,函数值为日期型。 YEAR是从指定的日期表达式或日期时间表达式中返回年份。 %为求余运算。余数的正负号与除数—致。 当表达式中出现乘、除和求余运算时,它们具有相同的优先级。 (YEAR(DATE())-1900)%100=(1998-1900)%100=98。

解答题
问答题

【说明】
以下【C程序】完成从指定数据文件中读入职工的工号和他完成产品个数的数据信息,对同一职工多次完成的产品个数进行累计,最后按如表5-11所示的格式输出职工完成产品数量的名次(ORDER),该名次是按每位职工完成的产品数量(QUANTITY)排序,之后是同一名次的职工人数(COUNT)和他们的职工号(NUMBER,同一名次的职工号以从小到大的顺序输出)。
表5-11 职工完成产品数量名次输出格式表

ORDERQUANTITYCOUNTNUMBER
 1 398 3 10 20 21
 4 256 2 3 5
 6 192 1 9
 7 167 2 11 14
 … … … …
以下【C程序】采用链表结构存储有关信息,链表中的每个表元对应一位职工。在数据输入的同时,形成一个有序链表(按完成的产品数量和工号排序)。当一个职工有新的数据输入,在累计他的完成数量时会改变原来链表的有序性,为此应对链表进行删除、查找和插入等操作。
【C程序】
#include<stdio. h>
typedef struct ele{
int no, q;
struct ele * next;
}elem;
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 I=NULL){
u=h→*next; free(h); h=u;
}
}
}
elem * proc(FILE *fp){
int n, m; elem *u, *v, *p, *base;
base=NULL;
fscanf(fp, "%d’, &m);
while(!feof(fp)){
fscanf(fp, ’%d’, &m);
for(v=base; v!=NULL && v->no !=n; u=v, v=v->next);
if( (1) )
if( (2) )
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( (3) )break;
else {
u=p; p=p->next;
}
if( (4) )
base=v;
else
u->next=v;
(5) ;
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; (6) ;count++, v=v->next);
printf("%4d%9d%6d", order, u->q, count);
order+=count;
for(; (7) ;printf("%4d", u->no), u=u->next);
printf("\n");
}
}