以下内容仅供娱乐,欢迎随时探讨,请多指教!
2018年11月8日
1、定义一个N行N列的二位数组,求二维数组中的最大值和最小值。 输出最大值和最小值以及他们的位置。
#include <stdio.h>
int main()
{
int a[3][3]={{5,2,13},
{4,11,6},
{7,8,9}};
int min=0,max=0,i,k;
for(i=0;i<3;i++)
for(k=0;k<3;k++)
{
if(a[i][k]<a[min/10][min%10])min=i*10+k;
if(a[i][k]>a[max/10][max%10])max=i*10+k;
}
printf("min=%d\nmax=%d\n",a[min/10][min%10],a[max/10][max%10]);
printf("min=%02d\nmax=%02d\n",min,max);
return 0;
}
2、从键盘输入4个学生3门课程的成绩,求每门课程的平均分。
#include <stdio.h>
int main()
{
double a[4][3];
int i,k;
double sum1,sum2,sum3;
printf("请输入数组 0 1 2\n0\n1\n2\n3\n\n\n");
for(i=0;i<4;i++)
for(k=0;k<3;k++)
{
scanf("%lf",&a[i][k]);
}
for(i=0;i<4;i++)
{
sum1+=a[i][0];
sum2+=a[i][1];
sum3+=a[i][2];
}
printf("结果是:\n%lf\n%lf\n%lf\n",sum1/4,sum2/4,sum2/4);
return 0;
}
3、华为上机练习题–比较二维数组列最小值,组成一个新数组返回
#include <stdio.h>
int main()
{
int a[3][3]={{5,2,13},{4,11,6},{7,8,9}},b[3];
int i,k,n;
for(i=0;i<3;i++)//列
{
n=0;
for(k=0;k<3;k++)//行
{
if( a[k][i] > a[n][i] )n=k;
//记录
}
b[i]=a[n][i];
}
for(i=0;i<3;i++)
printf("%d ",b[i]);
return 0;
}
4、Write a program using two-dimensional array f[4][5] to store and print out the following matrix.(使用二维数组f [4] [5]编写程序来存储和打印出以下矩阵)
* # # # #
* * # # #
* * * # #
* * * * #
#include <stdio.h>
int main()
{
char f[4][5];
int i,k;
for(i=0;i<4;i++)
for(k=0;k<5;k++)
{
if(k>i)f[i][k]='#';
else f[i][k]='*';
}
for(i=0;i<4;i++)
{
for(k=0;k<5;k++)
printf(" %c ",f[i][k]);
printf("\n");
}
return 0;
}
5、Write a program using two-dimensional array f[5][5] to store and print out the following matrix. (使用二维数组f [5] 5编写程序来存储和打印出f)
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
#include <stdio.h>
int main()
{
int f[5][5];
int i,k;
for(i=0;i<5;i++)
for(k=0;k<5;k++)
{
if( k == i || i==(4-k) ) f[i][k]=1;
else f[i][k]=0;
}
for(i=0;i<5;i++)
{
for(k=0;k<5;k++)
printf(" %d ",f[i][k]);
printf("\n");
}
return 0;
}
6.把1~25的自然数按行顺序存入一个5*5的二位数组中,然后打印出该数组的右上半三角。
#include <stdio.h>
int main()
{
int f[5][5];
int i,k,n;
for(i=0;i<5;i++)
{
n=i*5+1;
for(k=0;k<5;k++)
{
f[i][k]=n;
n++;
}
}
for(i=0;i<5;i++)
{
for(k=0;k<5-i;k++)
printf("%4d ",f[i][k]);
printf("\n");
}
return 0;
}
7、计算n阶方阵两条对角线元素之和并输出。
#include <stdio.h>
int main()
{
int a[100][100];
int i,k,n,sum1=0,sum2=0;
printf("input N:");
scanf("%d",&n);
printf("请输入%d*%d的矩阵:\n",n,n);
for(i=0;i<n;i++)
for(k=0;k<n;k++)
scanf("%d",&a[i][k]);
for(i=0;i<n;i++)
sum1+=a[i][i],sum2+=a[i][n-1-i];
printf("sum1=%d\nsum2=%d\n",sum1,sum2);
return 0;
}
8、通过二维数组实现杨辉三角的前n行并输出。
#include <stdio.h>
int main()
{
int a[100][100];
int i,j,n;
printf("input 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-1]+a[i-1][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
printf("%-5d",a[i][j]);
printf("\n");
}
return 0;
}
9、矩阵的转置
#include <stdio.h>
int main()
{
int a[100][100];
int b[100][100];
int i,k,m,n;
printf("请输入矩阵大小m,n\n");
scanf("%d%d",&m,&n);
printf("请输入%d*%d矩阵\n",m,n);
for(i=0;i<m;i++)
for(k=0;k<n;k++)
scanf("%d",&a[i][k]);
printf("原来的的是:\n");
for(i=0;i<m;i++)
{
for(k=0;k<n;k++)
printf("%5d",a[i][k]);
printf("\n");
}
for(i=0;i<m;i++)
for(k=0;k<n;k++)
b[k][i]=a[i][k];//转置
printf("变化后的是:\n");
for(i=0;i<n;i++)
{
for(k=0;k<m;k++)
printf("%5d",b[i][k]);
printf("\n");
}
return 0;
}
10、矩阵的加法
#include <stdio.h>
void output(int a[][4],int m,int n)
{
int i,k;
for(i=0;i<m;i++)
{
for(k=0;k<n;k++)
printf("%-5d",a[i][k]);
printf("\n");
}
}
int main()
{
int A[3][4]={{15,10,9,12},
{18,14,8,7},
{16,13,6,11}};
printf("矩阵A=\n");
output(A,3,4);
int B[3][4]={{4,3,5,2},
{0,9,6,1},
{5,7,2,6}};
printf("矩阵B=\n");
output(B,3,4);
int C[3][4];
int i,k;
/*矩阵相加:两个矩阵必须行数和列数一样才能相加,
和矩阵的每个元素分别是两个矩阵对应的元素的和*/
printf("矩阵A+矩阵B=\n");
for(i=0;i<3;i++)
{
for(k=0;k<4;k++)
C[i][k]=A[i][k]+B[i][k];
}
output(C,3,4);
return 0;
}
11、矩阵的乘法
扫描二维码关注公众号,回复:
4417432 查看本文章
#include <stdio.h>
void output(int a[][4],int m,int n)
{
int i,k;
for(i=0;i<m;i++)
{
for(k=0;k<n;k++)
printf("%-5d",a[i][k]);
printf("\n");
}
}
int main()
{
int A[3][4]={{15,10,9,12},
{18,14,8,7},
{16,13,6,11}};
printf("矩阵A=\n");
output(A,3,4);
int B[3][4]={{4,3,5,2},
{0,9,6,1},
{5,7,2,6}};
printf("矩阵B=\n");
output(B,3,4);
int C[3][4];
int i,k;
/*矩阵相乘:两个矩阵必须行数和列数一样才能相乘,
和矩阵的每个元素分别是两个矩阵对应的元素的乘*/
printf("矩阵A*矩阵B=\n");
for(i=0;i<3;i++)
{
for(k=0;k<4;k++)
C[i][k]=A[i][k]*B[i][k];
}
output(C,3,4);
return 0;
}
12.有一篇文章,共有3行文字,每行有80个字符,分别统计期中英文大写字母、小写字母、数字、空格以及其他字符的个数。
#include <stdio.h>
int main()
{
char c[3][80];
int i, j, bl, s1, num, space, others;
printf("请输入你的文章\n");
for (i=0; i<3; i++)
gets(c[i]);
bl = s1 = num = space = others = 0;
for (j=0; j<3; j++)
{
for (i=0; i<80; i++)
{
if (c[j][i]>='A' && c[j][i]<='Z')
bl++;
else if (c[j][i]>='a' && c[j][i]<='z')
s1++;
else if (c[j][i]>='0' && c[j][i]<='9')
num++;
else if (c[j][i]==' ' || c[j][i]=='\t')
space++;
else
others++;
}
}
printf("大写字母 %d 小写字母 %d 数字 %d\n"
"空格 %d 其他 %d\n",
bl, s1, num, space, others);
return 0;
}
13.有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。
#include <stdio.h>
int main()
{
int a[3][4];
int i,k,j,m,n;
printf("请输入3*4矩阵\n");
for(i=0;i<3;i++)
for(k=0;k<4;k++)
scanf("%d",&a[i][k]);
m=0,n=0;
for(i=0;i<3;i++)
for(k=0;k<4;k++)
{
if(a[i][k]>a[m][n])m=i,n=k;
}
printf("max=%d\n",a[m][n]);
printf("行号%d列号%d\n",m,n);
return 0;
}
14.求矩阵下三角形元素之和
#include <stdio.h>
void output(int a[5][5],int m,int n)
{
int i,k;
for(i=0;i<m;i++)
{
for(k=0;k<n;k++)
printf("%-5d",a[i][k]);
printf("\n");
}
}
void input(int a[5][5],int m,int n)
{
int i,k;
for(i=0;i<m;i++)
for(k=0;k<n;k++)
scanf("%d",&a[i][k]);
}
int main()
{
int b[100][100];
int m,n,i,j,sum=0;
printf("请输入数组的行数和列数\n");
scanf("%d%d",&m,&n);
printf("请输入%d*%d的数组\n",m,n);
input(b,m,n);
output(b,m,n);
for(i=0;i<m;i++)
for(j=0;j<i*m/n;j++)
sum+=b[i][j];
printf("%d\n",sum);
return 0;
}