程序头定义的NUM在main函数里输出乱码是因为什么
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 6
typedef struct node
{
char num[15];
char name[10];
float price;
}ElemType;
typedef ElemType *Triplet;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
static int NUM=0;
void Print(Triplet);
Status InitTriplet(Triplet *T)
{
int n=1;
char str1[15]="0";
char str2[15]="0";
(*T)=(ElemType*)malloc(MAX*sizeof(ElemType));
srand ((unsigned)time(NULL));
if((*T)==NULL)
return OVERFLOW;
printf("请输入图书的书号,书名和价格(数据之间用空格分隔)");
scanf("%14s%9s%f",&(*T)[n].num[0],&(*T)[n].name[0],&(*T)[n].price);
while(strcmp((*T)[n].num,str1)!=0||strcmp((*T)[n].name,str2)!=0||(*T)[n].price!=0){
n++;
NUM++;
printf("请输入图书的书号,书名和价格(数据之间用空格分隔)");
scanf("%14s%9s%f",&(*T)[n].num[0],&(*T)[n].name[0],&(*T)[n].price);
}
return OK;
}
Status DestroyTriplet(Triplet T)
{
free(T);
T=NULL;
return OK;
}
void Descending(Triplet T)
{
float jiage;
int i,j;
for(i=1;i<=NUM-1;i++)
for(j=1;j<=NUM-i;j++)
if(T[j+1].price>T[j].price)
{
jiage=T[j].price;
T[j].price=T[j+1].price;
T[j+1].price=jiage;
}
}
void Pricemodify(Triplet T)
{
int i;
float sum,average;
sum=0;
average=0;
for(i=1;i<=NUM;i++)
{
sum+=T[i].price;
}
average=sum/(NUM*1.00);
printf("%.2f",average);
for(i=1;i<=NUM;i++)
{
if(T[i].price<average)
T[i].price+=T[i].price*0.2;
else T[i].price+=T[i].price*0.1;
}
}
void Print(Triplet T)
{
int i;
for(i=1;i<=NUM;i++)
{
printf("%14s %9s %.2f",T[i].num,T[i].name,T[i].price);
printf("\n");
}
}
void main()
{
Triplet T=NULL;
ElemType e;
int select;
printf("输入三个数,建立一个三元组:\n");
if(InitTriplet(&T)==OVERFLOW)
printf("分配失败,退出程序!");
else
do{
printf("\n****************************\n");
printf("****\t1:打印图书信息\t\t\t****\n");
printf("****\t2:打印按价格降序后的图书信息\t\t\t****\n");
printf("****\t3:打印价格按平均价格修改后的图书信息\t\t\t****\n");
printf("****\t0:结束\t\t\t****\n");
printf("\n****************************\n");
scanf("%d",&select);
switch (select)
{
case 1:
printf("图书信息表为:\n");
printf("%d",&NUM);
printf("\n");
Print(T);
break;
case 2:
printf("按价格降序排列后的图书信息表为:\n");
Descending(T);
Print(T);
break;
case 3:
printf("价格按平均价格修改后的图书信息为:\n");
Pricemodify(T);
Print(T);
break;
case 0:
printf("操作结束!\n");
break;
default:
printf("输入选择错误!\n");
}
}while(select!=0);
DestroyTriplet(T);
}