gpt4 book ai didi

c - 打印号码

转载 作者:行者123 更新时间:2023-11-30 18:53:39 25 4
gpt4 key购买 nike

我正在编写一个程序来显示如下

when n=3
1 2 3
7 8 9
4 5 6

when n=5
1 2 3 4 5
11 12 13 14 15
21 22 23 24 25
16 17 18 19 20
6 7 8 9 10

我的程序是

#include<stdio.h>
#include<conio.h>
int main()
{
int n=5,r=1,c=1,i=1,mid=0;
if(n%2==0)
mid=(n/2);
else
mid=(n/2)+1;
printf("mid = %d\n",mid);
while(r<=n)
{
while(c<=n)
{
printf("%d ",i);
c++;
i++;
}
r++;
if(r<=mid)
i=i+n;
else
i=i-(2*n);
printf("\n");
c=1;
}
getch();
return 0;
}

当我给出 n=3 时,我得到了预期的输出。但是当我给出 n=5 时,我得到如下

1 2 3 4 5
11 12 13 14 15
21 22 23 24 25
16 17 18 19 20
11 12 13 14 15

有人可以帮助如何实现预期的输出吗?

最佳答案

使用您的代码解决方案是

#include<stdio.h>
#include<conio.h>
int main()
{
int n=5,r=1,c=1,i=1,mid=0;
int maxRow = n;
if(n%2==0){
mid=(n/2);
maxRow--;
}
else
mid=(n/2)+1;
printf("mid = %d\n",mid);
while(r<=maxRow)
{
while(c<=n)
{
printf("%d ",i);
c++;
i++;
}
r++;
if(r<=mid)
i=i+n;
else if (r >= n)
i=n+1;
else
i=i-((1+(r-mid))*n);

printf("\n");
c=1;
}
getch();
return 0;
}

如您所见:

  1. i=i-(2*n); 已更改。您编写的内容不是通用的,而是针对 n=3 情况的。
  2. 我添加了 else if (r >= n)
  3. 最后一件事是,您必须在外部使用特定变量,因为如果 n 为偶数,则 n 必须递减。

一些提示:

  1. 为变量提供解释性名称
  2. 为了使代码更具可读性,如果您想初始化变量,每行声明 1 个变量。
  3. 代码块之间存在空行。
<小时/>
int main ()
{
int squareDim=5;
int row=1;
int col=1;
int valueToPrint=1;
int mid=0;
int maxRow = squareDim;

if(squareDim%2==0)
{
mid=(squareDim/2);
maxRow--;
}
else
{
mid=(squareDim/2)+1;
}

printf("mid = %d\n",mid);

while(row<=maxRow)
{
while(col<=squareDim)
{
printf("%d ",valueToPrint);
col++;
valueToPrint++;
}

row++;

if(row<=mid)
{
valueToPrint=valueToPrint+squareDim;
}
else if (row >= squareDim)
{
valueToPrint=squareDim+1;
}
else
{
valueToPrint=valueToPrint-((1+(row-mid))*squareDim);
}

printf("\n");

col=1;
}
return 0;
}

关于c - 打印号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32525493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com