Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Domino程序问题_C_Arrays_Pointers_Struct_Switch Statement - Fatal编程技术网

C Domino程序问题

C Domino程序问题,c,arrays,pointers,struct,switch-statement,C,Arrays,Pointers,Struct,Switch Statement,我正在努力让这段代码在课堂上快速完成,因为我已经写了10个小时了,我就是不能让它工作。本质上,它是一个domino程序,您在其中输入domino的第一个数字、第二个数字,然后输入一个标志(y是标准的,当骰子被移除时,必须切换到n)。目前,我收到以下错误: 1.警告:格式“%c”要求参数类型为“char”,但参数2的类型为“void()()” 2.错误:调用的对象“print”不是函数 3.错误:“Domino”之前应有表达式 我在网上坐了几个小时研究这个问题,我知道我遗漏了一些小东西。如蒙协助,

我正在努力让这段代码在课堂上快速完成,因为我已经写了10个小时了,我就是不能让它工作。本质上,它是一个domino程序,您在其中输入domino的第一个数字、第二个数字,然后输入一个标志(y是标准的,当骰子被移除时,必须切换到n)。目前,我收到以下错误: 1.警告:格式“%c”要求参数类型为“char”,但参数2的类型为“void()()” 2.错误:调用的对象“print”不是函数 3.错误:“Domino”之前应有表达式

我在网上坐了几个小时研究这个问题,我知道我遗漏了一些小东西。如蒙协助,将不胜感激

 #include <stdio.h>
#include <stdlib.h>

int getIndex();
void addDomino();
void removeDomino();
void print();
void quit();

typedef struct Domino{
int * i;
int * x;
int * y;
}Domino;

int main(int argc, char * argv[])
{
    int NumDom, DomNum1, DomNum2, DomIndex, Index, input;
    char MainMenu;

//Startup
    printf("Enter the max number of dominos:");
    scanf("%d",&NumDom);
    void * add = malloc(size(Domino)*1);
    void * remove = malloc(offset(Domino)*1);
    void * print = malloc(sizeof(Domino)*10);
    //int domino[NumDom][3];
    //int dom[0][3] = {Index, DomNum1, DomNum2};

    //Main Menu
   // printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
    // printf(":");
    // scanf("%s",&MainMenu);

    printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
    scanf("%c%c%c%c \n", addDomino, removeDomino, print, quit);
    switch(input)
    {
    case 'a':
        addDomino();
        break;
    case 'r':
        removeDomino();
        break;
    case 'p':
        print();
        break;
    case 'q':
        quit();
        break;
    printf(":\n");
 }       
}
//Add
void addDomino(DomNum1, DomNum2)
{
    printf("Enter number 1\n");
    printf(":");
    scanf("%d", &DomNum1);
    printf("Enter number 2\n");
    printf(":");
    scanf("%d", &DomNum2);
}

    //Print
void printDomino(DomNum1, DomNum2)
{
    printf("Printing Dominos\n");
    printf("Domino # (%d,%d)\n",DomNum1,DomNum2);
}    
    //Remove
void removeDomino(DomIndex)
{
    printf("Enter the index:%d", DomIndex);
    scanf("%d", &DomIndex);
}

    //Quit
