Domino计划问题

时间:2014-03-04 14:30:28

标签: c arrays pointers struct switch-statement

我正在努力让这个代码快速完成课程,因为我已经写了超过10个小时,我只是无法让它工作。基本上它是一个多米诺程序,你输入多米诺骨牌的第一个数字,第二个数字,然后一个标志(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");
}

这里的原始代码无法解决我所有的功能问题

#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");

}

2 个答案:

答案 0 :(得分:0)

至于第一个问题 - 你将函数指针传递给scant函数,我不明白你想要实现的是什么。 只需给它input变量即可。

答案 1 :(得分:0)

你的问题是你告诉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(DomNum1, DomNum2)

看起来应该是这样的:

void addDomino(int DomNum1, int DomNum2)

在顶部,你有这个:

void addDomino()

它应该是这样的:

void addDomino(int, int)

这样您就可以从addDomino()内拨打main()