int main() { int num;//元素个数 printf("请输入元素个数:"); scanf("%d",&num); getchar(); // 读取并丢弃回车符 char letter[num];//元素名称 float value[num];//元素权值 printf("请分别输入元素名称和其权值:\n"); printf("名称,权值\n"); for(int i=0;i<num;i++) { scanf("%c,%f",&letter[i],&value[i]); getchar(); // 读取并丢弃回车符 } // CreatHuffmanTree(HT,value,num); // HuffmanTreecode(HT,num,letter); return 0; }循环为啥执行不完
时间: 2024-03-05 19:47:53 浏览: 53
C语言判断一个数是否为素数方法解析
5星 · 资源好评率100%
循环可能执行不完的原因在于输入元素名称和权值时,scanf函数会读取输入缓冲区中的回车符,从而导致后面的输入无法正常进行。因此,可以在scanf函数之前,使用getchar函数读取并丢弃输入缓冲区中的回车符。
修改后的代码如下:
```
int main() {
int num;//元素个数
printf("请输入元素个数:");
scanf("%d",&num);
getchar(); // 读取并丢弃回车符
char letter[num];//元素名称
float value[num];//元素权值
printf("请分别输入元素名称和其权值:\n");
printf("名称,权值\n");
for(int i=0;i<num;i++)
{
scanf("%c,%f",&letter[i],&value[i]);
getchar(); // 读取并丢弃回车符
}
// CreatHuffmanTree(HT,value,num);
// HuffmanTreecode(HT,num,letter);
return 0;
}
```
阅读全文