一道程序竞赛题,看了一下午没理出头绪,有高手帮忙看一下呗……
请编程打印如下面图形1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
输入:
测试例子中,一行给出一个整数N,(0<N<100);
输出:
每一个测试例子,输出相对应的字符图形
例如输入:
3
5
对应输出:
1 3 6
2 5
4
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
2011-10-18 16:49
程序代码:#include <stdio.h>
#include <string>
using namespace std;
int a[100][100] = {0};
int main()
{
int i,j,n;
while(EOF != scanf("%d",&n))
{
int k = 1;
for(i = 0;i<n;i++)
{
int r = i;
for(j = 0;j<=i;j++)
{
a[r][j] = k++;
r--;
}
}
for(i = 0;i<n;i++)
{
for(j = 0;j<n-i-1;j++)
{
printf("%d ",a[i][j]);
}
printf("%d\n",a[i][j]);
}
}
return 0;
} 这个题目思路为从左上角开始向右下角打印 打印规律为每一次打印的个数为所在行数 并且满足i+j = 行数
2011-10-18 17:10
2011-10-18 17:30
我是菜鸟,有些代码不怎么懂,特别是for循环那块,麻烦你能详细注释一下么?万分感谢……
2011-10-18 18:21
程序代码:#include<stdio.h>
#include<stdlib.h>
void main()
{
int m;
int i,j;
int **a;
char flag='Y';
while(flag=='Y')
{
printf("Please input a integer: ");
scanf("%d",&m);
a=(int **)calloc(m+1,sizeof(int *));
for(i=0; i<m; i++)
a[i]=(int *)calloc(m+1,sizeof(int ));
a[0][0]=1;
for(i=1; i<m; i++)
{
a[0][i]=i+1+a[0][i-1];
a[i][0]=i+a[i-1][0];
}
for(i=1; i<m; i++)
for(j=1; j<m-i; j++)
a[i][j]=a[i-1][j]+j+i;
for(i=0; i<m; i++)
{
for(j=0; j<m-i; j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("Do you want to continue?If yes,press Y,if not,press N.\n");
getchar();
scanf("%c",&flag);
if(flag=='Y')
continue;
else break;
}
}
2011-10-18 18:38
程序代码:#include<stdio.h>
void main()
{
int i,j,n,m=0,k=0,a[100][100];
scanf("%d",&n);
for(i=0;i<n;i++,m=i)
for(j=0;j<i+1;j++,m--)
a[m][j]=++k;
for(i=0;i<n;i++)
{
for(j=0;j<n-i;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}调试OK
2011-10-18 19:05
2011-10-18 19:49
2011-10-18 21:00
程序代码:#include"stdio.h"
int main()
{
int m,i,j,k,flag;
int a[100][100];
k=1;
scanf("%d",&m);
for(flag=1;flag<=m;flag++)
{
for(i=flag,j=1;i>=1&&j<=flag;i--,j++)
{
a[i][j]=k;
k++;
}
}
for(i=1;i<=m;i++)
{
for(j=1;j<=m-i+1;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
return 0;
}
2011-10-18 21:24
速度真快
2011-11-02 16:20