指针原来是套娃的


私信TA

用户名:uq_92467646842

访问量:15749

签 名:

数学改变科学,科学改变世界

等  级
排  名 16
经  验 19287
参赛次数 46
文章发表 103
年  龄 0
在职情况 学生
学  校
专  业 物联网工程

  自我简介:

QQ:2830671713

解题思路:
一开始想用二维数组来做,后来发现可以直接打印,就没有用数组了

在一个二维数组内

 i / j01234
0X


X
1
X
X
2

X

3
X
X
4X


X

仔细观察表格,发现只有对角线和副对角线才有X,而其他的地方是空格

对于对角线上有  i=j;

对于副对角线有  i+j=4;

规律一出来就很简单了,代码实现如下:

#include <stdio.h>
   
int main()
{
    int i,j;
    int a,b,n;
    scanf("%d",&n);
    while(n--){
        scanf("%d %d",&a,&b);
        for(j=0;j<a;j++){//单独打印第一行
            if(j==0||j==a-1){
                printf("X");   
            }else{
                printf(" ");
            }
        }
        printf("\n");
        while(b--){//需要重复b次
            for(i=1;i<a;i++){
                for(j=0;j<a;j++){
                    if(i==j||i+j==a-1){//判断是否在对角线和副对角线上
                        printf("X");
                    }else{
                        printf(" ");
                    }
                }
                printf("\n");
            }
        }
        printf("\n");//数据之间空一行
    }
 
    return 0;
}

不过有三个注意点:

第一,打印的X是大写

第二,每个数据之间有一行空行

第三,第一行需要单独打印


2022-03-19 21:59:11

更新一下吧,发现有很多错误是这个单独打印第一行上出现的,我们来看一下这个答案的输出

image.png

除了第一行以外都是重复出现的,而第一行不是,所以要单独打印第一行,不然的话就会出现:

image.png

重复了三个第一行。

以上。

 

0.0分

40 人评分

  评论区

大佬们,测试没错啊,为啥最后答案错误了呢
#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(void) 
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		int i,j;
		while(b--)
		{
			for(i=1;i<=a;i++)
			{	
				for( j=1;j<=a;j++)
				{
					if(i==j||a+1==i+j)
					{
						printf("X");
					}
					else
					{
						printf("%c",32);
				    }
				}
			printf("\n");
			}
		}
		printf("\n");
	}
	return 0;
}
2022-02-12 10:45:24 | |
2022-02-10 01:55:56 | |
#include<stdio.h>
int main()
{
	int N,i,j,a[16],b[16],t;
	scanf("%d",&N);
	for(i=0;i<N;i++)	
		scanf("%d%d",&a[i],&b[i]);
	for(i=0;i<N;i++)
	{
		while(b[i]!=0)
		{
			for(t=0;t<a[i];t++)
			{
				for(j=0;j<a[i];j++)
				{
				if((j==t)||(t+j==a[i]-1))
					printf("X");
				else  
					printf(" ");
				}
			printf("\n");
			}
			b[i]--;
		}
		printf("\n");
	}
	return 0;
} 
我感觉我这个更简单
2022-01-14 13:56:40 | |
  • «
  • 1
  • »