我正在用C语言编写一个程序,这是一个名为Thambola的印度游戏(类似于Bingo)。 在该游戏中,用户获得3x9票,并且计算机要求用户输入第二个节目(这从1-90中随机选择数字)所选择的号码。如果票证中存在输入的号码,则该号码应更改为“x”,表示该号码已被删除。我需要帮助。如何用'x'替换已打印的数字?我读了这个C - Remove and replace printed items,但它有帮助,因为我有27个数字要改变。请帮助我。以下是代码的一部分:
int number,i,j;
const char x='x';
printf("\nEnter the number:");
scanf("%d",&number); // number entered by the user from the Picker
for (i=0;i<3;i++)
for (j=0;j<9;j++)
{if (ticket[i][j]==number)
ticket[i][j]=x;
printf("%d",ticket[i][j]); //if the input number is present in the ticket, this should change it to 'x
}
getchar();
}
答案 0 :(得分:0)
您的代码段的主要问题是为变量赋值的逻辑。
正如任何人都可以看到的,你有一个整数数组,但是你想为它的一个元素分配一个char。实际上你可以通过强制转换来实现,但结果将是'x'的ASCII值。
{if (ticket[i][j]==number) // number is an integer
ticket[i][j]=x; // x is a char
由于'x'的ASCII值为120,超出了故障单中可能的数字范围,因此您可以安全地将'x'转换为其整数值,然后将其分配给其数组元素。在打印中,如果您看到120打印'x'。
在char的整数值在其他可能的整数值范围内的情况下,选择另一个整数值并在逻辑流程中将此值视为“x”(例如,选择0作为相应的整数,如果为0打印'x')。
您可以使用ncurses或只是打印票证状态,然后在打印已修改的票证输出之前清除屏幕。
答案 1 :(得分:0)
public class sample1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<int[]> outer = new ArrayList<int[]>(9);
List<int[]> inner = new ArrayList<int[]>(9);
int[][] final_arr = new int[9][18];
int[][][] final_arr2 = new int[6][3][9];
int[][] multi = new int[][]{
{2,3,5,7,9,12,13,15,17},
{1,3,4,5,6,7,11,14,16,18},
{1,2,4,6,8,9,12,13,17,18},
{3,5,7,9,10,11,12,14,15,16},
{1,4,6,7,8,10,11,13,14,18},
{2,3,5,8,9,12,13,15,16,17},
{1,2,4,6,7,10,11,13,17,18},
{1,3,5,8,9,12,13,15,16,18},
{2,4,6,7,9,10,11,14,15,16,17}
};
for( int i=0;i<9;i++){
outer.add(multi[i]);
}
for(int x=0;x<9;x++){
int [] temp = new int[18];
for(int k=0;k<outer.get(x).length;k++){
//System.out.print(outer.get(x)[k]-1 +" ");
int row = outer.get(x)[k]-1;
temp[row]=1;
}
//System.out.println();
inner.add(temp);
}
System.out.println();
int count=1;
for(int i=0;i<9;i++){
List<Integer> temp = new ArrayList<Integer>();
for(int k=0;k<outer.get(i).length;k++){
temp.add(count);
count++;
}
Collections.shuffle(temp);
int index_of_temp=0;
for(int j=0;j<18;j++){
if(inner.get(i)[j]==1){
inner.get(i)[j]=temp.get(index_of_temp);
index_of_temp++;
}
//System.out.print(inner.get(i)[j]+ " ");
}
//System.out.println();
}
for(int i=0;i<9;i++){
for(int j=0;j<18;j++){
final_arr[i][j]=inner.get(i)[j];
}
}
System.out.println();
for(int i=0;i<18;i++){
for(int j=0;j<9;j++){
//System.out.print(final_arr[j][i]+ " ");
final_arr2[i/3][i%3][j]=final_arr[j][i];
}
}
for(int k=0;k<6;k++){
for(int i=0;i<3;i++){
for(int j=0;j<9;j++){
System.out.print(final_arr2[k][i][j]+ " ");
}
System.out.println();
}
System.out.println();
}
}
}