二维数组作业11月10日

下面内容只能利用二维数组知识完成

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);
}

你可能感兴趣的:(二维数组作业11月10日)