TingIU 2020-05-19 09:31 采纳率: 0%
浏览 1268

C语言代码运行问题,为什么编译通过,但是运行时直接结束,无法输入?

#include
#include
#define MAX 1000
//定义哈夫曼树
typedef struct tree
{
int weight;
int parent;
int lchild;
int rchild;
}HTNode,*HuffmanTree;
//定义编码
typedef struct code
{
int bit[MAX];
int start;
}HCNode,*HuffmanCode;
//26个英文字母构造树
void HuffmanTreeing(HTNode HT[MAX])
{
int i,j,s1,s2,x1,x2;
for(i=0;i<51;i++)
{
HT[i].weight=0;
HT[i].parent=0;
HT[i].lchild=0;
HT[i].rchild=0;
}
for(i=0;i<26;i++)
{
printf("请输入26个英文字母的权值:");
scanf("%d",&HT[i].weight);
}
for(i=0;i<25;i++)
{
s1=s2=MAX;
x1=x2=0;
for(j=0;j<26+i;j++)
{
if(HT[j].weight<s1&&HT[j].parent==0)
{
s1=HT[j].weight;
}
x1=j;
}
for(j=0;j<26+i;j++)
{
if(HT[j].weight<s2&&HT[j].parent==0&&j!=x1)
{
s2=HT[j].weight;
}
x2=j;
}
HT[x1].parent=26+i;
HT[x2].parent=26+i;
HT[26+i].weight=HT[x1].weight+HT[x2].weight;
HT[26+i].lchild=x1;
HT[26+i].rchild=x2;
}
}
//编码
void HuffmanCoding(HTNode HT[MAX],HCNode HC[MAX])
{
HCNode cd;
int i,j,c,p;
for(i=0;i<26;i++)
{

cd.start=25;
c=i;
p=HT[c].parent;
while(p!=0)
{
if(HT[p].lchild==c)
cd.bit[cd.start]=0;
else
cd.bit[cd.start]=1;
cd.start--;
c=p;
p=HT[c].parent;
}
for(j=cd.start+1;j<26;j++)
{
HC[i].bit[j]=cd.bit[j];
}
HC[i].start=cd.start;
}
printf("26位字母的编码是:\n");
for(i=0;i<26;i++)
{
printf("%c:","a"+i);
for(j=HC[i].start+1;j<26;j++)
{
printf("%d",HC[i].bit[j]);
}
printf("\n");
}
}
int main()
{
HTNode HT[MAX];
HCNode HC[MAX];
HuffmanTreeing(HT);
HuffmanCoding(HT,HC);
return 0;
}

  • 写回答

1条回答 默认 最新

  • weixin_41790444 2020-05-19 11:18
    关注

    把return 0换成while(true){} 试试

    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作