C程序需要帮助修复我的代码(数组的概念)

时间:2011-11-11 22:00:15

标签: c

  

可能重复:
  C programming: Occupying Cells
  C programming typing out a list that's modded out by 10

我已经在这个代码上工作了一个星期,并且没有取得任何成功。该程序应该要求用户输入多个单元格。然后提示用户他/她想要占用哪个小区。程序然后放一个'?'在所示的被占用细胞下面。我只能使用基础知识,所以没有任何技巧或任何我不应该知道的复杂功能。

我的程序的问题是,当用户输入5和9被占用时,它只是打印“????????????????????????? 。例如,假设我要输入10个单元格并希望占用5和9,那么屏幕应该如下所示:

0123456789
     ?   ?

这是我的全部工作:

# include <stdio.h>
# define LENGTH 80

void display(int data[], int length);

int main()
{
    int input=0,i;
    int data[80];
    int index = 0;
    char occupied = '?';
    int cells,j,time;

    printf("Enter the number of cells:");
    scanf("%d", &cells);
    printf("Enter the number of cells you want occupied. The maximum number is 80. Type -1 to stop.:");
    scanf("%d", &input);
    printf("The original index is: %d",index);
    printf("\n");
    data[index] = input;
    index++;
    printf("The new index is: %d", index);
    printf("\n");

    for(i = 0; i < cells; i++) {
        printf("%d", i%10);
    }
    display(data, LENGTH);

}

void display(int data[], int length)
{
    int input=0,i;
    int index = 0;
    int cells,time;
    char occupied;


    if(input!=-1 && input <= 80) {
        data[index] = 1;
        occupied = '?';
        (char) data[index] = occupied;
    }
    else {
        data[index] = 0;
        occupied = ' ';
        (char) data[index] = occupied;
    }

    printf("\n");

    for(i = 0; i < length; i++){
        printf("%c", data[index]);
    }
}

关于索引的printf和scanf系列对我来说真的只是一个健全性检查。

1 个答案:

答案 0 :(得分:0)

这里有很多错误。首先,您可以在一个实例中扫描一个数组。使用循环。其次,您正在错误地调用display()。使用细胞,而不是长度。我在这里有一个工作代码。

# include <stdio.h>

int main()
{
    int input=0,i;
    char data[80];
    int cells;
    int occupyMax = 0;
    int n = 0;

    printf("Enter the number of cells:");
    scanf("%d", &cells);

    printf("Enter number of cells you want occupied. The maximum number is 80:");
    scanf("%d", &occupyMax);

    // Ensure that # of occupied cells is lesser than max.
    if (occupyMax> cells)
    {
        printf("Error!");
        return;
    }

    // Init data to blank cells.
    for(i=0;i<80;i++)
    {
        data[i]=' ';
    }

    for( n = 0; n < occupyMax; n++) 
    {
        printf("Enter occupy cell number(Numbering starts at 0)\n");
        scanf("%d", &input );
        data[input] = '?';
    }

    // Display
    for(i = 0; i < cells; i++) 
    {
        printf("%d", i%10);
    }
    printf("\n");
    for(i = 0; i < cells; i++) 
    {
        printf("%c", data[i]);
    }
}