给以下代码加注释 #include<stdio.h> #include<malloc.h> int table[100][100]; void copy(int sr,int sc,int dr,int dc,int n){ int i,j; for(i=0;i<n;i++){ for(j=0;j<n;j++){ table[dr+i][dc+j] = table[sr+i][sc+j]; } } } void b_table(int k){ int i,n; for(i=1;i<=k;i++){ table[i][1] = i; } for(n=1;n<k;n=n*2){ for(i=1;i<=k;i=i+n*2){ copy(i,1,i+n,n+1,n); copy(i+n,1,i,n+1,n); } } } int main(){ int x,k=2,i,j; printf("请输入2^x位参赛的选手:"); scanf("%d",&x); for(i=1;i<x;i++){ k *= 2; } b_table(k); for(i=1;i<=k;i++){ for(j=1;j<=k;j++){ printf("%3d",table[i][j]); } for(j=1;j<x;j++){ printf("\n"); } } return 0; };
时间: 2023-12-10 10:05:40 浏览: 72
/* 包含标准输入输出头文件 */
#include<stdio.h>
/* 包含动态内存分配头文件 */
#include<malloc.h>
/* 定义一个全局二维数组 */
int table[100][100];
/* 定义一个用于拷贝表格的函数 */
void copy(int sr,int sc,int dr,int dc,int n){
/* 定义两个循环计数器 */
int i,j;
/* 循环遍历表格并复制 */
for(i=0;i<n;i++){
for(j=0;j<n;j++){
table[dr+i][dc+j] = table[sr+i][sc+j];
}
}
}
/* 定义一个用于生成表格的函数 */
void b_table(int k){
/* 定义两个循环计数器 */
int i,n;
/* 遍历表格并初始化 */
for(i=1;i<=k;i++){
table[i][1] = i;
}
/* 二分法拷贝表格 */
for(n=1;n<k;n=n*2){
for(i=1;i<=k;i=i+n*2){
copy(i,1,i+n,n+1,n);
copy(i+n,1,i,n+1,n);
}
}
}
/* 主函数 */
int main(){
/* 定义变量 */
int x,k=2,i,j;
/* 获取用户输入 */
printf("请输入2^x位参赛的选手:");
scanf("%d",&x);
/* 计算表格大小 */
for(i=1;i<x;i++){
k *= 2;
}
/* 生成表格 */
b_table(k);
/* 输出表格 */
for(i=1;i<=k;i++){
for(j=1;j<=k;j++){
printf("%3d",table[i][j]);
}
for(j=1;j<x;j++){
printf("\n");
}
}
/* 返回程序执行成功 */
return 0;
};
阅读全文