没人爱的小白 2018-10-12 03:50 采纳率: 0%
浏览 2929

VS写C代码出现c2660错误,函数不接受4个参数,怎样解决?

//mian函数
#include "QUEUE.h"
#include "STACK.h"
#define _CRT_SECURE_NO_WARNINGS 0
void main()
{
//3-22,队列
SeqCQueue name;
char item;
DataType x;
FILE *fp;
if ((fp = fopen("name.dat", "r+")) == NULL)
{
printf("不能打开文件name.dat!");
exit(0);
}
QueueInitiate(&name);//初始化
while (!feof(fp))
{
fscanf(fp, "%c", &item);
QueueAppend(&name, (int)item);//进队列
}
printf("出队列为:");
while (QueueDelete(&name, &x))
{
if (name.rear == name.front)
break;
item = (char)x;
printf("%c", item);
}
printf("\n");

//实验题目2
SeqStack number;
if ((fp = fopen("number.txt", "r+")) == NULL)
{
    printf("不能打开文件name.dat!");
    exit(0);
}
StackInitiate(&number);
fscanf(fp, "%d", &x);
exchange(&number, x);

}
//QUEUE.h
#pragma once
#include
#include
#define MaxQueueSize 1000
#define DataType int
//顺序队列,少用一个存储单元来判空跟满

typedef struct
{
DataType queue[MaxQueueSize];
int rear; //对尾指针
int front; //对头指针
}SeqCQueue;

//1.初始化
/*
1.对尾置0
2.对头置0
*/
//无返回值
void QueueInitiate(SeqCQueue *Q)
{
Q->rear = 0;
Q->front = 0;
}

//2.非空否
/*
1.若rear==front,队满
*/
//空返回0;非空返回1;
int QueueNotEmpty(SeqCQueue Q)
{
if (Q.rear == Q.front)
return 0;
else
return 1;
}

//3.入队列
/*
1.排除队满
2.将x插入队尾
3.对尾指示器加1
*/
//成功返回1;失败返回0;
int QueueAppend(SeqCQueue *Q, DataType x)
{
if ((Q->rear + 1) % MaxQueueSize == Q->front)
{
printf("队列已满无法插入!");
return 0;
}
else
{
Q->queue[Q->rear] = x;
Q->rear = (Q->rear + 1) % MaxQueueSize;//对尾指示器加1
return 1;
}
}

//4.出队列
/*
1.排除队空
2.取出队头元素
3.队头指示器加1
*/
//成功返回1;失败返回0;
int QueueDelete(SeqCQueue *Q, DataType *d)
{
if (Q->rear == Q->front)
{
printf("队列已空无数据元素出队列!\n!");
return 0;
}
else
{
*d = Q->queue[Q->front];
Q->front = (Q->front + 1) % MaxQueueSize;//队头指示器加1
return 1;
}
}
//STACK.h
#pragma once
#include
#include
#define DataType int
#define MaxStackSize 1000

typedef struct
{
DataType stack[MaxStackSize];
int top;
}SeqStack;

//1.初始化
void StackInitiate(SeqStack *s)
{
s->top = 0;
}

//2.非空否
int StackNotEmpty(SeqStack s)
{
if (s.top <= 0)
return 0;
else
return 1;
}

//3.入栈
int StackPush(SeqStack *s, DataType x)
{
if (s->top >= MaxStackSize)
{
printf("堆栈已满无法插入!");
return 0;
}
else
{
s->stack[s->top] = x;
s->top++;
return 1;
}
}

//4.出栈
int StackPop(SeqStack *s, DataType *d)
{
if (s->top <= 0)
{
printf("堆栈已空无数据元素出栈!");
return 0;
}
else
{
s->top--;
*d = s->stack[s->top];
return 1;
}
}

//5.取栈顶数据元素
int StackTop(SeqStack s, DataType *d)
{
if (s.top <= 0)
{
printf("堆栈已空!");
return 0;
}
else
{
*d = s.stack[s.top - 1];
return 1;
}
}

//6.10进制转为2进制
/*
1.该数对2整除,若商为0结束while循环
2.该数对2求余
3.进栈
4.结束后出栈
*/
//没返回值
void exchange(SeqStack *d, int item)
{
int flag = 0;
while (item != 0)
{
flag = item % 2;
StackPush(d, flag);
item = item / 2;
}
printf("转为二进制为:");
while (d->top != 0)
{
StackPop(d, &flag);
printf("%d", flag);
}
}

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-10-12 03:57
    关注

    测试了下,可以通过编译。不知道你说的错误信息完整的是什么,哪里看到的。

    另外你程序一上来就是打开name.dat
    这个文件内容是否正确,检查下。

    评论

报告相同问题?

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?