啊哈 不知不觉已经坚持一个月了 来到第五周 这段时间 我在c的路上成长很多 迫不及待的想和你们分享 这周来聊聊数组
1 简单打印图形
输入
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
1 <= n, m <= 26。
输出
输出打印的图形
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
#include <stdio.h>
#include <math.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int a[m][n];
for (int i=0;i<m;i++)
{
for (int j=0;j<n;j++)
{
a[i][j]=abs(i-j)+65;//确保都是在A-Z之间
printf("%c",a[i][j]);
}
printf("\n");
}
return 0;
}
2 数组三角方阵的判断
编写程序,输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”。
上三角矩阵即主对角线以下(不包括主对角线)的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。
要求定义函数IsUpperTriMatrix()判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。函数原型如下:
IsUpperTriMatrix(int a, int n);
输入
输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,均为整数。
输出
如果a是上三角矩阵,输出“YES”,否则,输出“NO”
样例输入
4
1 2 3 4
0 2 2 2
0 0 3 4
0 0 0 4
样例输出
YES
#include <stdio.h>
int main()
{
int a[10][10];
int d=1,i,j,n;
scanf("%d",&n);
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for (i=0;i<n;i++)
{
for (j=0;j<i;j++)//下三角 注意观察 实在i=j 之下 则只需要j<i 就行
{
if(a[i][j]!=0)
d=0;
}
}
if(d)
printf("YES");
else
printf("NO");
return 0;
}
3 多组数组转换矩阵
题目描述
求一个N行N列的矩阵的转置矩阵。(矩阵的行换成列,列换成行。)
输入
第一行一个整数n<20,表示有n组测试数据,下面是n组数据;
第二行是一个数N(2<N<10)
接下来N行每行有N个整数(所有数据均小于10000)。
输出
输出每组测试数据的转置矩阵;
每个数字后加一个空格,
请在每组输出之后加一个换行。
提示(每行最后一个数字后面也有一个空格)
样例输入
2
3
1 2 3
4 5 6
7 8 9
3
9 8 7
6 5 4
3 2 1
样例输出
1 4 7
2 5 8
3 6 9
9 6 3
8 5 2
7 4 1
#include<stdio.h>
int main()
{
int m,n;//int a;
scanf("%d",&n);
while(n--)//for(a=0;a<n;a++)
{
scanf("%d",&m);
int a[m][m],i,j;
for(i=0; i<m;i++)
{
for(j=0; j<m; j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
printf("%d ",a[j][i]);
}
printf("\n");
}
}
return 0;
}
这就是本周的全部的全部内容啦
现在总结一下
**1 数组的问题一般都是两个循环定义 一个赋值 一个输出
2 数组问题千篇一律 但原理简单 只需判断条件上多加判断 **
(以上内容全为原创 如有问题多多指正 小编不胜感激)