小羔羊964 2023-11-18 23:02 采纳率: 88.9%
浏览 2
已结题

为什么输出一个乱码,求解答


#include <stdio.h>
#include "stdlib.h"
#define queuesize 100
typedef int datatype;
typedef struct cirqueue{
    datatype data[queuesize];
    int frount;
    int rear;
    int count;
}Cirqueue;//定义
Cirqueue *Q;
void Initqueue(Cirqueue *Q){
    Q->rear=Q->frount=0;
    Q->count=0;
}//置队空
int Queueempty(Cirqueue *Q){
    return Q->count==0;
}//判队空
int Queuefull(Cirqueue *Q){
    return Q->count==queuesize;
}//判队满
int Enqueue(Cirqueue *Q,datatype x){
    if(Queuefull(Q)){
        puts("队满");
        return 0;
    }
    Q->count++;
    Q->data[Q->rear]=x;
    Q->rear=(Q->rear+1)%queuesize;
    return 1;
}//入队
void Printqueue(Cirqueue *Q){
    int i=Q->frount;
    if(Q->count==0){
        puts("队空");
    }
    while(i!=Q->rear){
        printf("%c",Q->data[i]);
        i=(i+1)%queuesize;
    }
int main() {
    Cirqueue q;
    Initqueue(&q);
    Enqueue(&q,7);
    Printqueue(&q);
    return 0;
}
为什么输出是个乱码啊    
  • 写回答

3条回答 默认 最新

  • 柯本 2023-11-18 23:10
    关注

    首先,你的程序中在int main()前少了个},程序无法编译的
    然后,你的datatype为int,且你入队时数据为7,你的输出用%c当然是不对了,要用%d的

     printf("%c",Q->data[i]);
    为
     printf("%d",Q->data[i]);
    

    就可以了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月29日
  • 已采纳回答 11月29日
  • 创建了问题 11月18日