下面内容只能利用二维数组知识完成
1、定义一个N行N列的二位数组,求二维数组中的最大值和最小值。输出最大值和最小值以及他们的位置。
//////////////////////////////
//功能描述 :求一个二维数组中的最大值和最小值
//返回值 :void
//编写日期 :2018年11月08日
//////////////////////////////
#include "stdio.h"
void main()
{
int m=0,n=0,f=0,g=0,a[4][4]={1,23,25,36,89,95,105,189,197,256,309,408,409,456,489,359},i,j;
printf("这个二维数组为\n");
for (i=0;i<=3;i++)
{
for (j=0;j<=3;j++)
{
printf("%-5d",a[i][j]);
}
printf("\n");
}
for (i=0;i<=3;i++)
{
for (j=0;j<=3;j++)
{
if (a[i][j]>a[m][n])
{
m=i,n=j;
}
if (a[i][j]<a[f][g])
{
f=i,g=j;
}
}
}
printf("最大值为%d在第%d行第%d列\n最小值为%d在第%d行第%d列\n",a[m][n],m+1,n+1,a[f][g],f+1,g+1);
}
2、从键盘输入4个学生3门课程的成绩,求每门课程的平均分。
//////////////////////////////
//功能描述 :求四个同学每门成绩的平均成绩
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
void main()
{
int a[4][3],i,j,s=0;
printf("请输入这四个同学的成绩\n");
for (i=0;i<=3;i++)
{
for (j=0;j<=2;j++)
{
scanf("%d",&a[i][j]);
}
}
for (j=0;j<=2;j++,s=0)
{
for (i=0;i<=3;i++)
{
s+=a[i][j];
}
printf("第%d门成绩的平均分为%f\n",j+1,s/4.0);
}
}
3、华为上机练习题–比较二维数组列最小值,组成一个新数组返回。
//////////////////////////////
//功能描述 :找出每列最小值并组成一个新数组
//返回值 :void
//编写日期 :2018年11月10日
//////////////////////////////
#include "stdio.h"
void input (int a[][100],int n,int m)
{
int i,j;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void comp(int b[],int a[][100],int n,int m)
{
int i,j,f;
for (j=0;j<=m-1;j++,f=0)
{
b[j]=a[0][j];
for (i=0;i<=n-1;i++)
{
if(a[i][j]<a[f][j])
{
b[j]=a[i][j];
}
}
}
}
void main()
{
int n,m,a[100][100],int b[100],i;
printf("你需要输入几行几列\n");
scanf("%d%d",&n,&m);
printf("请输入你的数组(按一行一行输)\n");
input(a,n,m);
comp(b,a,n,m);
printf("组成的新数组为\n");
for (i=0;i<=m-1;i++)
{
printf("%d ",b[i]);
}
printf("\n");
}
4、Write a program using two-dimensional array f[4][5] to store and print out the following matrix.
//////////////////////////////
//功能描述 :存储和打印
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
#define N 4
#define M 5
void Cc(char a[][5])
{
int i,j;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
if (i>=j)
{
a[i][j]='*';
}
else
a[i][j]='#';
}
}
}
void Out(char a[][5])
{
int i,j;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
printf("%-3c",a[i][j]);
}
printf("\n");
}
}
void main()
{
char a[N][M];
Cc(a);
Out(a);
}
5、Write a program using two-dimensional array f[5][5] to store and print out the following matrix
1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
//////////////////////////////
//功能描述 :存储和打印
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
#define N 5
#define M 5
void Cc(int a[][5])
{
int i,j;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
if ((i==j)||(i+j==4))
{
a[i][j]=1;
}
else
a[i][j]=0;
}
}
}
void Out(int a[][5])
{
int i,j;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
printf("%-3d",a[i][j]);
}
printf("\n");
}
}
void main()
{
int a[N][M];
Cc(a);
Out(a);
}
6.把1~25的自然数按行顺序存入一个5*5的二位数组中,然后打印出该数组的右上半三角。
//////////////////////////////
//功能描述 :存储和打印
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
#define N 5
#define M 5
void Cc(int a[][5])
{
int i,j,m=1;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
a[i][j]=m;
m++;
}
}
}
void Out(int a[][5])
{
int i,j;
for (i=0;i<N;i++)
{
for (j=0;j<M;j++)
{
if (j>=i)
{
printf("%-3d",a[i][j]);
}
else
printf(" ");
}
printf("\n");
}
}
void main()
{
int a[N][M];
Cc(a);
Out(a);
}
7、计算n阶方阵两条对角线元素之和并输出。
//////////////////////////////
//功能描述 :计算n阶方阵两条对角线元素之和
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
void Cc(int a[][100],int n)
{
int i,j;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
}
int sum(int a[][100],int n)
{
int s=0,i,j;
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
if ( ( i == j ) || ( i + j == (n-1) ) )
{
s+=a[i][j];
}
}
}
return s;
}
void main()
{
int a[100][100];
int i,j,m=1,s,n;
printf("请输入你需要输入多少阶方阵\n");
scanf("%d",&n);
printf("请输入你的方阵\n");
Cc(a,n);
s=sum(a,n);
printf("两条对角线元素之和为%d\n",s);
}
8、通过二维数组实现杨辉三角的前n行并输出。
//////////////////////////////
//功能描述 :输出n行杨辉三角
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
void main()
{
int a[200][200],i,j,n;
printf("请输入需要输出得行数\n");
scanf("%d",&n);
for (i=0;i<n;i++)
{
a[i][0]=1;
a[i][i]=1;
}
for (i=2;i<n;i++)
{
for (j=1;j<i;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for (i=0;i<n;i++)
{
for (j=0;j<=i;j++)
{
printf("%-5d",a[i][j]);
}
printf("\n");
}
}
9、矩阵的转置。
//////////////////////////////
//功能描述 :转置矩阵
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
void Cc(int a[][100],int n,int m)
{
int i,j;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void Change(int a[][100],int b[][100],int n,int m)
{
int i,j;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
b[j][i]=a[i][j];
}
}
}
void print(int b[][100],int n,int m)
{
int i,j;
printf("转置后的矩阵为\n");
for (i=0;i<=m-1;i++)
{
for (j=0;j<=n-1;j++)
{
printf("%3d",b[i][j]);
}
printf("\n");
}
}
void main()
{
int a[100][100],b[100][100],m,n;
printf("请输入需要输入矩阵得行数和列数\n");
scanf("%d%d",&n,&m);
printf("请输入你的矩阵\n");
Cc(a,n,m);
Change(a,b,n,m);
print(b,n,m);
}
10、矩阵的加法。
//////////////////////////////
//功能描述 :矩阵的加法
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
void Cc(int a[][100],int n,int m)
{
int i,j;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void Sum(int a[][100],int b[][100],int c[][100],int n,int m)
{
int i,j;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
}
void print(int c[][100],int n,int m)
{
int i,j;
printf("加完后的矩阵为\n");
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
printf("%3d",c[i][j]);
}
printf("\n");
}
}
void main()
{
int a[100][100],b[100][100],c[100][100],m,n;
printf("请输入需要输入矩阵得行数和列数\n");
scanf("%d%d",&n,&m);
printf("请输入矩阵a\n");
Cc(a,n,m);
printf("请输入矩阵b\n");
Cc(b,n,m);
Sum(a,b,c,n,m);
print(c,n,m);
}
11、矩阵的乘法。
//////////////////////////////
//功能描述 :矩阵的乘法
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
void Cc(int a[][100],int n,int m)
{
int i,j;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void Mul(int a[][100],int b[][100],int c[][100],int n,int m)
{
int i,j;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
c[i][j]=a[i][j]*b[i][j];
}
}
}
void print(int c[][100],int n,int m)
{
int i,j;
printf("乘完后的矩阵为\n");
for (i=0;i<=n-1;i++)
{
for (j=0;j<=m-1;j++)
{
printf("%-3d",c[i][j]);
}
printf("\n");
}
}
void main()
{
int a[100][100],b[100][100],c[100][100],m,n;
printf("请输入需要输入矩阵得行数和列数\n");
scanf("%d%d",&n,&m);
printf("请输入矩阵a\n");
Cc(a,n,m);
printf("请输入矩阵b\n");
Cc(b,n,m);
Mul(a,b,c,n,m);
print(c,n,m);
}
12.有一篇文章,共有3行文字,每行有80个字符,分别统计其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
//////////////////////////////
//功能描述 :统计各种字符数
//返回值 :void
//编写日期 :2018年11月09日
//////////////////////////////
#include "stdio.h"
void main()
{
char a[300],b[300],c[300];
int e=0,g=0,h=0,d=0,f=0,i;
printf("请输入一行文字\n");
gets(a);
printf("请输入一行文字\n");
gets(b);
printf("请输入一行文字\n");
gets(c);
for (i=0;a[i]!='\0';i++)
{
if(a[i]==' ')
e++;
else if(a[i]>='A'&&a[i]<='Z')
g++;
else if(a[i]>='a'&&a[i]<='z')
h++;
else if(a[i]>='0'&&a[i]<='9')
d++;
else
f++;
}
i=1;
printf("第%d行有 空格%d个 大写字母%d个 小写字母%d个 数字%d个 其他字符%d个 \n",i,e,g,h,d,f);
e=0,g=0,h=0,d=0,f=0;
for (i=0;b[i]!='\0';i++)
{
if(b[i]==' ')
e++;
else if(b[i]>='A'&&b[i]<='Z')
g++;
else if(b[i]>='a'&&b[i]<='z')
h++;
else if(b[i]>='0'&&b[i]<='9')
d++;
else
f++;
}
i=2;
printf("第%d行有 空格%d个 大写字母%d个 小写字母%d个 数字%d个 其他字符%d个 \n",i,e,g,h,d,f);
e=0,g=0,h=0,d=0,f=0;
for (i=0;c[i]!='\0';i++)
{
if(c[i]==' ')
e++;
else if(c[i]>='A'&&c[i]<='Z')
g++;
else if(c[i]>='a'&&c[i]<='z')
h++;
else if(c[i]>='0'&&c[i]<='9')
d++;
else
f++;
}
i=3;
printf("第%d行有 空格%d个 大写字母%d个 小写字母%d个 数字%d个 其他字符%d个 \n",i,e,g,h,d,f);
}
13.有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
//////////////////////////////
//功能描述 :求矩阵中的最大值以及它的位置
//返回值 :void
//编写日期 :2018年11月10日
//////////////////////////////
#include "stdio.h"
void input(int a[][4] )
{
int i,j;
printf("请输入你的矩阵\n");
for (i=0;i<=2;i++)
{
for (j=0;j<=3;j++)
{
scanf("%d",&a[i][j]);
}
}
}
void cmp(int a[][4])
{
int m=0,n=0,i,j;
for(i=0;i<=2;i++)
{
for (j=0;j<=3;j++)
{
if (a[i][j]>a[m][n])
{
m=i,n=j;
}
}
}
printf("max=%d %d行%d列",a[m][n],m+1,n+1);
}
void main()
{
int a[3][4];
input (a);
cmp(a);
}
14.求矩阵下三角形元素之和。
//////////////////////////////
//功能描述 :求矩阵中下三角元素之和
//返回值 :void
//编写日期 :2018年11月10日
//////////////////////////////
#include "stdio.h"
void input(int a[][100],int n)
{
int i,j;
printf("请输入你的矩阵\n");
for (i=0;i<=n-1;i++)
{
for (j=0;j<=n-1;j++)
{
scanf("%d",&a[i][j]);
}
}
}
int sum(int a[][100],int n)
{
int i,j;
int s=0;
for (i=0;i<=n-1;i++)
{
for (j=0;j<=i;j++)
{
s+=a[i][j];
}
}
return s;
}
void main()
{
int n,s,a[100][100];
printf("请输入你要输入几阶矩阵\n");
scanf("%d",&n);
input (a,n);
s=sum (a,n);
printf("下三角之和为%d\n",s);
}