-4

我正在尝试构建一个维度为 N*N 的 hadamard 矩阵,然后打印它。代码可以编译,但是当我运行它时,它甚至没有到达要求 N 输入的部分。有什么想法有什么问题吗?

#include <stdio.h>

void main(void) {

int i, N;

scanf("Input N value:   %d", &N);

char **h = (char**) calloc(N, sizeof(char*));

for ( i = 0; i < N; i++ ) {
    h[i] = (char*) calloc(N, sizeof(char));
}

int ii, xx, yy;

h[0][0]='1';


for(ii=2; ii<=N; ii*=2) {
    //Top right quadrant.
    for(xx=0; xx<(ii/2); ++xx) {
        for(yy=(ii/2); yy<ii; ++yy){
            h[xx][yy]=h[xx]yy-(ii/2)];                          
        }
    }
    //Bottom left quadrant.
    for(yy=0; yy<(ii/2); ++yy) {
        for(xx=(ii/2); xx<ii; ++xx) {
            h[xx][yy]=h[xx-(ii/2)][yy];
        }
    }
    //Bottom right quadrant, inverse of other quadrants.
    for(xx=(ii/2); xx<ii; ++xx) {
        for(yy=(ii/2); yy<ii; ++yy) {
            h[xx][yy]=h[xx-(ii/2)][yy-(ii/2)];
            if(h[xx][yy]=='1') {
                h[xx][yy]='0';
            }
            else {
                h[xx][yy]='1';
            }
        }
    }
}


//Printing matrix.
for(xx=0; xx<N; ++xx) {
    for(yy=0; yy<N; ++yy) {
        printf("%c",h[xx][yy]); 
    }
    printf("\n");
}
}
4

3 回答 3

4

scanf不会发出提示消息,例如文档中的 任何内容都不会发出提示。"Input N value: "
scanf

相反,你想要:

printf("Input N value: ");
scanf("%d", &N);
于 2013-09-04T02:56:47.050 回答
2

scanf不打印那个字符串,它只是用来检查输入的格式。

尝试:

printf("Input N value: ");
scanf("%d", &N);
于 2013-09-04T02:56:56.163 回答
2

你需要分开 scanf 和评论

例如

 printf("Enter a file name: ");                                                                                                                                                                
  scanf("%s", str);     
于 2013-09-04T02:57:52.793 回答