本文主要介绍C语言中格式化屏幕输出的相关信息。有需要的朋友可以参考一下。边肖觉得这篇文章还不错,希望能帮到你。
目录
题目1:请打印出下面的图案。题目:根据以下三种形式编程输出99乘法表。摘要
在一些问题中,问题经常指定屏幕输出的格式。让我们以一种固定的格式编程并输出某些模式或表格。我们用下面三个例子来说明格式化屏幕输出的方法。
题目1:请打印输出以下图案。
当然,我们可以用最笨的方法直接根据标题风格输出暴力:
printf(' * \ n ');
printf(' * * * \ n ');
printf(' * * * * \ n ');
printf(' * * * * * * * * \ n ');
printf(' * * * * \ n ');
printf(' * * * \ n ');
printf(' * \ n ');
多无聊啊?你买不起吗?
如果题目要求可以改变输出钻石的大小,你不发吗?
仔细想想,这种打印格式的图案都很工整,当然还需要用到循环句。
首先,两层for循环跑不掉。最外层的for循环用于控制输出行数,最内层的for循环用于控制空格和' * '。刚开始最好自己画,分析一下图案的构成。
我们发现前四行中的“*”的数量是奇数递增的,而后四行中的“*”的数量是逐行递减的,所以我们只需要处理前四行的模式,稍微修改后三行就可以得到了。
我们先来看看空格和' * '与行数的定量关系:
行数
空白的
*
一个
三
一个
2
2
三
三
一个
五
四
0
七
……
……
……
n
N-n(N是增量行的总数)
2个n-1
很明显,现在问题变成了小学生找规律的问题,所以我们可以写下面的代码:
for(int n=1;n=4;N )//n是行数,4是总行数n。
{
for(int I=1;I=4-n;I )//输出“*”前的空格
{
printf(“”);
}
for(int I=1;I=2 * n-1;I )//输出' * '
{
printf(' * ');
}
printf(' \ n ');//输出一行后换行。
}
运行结果为:
说明我们的想法是对的!那么剩下的3行(N-1行)只需要稍微修改一下上面的代码。修改后,我们可以得到:
for(int n=1;n=4;N )//n是行数,4是增加的总行数n。
{
for(int I=1;I=4-n;I )//输出“*”前的空格
{
printf(“”);
}
for(int I=1;I=2 * n-1;I )//输出' * '
{
printf(' * ');
}
printf(' \ n ');//输出一行后换行。
}
for(int n=1;n=3;N )//n是行数,3是递减的总行数N-1。
{
for(int I=1;I=n;I )//输出“*”前的空格
{
printf(“”);
}
for(int I=1;I=7-2 * n;I )//Output' * ',7是递增行2*N-1中最后一行(第N行)的' * '个数。
{
printf(' * ');
}
printf(' \ n ');//输出一行后换行。
}
运行结果为:
耶!现在我们已经得到了我们想要的结果。然后随着菱形大小的变化,我们可以通过相应地改变n的大小来输出相应的图案。
题目2:分别按如下三种形式,编程输出九九乘法表。
同样,暴力的方法肯定是可以做出来的,这里就不赘述了。
首先,第一步是通过暴力手段输出99乘法表的表头:
printf(' 1 2 3 4 5 6 7 8 9 \ n ');
printf('------\ n ');
这三个表格应该是第一种格式,比较简单,因为它没有太多难以处理的空格。
事实上,我们只需要用一个两层循环,从1到9遍历99乘法表的行头和列头,相乘得到表中的每一个值(此处隐藏了行头)。(关于行和列的标题,我指的是下表中的这些数字):
123456789123456789
因此我们有:
for(int I=1;I=9;I )//行首递增。
{
for(int j=1;j=9;J )//列的标题递增。
{
printf('=',I * j);
}
printf(' \ n ');//在每个输出行后换行。
}
这样我们就能得到第一个表:
再来看第二个表:第二个表是左下三角,右上三角没有输出(或者输出是一个空格)。
寻找规律,不难发现,当一列的表头小于或等于一行的表头(j=i)时,就会输出数字。
所以我们可以在第一种情况下做一些修改:
for(int I=1;I=9;I )//行首递增。
{
for(int j=1;j=9;J )//列的标题递增。
{
如果(j=i)
{
printf('=',I * j);
}
}
printf(' \ n ');//在每个输出行后换行。
}
即可得到第二个表:
类似地,当列标题大于或等于行标题(j=i)时,第三个表输出数字,当列标题小于行标题(ji)时,输出空格。值得注意的是,因为我们使用了=,所以应该一次输出3个空格。在第一种情况下,进行了一点修改以获得以下代码:
for(int I=1;I=9;I )//行首递增。
{
for(int j=1;j=9;J )//列的标题递增。
{
如果(j=i)
{
printf('=',I * j);
}
其他
{
printf(“”);
}
}
printf(' \ n ');//在每个输出行后换行。
}
即可得到第三个表:
总结
本文到此为止。希望能帮到你,也希望你能多关注我们的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。