主题:请高手看下我这里哪里错了
safebook
[专家分:0] 发布于 2011-04-07 22:18:00
题目是比如输入4,依次类推
4 4 4 4 4 4 4
3 3 3 3 3
2 2 2
1
2 2 2
3 3 3 3 3
4 4 4 4 4 4 4
#include<stdio.h>
main()
{
int x,a[100][200],i,j;
printf("input hang=");
scanf("%d",&x);
for(i=0;i<x;i++)
{
for(j=1;j<=2*(x-i-1)+1;j++)
a[i][j]=x-i;
}
for(i=0;i<x;i++)
{
for(j=1;j<i+1;j++) printf(" ");
for(j=1;j<=2*(x-i-1)+1;j++)
printf("%d",a[i][j]);
printf("\n");
}
for(i=x-1;i>=0;i--)
{
for(j=1;j<i+1;i++) printf(" ");
for(j=i+1;j<=2*(x-i)+1;j++);
printf("%d",a[i][j]);
printf("\n");
}
}
回复列表 (共16个回复)
11 楼
fisher_cs [专家分:10] 发布于 2011-04-08 19:45:00
使用递归实现:
#include<stdio.h>
/*
input:
output:
4 4 4 4 4 4 4
3 3 3 3 3
2 2 2
1
2 2 2
3 3 3 3 3
4 4 4 4 4 4 4
*/
void print(const int n, const int max);
void show(const int n, const int max);
int main(void)
{
int n;// = 4;
printf("input an integer between: 1 and 9: \n");
scanf("%d", &n);
print(1, n);
return 0;
}
void show(const int n, const int max)
{
int j = 0;
for(j=0; j<n-1; j++)
{
printf(" ");
}
for(j=2*(max-n+1)-1;j>0;j--)
{
printf("%d ", max-n+1);
}
printf("\n");
}
void print(const int n, const int max)
{
show(n, max);
if(n<max)
{
print(n+1, max);
}
else
return;
show(n, max);
}
12 楼
fragileeye [专家分:1990] 发布于 2011-04-09 21:24:00
不错哦~~
13 楼
cgl_lgs [专家分:21040] 发布于 2011-04-10 16:42:00
为什么不:
for(int i = -4 ; i < 5; ++i)
呢:)
14 楼
windy0will [专家分:2300] 发布于 2011-04-10 20:21:00
如果是输出到屏幕的话,并且输入的n最大为9,可以写成这样:
[code=c]
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
const char * ss[] = {
NULL
, "1"
, "2 2"
, "3 3 3"
, "4 4 4 4"
, "5 5 5 5 5"
, "6 6 6 6 6 6"
, "7 7 7 7 7 7 7"
, "8 8 8 8 8 8 8 8"
, "9 9 9 9 9 9 9 9 9"
} ;
int n, i;
printf( "input an integer between: 1 and 9: " );
scanf ( "%d" , &n );
if ( n < 2 || n > 9 )
{
fprintf( stderr ,"input wrong" );
exit( -1 );
}
for ( i = n ; i >= 1 ; --i ) /* 从n到1输出 */
printf( "%*s\b%s \n" ,2*n-1 ,ss[i] ,ss[i] );
for ( i = 1 ; ++i <= n ; ) /* 从2到n输出 */
printf( "%*s\b%s \n" ,2*n-1 ,ss[i] ,ss[i] );
return 0;
}[/code]
15 楼
cgl_lgs [专家分:21040] 发布于 2011-04-11 00:01:00
! 给个FORTRAN的实现,仅供娱乐:
Subroutine prntNum(n)
Integer n,i,width,count
Character*128 fmt
Integer dat(n*2)
width=log10(n*100.0)
Do i=-n+1,n-1
count=Abs(i)+1
Write(fmt,'(A,3(I0,A))')'(',(n-count)*width,'X,',count*2-1,'I',width,')' ! 生成格式化串
dat(1:count*2-1)=count ! 生成待输出数据
Write(*,fmt)dat(1:count*2-1) ! 向屏幕输出1行:)
End Do
End Subroutine
16 楼
cgl_lgs [专家分:21040] 发布于 2011-04-11 00:02:00
其实C也可以做类似F的东东,楼主不妨自己想想?
我来回复