| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1115 人关注过本帖
标题:做个题目,有点意思的.
只看楼主 加入收藏
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
结帖率:50%
收藏
 问题点数:0 回复次数:14 
做个题目,有点意思的.
题目描述:
输入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


/*这个题目,我发了两个小时才把它的格式调好,有兴趣的就做一下.当然用数组可能要简单点,大家看看有什么好的方法没有.*/
搜索更多相关主题的帖子: 打印 自然数 三角形 
2006-10-02 19:59
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

下面输出的格式是往右边靠齐.不知道怎么弄的.
4 //首数为偶数
6 5
9 8 7
4 3 2 1

倚天照海花无数,流水高山心自知。
2006-10-02 20:01
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 

发一个,可能不是太好

[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]


2006-10-02 21:44
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

不用数组怎么弄呢...


#include<stdio.h>
void main()
{
int N,S,i=0,k=0,sum=0;
int a[1000];
printf(\"input N: \");
scanf(\"%d\",&N);
printf(\"input S: \");
scanf(\"%d\",&S);
for(int p=0;p<=N;p++)
sum+=p;

for(int n=0;n<sum;n++)
{
if(S+n==10) S-=9;
a[n]=S+n;
}
if(S%2!=0)
{
for(i=0,k=0;i<N;i++)
{
putchar('\n');
for(int j=0;j<=i;j++)
{
printf(\"%d\",a[k]);
k++;
}
}
putchar('\n');
}

else
{for(i=0,k=0;i<N;i++)
{
putchar('\n');
for(int t=i;t<N;t++)
printf(\" \");
for(int j=0;j<=i;j++)
{
printf(\"%d\",a[k]);
k++;
}

}
putchar('\n');
}
}


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-02 22:40
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

楼上的程序输出格式不对.
input N: 10
input S: 2

2
34
567
8912
34567
891234
5678912
34567891
234567891
2345678912


倚天照海花无数,流水高山心自知。
2006-10-02 22:58
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用ww84020209在2006-10-2 21:44:22的发言:

发一个,可能不是太好

[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]

比我的简单多了,呵呵


倚天照海花无数,流水高山心自知。
2006-10-02 23:00
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 

写的有点急...这回对了吧

#include<stdio.h>
void main()
{
int N,S,i=0,k=0,sum=0,temp;
int a[1000];
printf(\"input N: \");
scanf(\"%d\",&N);
printf(\"input S: \");
scanf(\"%d\",&S);
temp=S;
for(int p=0;p<=N;p++)
sum+=p;

for(int n=0;n<sum;n++)
{
if(S+n==10) S-=9;
a[n]=S+n;
}

for(i=0,k=0;i<N;i++)
{
putchar('\n');
if(temp%2==0)
for(int t=i;t<N;t++)
printf(\" \");
for(int j=0;j<=i;j++)
{
printf(\"%d\",a[k]);
k++;
}

}
putchar('\n');

}


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-03 10:10
unicorn
Rank: 4
等 级:贵宾
威 望:14
帖 子:1066
专家分:0
注 册:2005-10-25
收藏
得分:0 
完了 还是不对...偶数时候 升序是从右往左的....
再想想//

[此贴子已经被作者于2006-10-3 10:53:45编辑过]


unicorn-h.spaces. ◇◆ sava-scratch.spaces.  noh enol ! pue pu!w hw u! shemle aq ll!m noh 
2006-10-03 10:15
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
收藏
得分:0 
#include <stdio.h>
#define ROW 100
#define COL 100
int main(void){

int i,j,k,s,n,temp;

int arr[ROW][COL]={0};

printf("insert S=");

scanf("%d",&s);

printf("\ninsert N=");

scanf("%d",&n);

temp=s;

if(s%2!=0){

for(i=0;i<n;i++){

for(j=0;j<=i;j++){

if(s>9){

s=1;

arr[i][j]=s++;
}

else

arr[i][j]=s++;

}
}

for(i=0;i<n;i++){

for(j=0;j<=i;j++)

printf("%d",arr[i][j]);

printf("\n");

}
}

else{

for(i=0;i<n;i++){

for(j=n-1,k=0;k<=i;k++,j--){

if(temp>9){

temp=1;

arr[i][j]=temp++;

}
else

arr[i][j]=temp++;

}
}


for(i=0;i<n;i++){

for(j=0;j<n;j++){

if(arr[i][j]==0)

printf(" ");

else

printf("%d",arr[i][j]);

}

printf("\n");

}
}

return 0;

}

由于工作,N久都没来了!
2006-10-03 13:07
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

发上我写的,比较烦琐一点.

#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);
}


倚天照海花无数,流水高山心自知。
2006-10-03 13:48
快速回复:做个题目,有点意思的.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025049 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved