7-1 sdut-C语言实验-求一个3*3矩阵对角线元素之和
分数 12
全屏浏览题目
切换布局
作者 马新娟
单位 山东理工大学
给定一个3*3的矩阵,请你求出对角线元素之和。
输入格式:
按照行优先顺序输入一个3*3矩阵,每个矩阵元素均为整数。
输出格式:
从左下角到右上角这条对角线上的元素之和。
#include<stdio.h>
int main()
{
int a[4][4],sum=0;
for(int i=1;i<4;i++)
{
for(int t=1;t<4;t++)
{
scanf("%d",&a[i][t]);
}
}
for(int i=1,t=3;i<4&&t;i++,t--)
{
sum+=a[i][t];
}
printf("%d",sum);
}
7-2 求矩阵各行元素之和
分数 15
全屏浏览题目
切换布局
作者 C课程组
单位 浙江大学
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。
输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间
以空格分隔。
输出格式:
每行输出对应矩阵行元素之和。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,m;
scanf("%d %d",&m,&n);
int a[m][n];
int b[10]={0};
for(int i=0;i<m;i++)
{
for(int t=0;t<n;t++)
{
scanf("%d",&a[i][t]);
}
}
for(int i=0;i<m;i++)
{
for(int t=0;t<n;t++)
{
b[i]+=a[i][t];
}
}
for(int i=0;i<m;i++)
{
printf("%d\n",b[i]);
}
return 0;
}
7-3 sdut-C语言实验- 对称矩阵的判定
分数 13
全屏浏览题目
切换布局
作者 马新娟
单位 山东理工大学
输入矩阵的行数,再依次输入矩阵的每行元素,判断该矩阵是否为对称矩阵,若矩阵对称输出“Yes.",不对称输出"No."。
输入格式:
输入有多组,每一组第一行输入一个正整数N(N<=20),表示矩阵的行数(若N=0,表示输入结束)。
下面依次输入N行数据。
输出格式:
若矩阵对称输出“Yes.",不对称输出”No.”。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
int a[n][n];
for(int i=0;i<n;i++)
{
for(int t=0;t<n;t++)
{
scanf("%d",&a[i][t]);
}
}
int f=1;
for(int i=0;i<n;i++)
{
for(int t=1;t<n;t++)
{
if(a[i][t]!=a[t][i])
f=0;
}
}
if(f==1)
printf("Yes.\n");
else
printf("No.\n");
}
return 0;
}
7-4 sdut-C语言实验- 杨辉三角
分数 10
全屏浏览题目
切换布局
作者 马新娟
单位 山东理工大学
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
21世纪以来国外也逐渐承认这项成果属于中国,所以有些书上称这是“中国三角形”(Chinese triangle)。
其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而杨辉三角的发现就是十分精彩的一页。
让我们开始做题吧!
输入格式:
输入数据包含多组测试数据。
每组测试数据的输入只有一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。
输入以0结束。
输出格式:
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
while(scanf("%d",&n)!=-1)
{
if(n==0)
break;
int a[n+1][n+1];
for(int i=1;i<=n;i++)
{
for(int t=1;t<=i;t++)
{
if(t==1||t==i)
a[i][t]=1;
else
a[i][t]=a[i-1][t-1]+a[i-1][t];
}
}
for(int i=1;i<=n;i++)
{
for(int t=1;t<=i;t++)
{
printf("%d",a[i][t]);
if(t<i)
printf(" ");
else
printf("\n");
}
}
printf("\n");
}
return 0;
}
7-5 sdut-C语言实验- 鞍点计算
分数 12
全屏浏览题目
切换布局
作者 马新娟
单位 山东理工大学
找出具有m行n列二维数组Array的“鞍点”,即该位置上的元素在该行上最大,在该列上最小,其中1<=m,n<=10。同一行和同一列没有相同的数。
输入格式:
输入数据有多行,第一行有两个数m和n,下面有m行,每行有n个数。
输出格式:
按下列格式输出鞍点:
Array[i][j]=x
其中,x代表鞍点,i和j为鞍点所在的数组行和列下标,我们规定数组下标从0开始。
一个二维数组并不一定存在鞍点,此时请输出None。
我们保证不会出现两个鞍点的情况,比如:
3 3
1 2 3
1 2 3
3 6 8
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,n;
scanf("%d %d",&m,&n);
int a[m][n];
for(int i=0;i<m;i++)
{
for(int t=0;t<n;t++)
{
scanf("%d",&a[i][t]);
}
}
int l=0;
for(int i=0;i<m;i++)
{
int x=i,y=0,z=1;
for(int t=0;t<n;t++)
{
if(a[x][t]>a[x][y])
{
y=t;
}
}
for(int t=0;t<m;t++)
{
if(a[x][y]>a[t][y])
z=0;
}
if(z==1)
{
printf("Array[%d][%d]=%d\n",x,y,a[x][y]);
l=1;
}
}
if(l==0)
printf("None");
return 0;
}
7-6 sdut- C语言实验-矩阵转置
分数 9
全屏浏览题目
切换布局
作者 马新娟
单位 山东理工大学
输入N*N的矩阵,输出它的转置矩阵。
输入格式:
第一行为整数N(1≤N≤100)。
接着是一个N*N的矩阵。
输出格式:
转置矩阵。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n];
for(int i=0;i<n;i++)
{
for(int f=0;f<n;f++)
{
scanf("%d",&a[i][f]);
}
}
for(int i=0;i<n;i++)
{
for(int f=0;f<n;f++)
{
printf("%d",a[f][i]);
if(f<n-1)
printf(" ");
else
printf("\n");
}
}
return 0;
}