标题:请问为什么输出队的第一个是问号
只看楼主
魂梦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-4-9
结帖率:0
已结贴  问题点数:20 回复次数:7 
请问为什么输出队的第一个是问号
#include<stdio.h>
#include<malloc.h>
#define MS 10
typedef  int  ET;
typedef struct
{
    ET data[MS];
    int front,rear,count;
}SqQueue;
void CS(SqQueue*&q)//初始化一个队
{
    q=(SqQueue*)malloc(MS*sizeof(SqQueue));//给队空间
    q->front =q->rear=0;//头指针等于尾指针,初始化。
    q->count=0;//队的长度
}
void XH(SqQueue*&q)//初始化
{
    free(q);
}
bool KD(SqQueue*q)//判断队是否为空
{
    if(q->front =q->rear)
    {
        printf("队为空。\n");
        return false;
    }
    else
    {
        printf("队不为空。\n");   
        return 0;
    }
}
bool JD(SqQueue*&q,ET e)//进队
{
    if((q->rear+1)%MS==q->front)//判断队满溢出情况
        return false;
    q->rear=(q->rear+1)%MS;
    q->data[q->rear]=e;
    return 0;
        
}
bool CD(SqQueue*q,ET e)//出队
{
    if(q->front==q->rear)//对空
        return false;
    else
        q->front=(q->front+1)%MS;
        e=q->data[q->front];
        return 0;
}
bool SC(SqQueue*q)//输出元素
{
    printf("队中元素为:\n");
    for(int i=q->front;i<=q->rear;i++)
    {
    printf("%c\n",q->data[i]);
    }
    return false;
}
void main()
{
    ET e;
    SqQueue*L;
    CS(L);
    KD(L);
    JD(L,'a');
    JD(L,'b');
    JD(L,'c');
    JD(L,'d');
    JD(L,'e');
    JD(L,'f');
    SC(L);
    CD(L,e);
    SC(L);
}
输出后第一个是问号。
搜索更多相关主题的帖子: printf 输出 return bool data 
2021-04-09 18:46
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:10 
乍一看下光语法问题不少呢。
void CS(SqQueue *&q)这里的*&q多了个&,*缺少空格前

q=(SqQueue*)malloc(MS*sizeof(SqQueue));//给队空间
你用data存数据,一直操作的都是L里的data数组,这分配空间多余了。

KD里的if少个=

CD(L,e);这里的e没有初始化
2021-04-09 20:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
到底是C代码,还是C++代码?四不像
2021-04-10 00:53
魂梦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-4-9
得分:0 
回复 2楼 apull
谢谢,我这边改一下。
2021-04-13 16:24
魂梦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-4-9
得分:0 
回复 3楼 rjsp
c语言。c++我还没有学到。
2021-04-13 16:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 5楼 魂梦
“请问为什么输出队的第一个是问号” ------ 既然能运行,那说明你的代码编译成功了;
“void CS(SqQueue*&q)” ------ 可这明明不是C的语法,你用C编译器应该无法编译呀。
2021-04-14 08:29
魂梦
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2021-4-9
得分:0 
回复 6楼 rjsp
我也很奇怪,之前别的的也是莫名其妙的运行起来了。
2021-04-18 15:00
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
回复 7楼 魂梦
那只说明你编译代码用的不是C编译器,而是C++编译器。
2021-04-19 08:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505389-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.456940 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved