题目描述
输出以下4*5的矩阵
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
要求使用循环实现,注意每行输出5个数字,每个数字占3个字符的宽度,右对齐。
输入
无
输出
每行输出5个数字,每个数字占3个字符的宽度,右对齐。
样例输入
无
样例输出
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
C语言对齐方式 (百度知道)
%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。(长整型%mld,八进制%mo,十六进制%mx)
对于字符同理有%mc
对于float型,可用%m.nf,输出数据共占m列,n位小数,如果数据长度小于m那么左边补空格
%-m.nf,为左靠齐,右补空格
对于字符串,%ms,输出的字符串占m列,字符串长度小于m,左边补空格,如果超出则全部输出.
%-ms,右补空格
%m.ns,输出占m列,但只取字符串左端n个字符。这n个字符输出在m列的右边,然后左边补空格.
%-m.ns,右补空格
代码
#include<stdio.h>
int main()
{
int i,j,sum=1;
for(i=1;i<5;i++){
for(j=1;j<=5;j++)
{
sum=i*j;
printf("%3d",sum);
if(j%5==0)
{
printf("\n");
}
}
}
return 0;
}
代码很简单,但是做的时候发现一个有点意思的平时没注意的地方,就是在for循环不加花括号,它的作用域如
for(j=1;j<=5;j++)
printf("%3d",i*j);
printf("\n");
这个时候for语句的作用域仅包含下面一句的printf语句所以不会影响下一句换行,这样的话可以简化代码而不用再来一个if语句判断如
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
printf("%3d",i*j);
printf("\n");
}
return 0;
}