C语言中如何用 二维数组输出金字塔形或直角三角形数组?
字母金字塔有很多种形式,不过输出的原理都是差不多的。
不用二维数组即可实现。如果用二维数组,就是把字母先写到二维数组中,再一次性输出。
以下以一个比较复杂的字母金字塔为例说明:
#includeint main(){ char a[26][26]; int n; int i,j; char t; scanf("%d",&n); if(n>26||n<=0) return-1; for(i = 0;i<n;i++) { for(j = 0; j<n-i-1; j++) a[i][j] = ' '; t='A'+i; for(; j<n; j++) a[i][j]=t--; t='B'; for(;j<n+i;j++) a[i][j]=t++; a[i][j] = 0; } for(i = 0;i<n;i++) puts(a[i]); return 0;}输入10的时候,效果是
#include
main()
{
int i,j,l,m,n;
scanf("%d%d",&m,&n);
printf("
");
for(i=1;i<=n;i++)
{
for(j=0;j<i;j++)
{l=m+i+j;
printf("%d ",l);
}
printf("
");
m=m+i;
}}
第一步输入scanf("%d%d",&m,&n);m代表首字母即为起始数字,n代表行数,再跳两行 printf("
"); 接着 for(i=1;i<=n;i++)用I做变量控制行数就是I每次循环后自加等于行数n,在一重循环里面 再来一个循环控制每个数相加for(j=0;j<i;j++)而且输出下三角,则j<i,l=m+i+j;是l等于行数加列数再加上你的起始数m,输出l,执行完内循环后即一行跳出,换行,再次执行, m=m+i;行数增加用m来保留增加的行数,,,不知你懂了没有
#include<iostream>
#include<string>
usingnamespacestd;
intmain()
{
std::cout<<"Inputnum:";
intn;
std::cin>>n;
inta[10][10];
for(inti=1;i<=n;++i)
{
for(intj=1;j<=i;++j)
a[i][j]=1;
for(intj=i+1;j<=n;++j)
a[i][j]=0;
}
for(inti=0;i<=n;++i)
{
for(intj=0;j<=n;++j)
if(a[i][j]==1)
cout<<j;
cout<<endl;
}
}
扩展资料
二维字符数组的输出
#include<stdio.h>
intmain(){
//声明一个字符型二维数组,高维3,低维6
//高维代表有多少个字符串,低维代表每个字符串有多少个字符
//低维要能满足最多字符的字符串
//字符数组最后以\0结束,要给它留出一个位置,所以低维是6
chararray[3][6]={
{'o','n','e'},
{'t','w','o'},
{'t','h','r','e','e'},
};
//循环输出三个字符串
for(inti=0;i<3;i++){
for(intj=0;j<6;j++){
printf("%c",array[i][j]);
}
//输出完一个字符串就换一行
printf("
");
}
return0;
}
#include<stdio.h>
#define M 7
#define N 7
void main()
{
int a[M][N],i,j;
for(i=0;i<M*N;i++)
{
a[i/N][i%N]=1;//二维数组a初始化,初值为1
}
printf("金字塔如下:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M-i-1;j++)
{
printf(" ");
}
for(j=0;j<i+1;j++)
{
printf("%-2d",a[i][j]);
}
printf("\n");
}
printf("直角三角形如下:\n");
for(i=0;i<M;i++)
{
for(j=0;j<i+1;j++)
{
printf("%-2d",a[i][j]);
}
printf("\n");
}
}
int a[10][10];
for(int i=0;i<10;i++)
{
for(int j=0;j<=i;j++)
printf("%2d",a[i][j]);
printf("\n");
}
枞江磺胺: 用个for语句把二维的按行复制过去就得了.要不就编程实现了.用两个指针下标,指示上一层的开始和结尾.存储的时候随便存了,输出到屏幕的时候,再输出成金字塔行的.如果...
志丹县13321035692: C语言中如何用for语句输出金字塔用*来代替字符 - ?
枞江磺胺: //输入一个数N,输出一个N层的*型金字塔 #include <stdio.h> int main () {int i,j,n,k; scanf("%d",&n); for(j=2;j<=2*n;j=j+2) {for(k=0;k<=(float)(2*n-1-j)/2;k++) printf(" "); for(i=0;i<j*2-2;i=i+2) printf("*"); printf("\n"); } while (1); return 0; } 是DEV C++
志丹县13321035692: c语言如何做二级字母塔?
枞江磺胺: 你发个图看看啊,你想要什么模样的啊? 是这种东西么?如果是的话我可以直接给你工程文件,代码你打开看就是了,直接也可以运行 杨辉三角和字母金字塔随便输出
志丹县13321035692: C语言试题 打印金字塔 - ?
枞江磺胺: #include int main(int argc, _TCHAR* argv[]) { int M = 0; int i = 0; int N[100] = {0};//C语言不支持变长数组,姑且给M限制100以内吧,如果你非要用C语言实现M不限大小,请追问 printf("请输入要打印的图形个数\n"); scanf_s("%d", &M); for (...
志丹县13321035692: C语言,二维数组输入输出 - ?
枞江磺胺: 2维数组可以按一维排列 a[j][i] 对应 a[j*n+i] #include main() { int i,j,n,m; int *a, *b; static int v; scanf("%d %d",&n,&m); a = (int*)malloc(sizeof(int)*n*m); b = (int*)malloc(sizeof(int)*n*m); for (j=0;jfor (i=0;i{ scanf("%d",&v); a[j*m+i]=v; b[i*n+j]=v;} for (j=0;jfor (j=0;j}
志丹县13321035692: C语言中如何定义动态二维数组并输出 - ?
枞江磺胺: 可以按照下面步骤进行定义二维数组并输出: 1 定义二维指针. 2 确定数组维数,即行数和列数. 3 申请行数个一维指针大小空间,并赋值给二维指针. 4 对于每个一维指,申请列数个元素的空间,并赋值给对应的一维指针. 5 输入或赋值数...
志丹县13321035692: C语言中的二维数组的赋值,输入输出怎么用 - ?
枞江磺胺: 代码,实现先输入二维数组的行数m和列数n,并再输入m*n个整型数据存到动态二维数组中.最后输出所有二维数组的元素值. int main() { int**p;//定义二维指针. int m,n;//行数和列数. int i,j; scanf("%d%d",&m,&n);//输入行数和列数. ...
志丹县13321035692: 急急!!!如何用c语言输入和输出一个二维数组?? - ?
枞江磺胺: 我就简单定义一个2行3列的数组 #include void main() { int i,j,a[2][3]; printf("请输入数组数据:"); for(i=0;i
志丹县13321035692: c语言二维数组实例 - ?
枞江磺胺: 以下是几个简单的C语言二维数组实例代码1. 输出第n行的杨辉三角形: #include<stdio.h> void main() {int i,j,n; int a[100][100]={0};//定义一个二维数组.scanf("%d",&n);a[0][1]=1;for(i=1;i<n;i++)for(j=1;j<i+2;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];...
志丹县13321035692: 求解 c语言里 二维数组如何全部输出? - ?
枞江磺胺: 你可copy以用2113二层循5261环4102如下1653 int main(void) { int i, j; int a[12][24]; for (i = 0; i < 0; i++) { for (j = 0; j < 0; j++) { printf("%d", a[i][j]); } putchar('\n'); } return 0; }