void quit()
{
    printf("All done\n");
}
#包括
#包括
int getIndex();
void addDomino();
void removeDomino();
作废打印();
无效退出();
typedef结构Domino{
int*i;
int*x;
int*y;
}多米诺骨牌;
int main(int argc,char*argv[])
{
int NumDom、DomNum1、DomNum2、DomIndex、索引、输入;
字符主菜单;
//启动
printf(“输入多米诺骨牌的最大数量:”);
scanf(“%d”和NumDom);
void*add=malloc(大小(Domino)*1);
void*remove=malloc(偏移量(Domino)*1);
void*print=malloc(sizeof(Domino)*10);
//int-domino[NumDom][3];
//int dom[0][3]={Index,DomNum1,DomNum2};
//主菜单
//printf(“输入(p)打印(a)添加(r)删除和(q)退出\n”);
//printf(“:”);
//scanf(“%s”,主菜单(&M);
printf(“输入(p)打印(a)添加(r)删除和(q)退出\n”);
scanf(“%c%c%c%c\n”、addDomino、removeDomino、print、quit);
开关(输入)
{
案例“a”:
addDomino();
打破
案例“r”:
移除多米诺();
打破
案例“p”:
打印();
打破
案例‘q’:
退出();
打破
printf(“:\n”);
}       
}
//加
void addDomino(DomNum1,DomNum2)
{
printf(“输入数字1\n”);
printf(“:”);
scanf(“%d”&DomNum1);
printf(“输入数字2\n”);
printf(“:”);
scanf(“%d”&DomNum2);
}
//印刷品
void printDomino(DomNum1,DomNum2)
{
printf(“打印多米诺骨牌”);
printf(“Domino#(%d,%d)\n”,DomNum1,DomNum2);
}    
//除去
已删除的无效项(多明迪斯)
{
printf(“输入索引:%d”,DomIndex);
scanf(“%d”&DomIndex);
}
//退出
作废退出()
{
printf(“全部完成”\n);
}
这是一段原始代码,没有我所有的函数问题

#include <stdio.h>
#include <stdlib.h>

typedef struct Domino{
    int * i;
    int * x;
    int * y;
}Domino;

int main(int argc, const char * argv[])
{
    int NumDom, DomNum1, DomNum2, DomIndex, Index;
    char MainMenu;

//Startup
    printf("Enter the max number of dominos:");
    scanf("%d",&NumDom);

//int domino[NumDom][3];
//int dom[0][3] = {Index, DomNum1, DomNum2};

//Main Menu
printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
printf(":");
scanf("%s",&MainMenu);

//Add
printf("Enter number 1\n");
printf(":");
scanf("%d", &DomNum1);
printf("Enter number 2\n");
printf(":");
scanf("%d", &DomNum2);

//Print
printf("Printing Dominos\n");
printf("Domino # (%d,%d)\n", DomNum1, DomNum2);

//Remove
printf("Enter the index:5");
scanf("%d", &DomIndex);

//Quit
printf("All done\n");

}
#包括
#包括
typedef结构Domino{
int*i;
int*x;
int*y;
}多米诺骨牌;
int main(int argc,const char*argv[]
{
int NumDom、DomNum1、DomNum2、DomIndex、Index;
字符主菜单;
//启动
printf(“输入多米诺骨牌的最大数量:”);
scanf(“%d”和NumDom);
//int-domino[NumDom][3];
//int dom[0][3]={Index,DomNum1,DomNum2};
//主菜单
printf(“输入(p)打印(a)添加(r)删除和(q)退出\n”);
printf(“:”);
scanf(“%s”,主菜单(&M);
//加
printf(“输入数字1\n”);
printf(“:”);
scanf(“%d”&DomNum1);
printf(“输入数字2\n”);
printf(“:”);
scanf(“%d”&DomNum2);
//印刷品
printf(“打印多米诺骨牌”);
printf(“Domino#(%d,%d)\n”,DomNum1,DomNum2);
//除去
printf(“输入索引:5”);
scanf(“%d”&DomIndex);
//退出
printf(“全部完成”\n);
}

至于第一个问题,您正在将函数指针传递给scant函数,我不明白您想要实现什么。
只要给它
input
变量就可以了

您的问题是,您告诉
scanf
扫描一个字符,但您没有给它一个字符来输入值。例如,这:

printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
scanf("%c%c%c%c \n", addDomino, removeDomino, print, quit);
毫无意义。您要求用户选择一个命令,但要求输入4个字符。你只需要这样的东西:

char command;
printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
scanf("%c", &command);
void addDomino(int, int)
您还没有在函数中键入参数。例如:

void addDomino(DomNum1, DomNum2)
看起来应该是这样的:

void addDomino(int DomNum1, int DomNum2)
在顶部,你有这样一个:

void addDomino()
应该是这样的:

char command;
printf("Enter (p) to print (a) to add (r) to remove and (q) to quit\n");
scanf("%c", &command);
void addDomino(int, int)

这将允许您从
main()

内部调用
addDomino()
,您需要一本基本的C语言书。函数的定义有参数,但声明和调用没有参数。是否应该有参数?您应该为它们传递值吗?编辑:而且,您的参数似乎没有数据类型:例如,您是否应该有
removeDomino(int-domIndex)
?我强烈建议您访问您的教授或助教,获得一些额外的帮助,了解基本语法和编程概念。从一个比这个小得多的程序开始,让它工作起来,然后再试一次。我曾多次向我的教授寻求帮助,但他没有给出任何有用的建议。我也试过我的一些编程朋友。我可以处理基本的东西,但这是先进的是远远超出我。并且不能等待这个程序:(3小时后到期。最后这里是应该发生的事情的参数。这个任务是从多米诺骨牌数组中添加和删除多米诺骨牌。你的结构将是一个多米诺骨牌。它将包含3个字段(已用、number1和number2)。使用的字段将保留Y或N。如果使用的是Y,则数字1和数字2是domino的两个数字。您的主要功能将仅分配多米诺骨牌数组并读取要执行的操作的选项。操作包括打印、添加、删除和退出(退出程序)。getIndex函数将获取要删除的索引。addDomino函数将找到一个空闲位置,然后为该domino读入number1和number2。它还将该domino设置为正在使用(used='Y')。removeDomino函数将删除位置索引处的domino。这可以通过将该索引的used标志设置为“N”来完成;打印功能将打印出所有使用过的多米诺骨牌(使用字段=Y)。我的教授非常严格,所以我试图让它完美地工作,但我在这方面工作到了很晚,感觉我在圈里跑来跑去,好吧,这是有道理的!谢谢:)