输入格式:
从键盘输入整数n的值。
输出格式:
每行输出6列,每个整数占8位宽度右对齐。如果最后一行不足6列,也需要换行。
输入样例:
在这里给出一组输入。例如:
6
输出样例:
6 15 24 33 42 51
60 105 114 123 132 141
150 204 213 222 231 240
303 312 321 330 402 411
420 501 510 600
C语言代码:
这里,易操作的有两种实现方式:
法一:
//实现方法一:
#include<stdio.h>
int main()
{
int flag=0;//标志作用:控制换行位置。
int bai,shi,ge;//由于数字小于10000,所以最大为999,三位足矣
int i=0;//变量
int n;
scanf("%d",&n);
for(i=0;i<10000;i++)
{
bai=i/100;//分解算法
shi=i%100/10;
ge=i%100%10;
if((bai+shi+ge)==n)
{
printf("%8d",i);//默认右对齐,也可写“%+8d”;左对齐“%-8d”
flag++;
if(flag%6==0)
printf("\n");//这里的换行记得放在if判断里面
}
}
//printf("\n");这个按题目要求是需要的,但是加上后PTA会报错:格式错误;PTA大家都懂的。。。
return 0;
}
运行截图:
法二:
//实现方法二:(数组法)
#include<stdio.h>
int main()
{
int flag=0;
int i=0,j=0;//变量
int n;
scanf("%d",&n);
for(i=1;i<1000;i++)
{
int k=0;
int sum=0;
int num=i;
int arr[4]={0};//由于全部在一个大循环中进行,所以循环开始重新声明变量较多
while(num!=0)
{
arr[k]=num%10;
k++;
num/=10;
}//将数字放入数组
//这个方法的好处是可以推广使用,不一定限制在10000以下,要推广,只要多一个长度计算即可
for(j=0;j<4;j++)
{
sum+=arr[j];//并且求和比较方便
}
if(sum==n)
{
printf("%8d",i);//输出宽度为a,printf("%ad")
flag++;
if(flag%6==0)
printf("\n");
}
}
//printf("\n");
return 0;
}
运行截图: