输入N,S两个自然数,(1<=S<=9)打印相应的数字三角行(其中S表示确定三角形的第一个数,N表示确定三角形的行数).(注:N可以不用很大)
例如:
N=4,S=3时打印:
3 //首位数为奇数
4 5
6 7 8
9 1 2 3
N=4,S=4时打印:
4 //首数为偶数
6 5
9 8 7
4 3 2 1
/*这个题目,我发了两个小时才把它的格式调好,有兴趣的就做一下.当然用数组可能要简单点,大家看看有什么好的方法没有.*/
发一个,可能不是太好
[CODE]
#include <stdio.h>
int main()
{
int N,S,i,j,k,flag;
printf("Input N S:");
scanf("%d%d",&N,&S);
flag=S%2;
for(i=1;i<=N;i++)
{
for(j=1;j<=i;j++)
{
if(S==10)
S=1;
if(flag==0) //当然如果使用图形库函数,使光标前移一格会更方便
{
for(k=1;k<=N-j;k++)
printf(" ");
printf("%d",S);
printf("\r");
}
else
printf("%d",S);
S++;
}
printf("\n");
}
return 0;
}
[/CODE]
比我的简单多了,呵呵
发上我写的,比较烦琐一点.
#include<stdio.h>
int main()
{
int i,j,n,s,k,t;
scanf("%d%d",&n,&s);
k=s;
t=s;
for(i=1;i<=n;i++)
{
if(s%2==1)
{
for(j=1;j<=i;j++)
{
printf("%d ",k);
k++;
if(k==10||k==0)
{
k=1;
}
}
printf("\n");
}
else
{
if(i==1)t--;
t=(t+i)%9;
//printf("t=%d\n",t);
k=t;
if(k==0)
{
k=1;
}
for(j=1;j<=2*(n-i);j++)
{
printf(" ");
}
for(j=i;j>=1;j--)
{
printf("%-2d",k);
k--;
if(k==0)
{
k=9;
}
}
printf("\n");
}
}
return(0);
}