用C替换已打印的数字

时间:2012-06-09 06:36:10

标签: c replace numbers

我正在用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();

}

2 个答案:

答案 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();
        }
    }

}