输出数据的域宽编程C语言中,DNA (C语言代码)

解题思路:此题把重复图形分解,然后研究一个图形即可。输出输出X...X时用到了函数printf("X%*cX\n",2*j-1,' ');的功能。

解释如下:

/*

%*c中的*,是一个标志符号,表示输出数据的域宽,由后面第一个参数决定是多少。

例如:printf("%*d",3,16);输出时,输出16的域宽为3,则前面补一个空格。

*/

注意事项: 中间重复输出时不能输出第一行

参考代码:#include 

void out_x(int a,int j)  //输出每一行的X以及前面的空格,和X中间的空格

{

int k;

for(k=a/2;k>j;k--)  printf(" "); //输出空格

printf("X%*cX\n",2*j-1,' ');   //输出X...X

}

void output1(int a)     //输出一个完整的图形

{

int j;

for(j=a/2;j>=1;j--)   //输出上半部分

out_x(a,j);

printf("%*c\n",a/2+1,'X');  //输出中间的X

for(j=1;j<=a/2;j++)  //输出下半部分

out_x(a,j);

}

void output2(int a)      //输出一个完整的图形的后面a-1行,第一行不输出

{

int j;

for(j=a/2-1;j>=1;j--) //输出上半部分,注意第一行不输出

out_x(a,j);

printf("%*c\n",a/2+1,'X'); //输出中间的X

for(j=1;j<=a/2;j++)  //输出下半部分

out_x(a,j);

}

int main()

{

int a,b,n;

int i;

scanf("%d",&n);

while(n>0)

{

scanf("%d%d",&a,&b);

output1(a);  //输出第一个完整的图形

for(i=2;i<=b;i++)  //重复输出完整图形的后面部分(第一行不输出)

output2(a);

printf("\n");  //输出换行分割两个图形,题目要求哦

n--;

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值