可能重复:
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系列对我来说真的只是一个健全性检查。
答案 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]);
}
}