路桥建设局网站网站开发培训中心

当前位置: 首页 > news >正文

路桥建设局网站,网站开发培训中心,2019长沙企业网站建设优惠,wordpress index.txt文章目录101. 矩阵相等判定102. 上三角矩阵判定103. 矩阵转置104. 矩阵交换105. 杨辉三角106. 井字棋107. 小乐乐与进制转换108. 小乐乐求和109. 小乐乐定闹钟110. 小乐乐排电梯101. 矩阵相等判定 问题描述#xff1a;KiKi得到了两个n行m列的矩阵#xff0c;他想知道两个矩阵… 文章目录101. 矩阵相等判定102. 上三角矩阵判定103. 矩阵转置104. 矩阵交换105. 杨辉三角106. 井字棋107. 小乐乐与进制转换108. 小乐乐求和109. 小乐乐定闹钟110. 小乐乐排电梯101. 矩阵相等判定 问题描述KiKi得到了两个n行m列的矩阵他想知道两个矩阵是否相等请你回答他。(当两个矩阵对应数组元素都相等时两个矩阵相等)。 输入描述 第一行包含两个整数n和m表示两个矩阵包含n行m列用空格分隔。 从2到n1行每行输入m个整数范围-231~231-1用空格分隔共输入n*m个数表示第一个矩阵中的元素。 从n2行到2n1每行输入m个整数范围-231~231-1用空格分隔共输入n*m个数表示第二个矩阵中的元素。 1 n,m 10 输出描述一行如果两个矩阵相等输出Yes并换行否则输出No并换行。 示例
输入2 21 23 41 23 4 输出Yes代码实现 #include stdio.h int main() {int n,m,i,j;int arr1[10][10] {0};int arr2[10][10] {0};scanf(%d %d,n,m);//录入第一个矩阵for(i 0;i n;i){for(j 0;j m;j){scanf(%d,arr1[i][j]);}}//录入第二个矩阵for(i 0;i n;i){for(j 0;j m;j){scanf(%d,arr2[i][j]);}}//比较两个数组对应位置的元素for(i 0;i n;i){for(j 0;j m;j){if(arr1[i][j] ! arr2[i][j]){printf(No\n);return 0;}}}printf(Yes\n);return 0; }102. 上三角矩阵判定 问题描述KiKi想知道一个n阶方矩是否为上三角矩阵请帮他编程判定。上三角矩阵即主对角线以下的元素都为0的矩阵主对角线为从矩阵的左上角至右下角的连线。 输入描述第一行包含一个整数n表示一个方阵包含n行n列用空格分隔。 (1≤n≤10)从2到n1行每行输入n个整数范围-231~231-1用空格分隔共输入n*n个数。 输出描述一行如果输入方阵是上三角矩阵输出YES并换行否则输出NO并换行。 示例
输入31 2 30 4 50 0 6 输出YES解题思路对角线以下的元素都是 0 的则为上三角矩阵。 所有为 0 元素的坐标的特点是i j也就是说只要判断当 i j 时的所有元素是否为 0 即可。 代码实现 #include stdio.h int main() {int n,i,j;int arr[10][10];scanf(%d,n);for(i 0;i n;i){for(j 0;j n;j){scanf(%d,arr[i][j]);}}for(i 0;i n;i){for(j 0;j n;j){if(i j){if(0 ! arr[i][j]){printf(NO\n);return 0;}}}}printf(YES\n);return 0; }103. 矩阵转置 问题描述KiKi有一个矩阵他想知道转置后的矩阵将矩阵的行列互换得到的新矩阵称为转置矩阵请编程帮他解答。 输入描述第一行包含两个整数n和m表示一个矩阵包含n行m列用空格分隔。 (1≤n≤10,1≤m≤10)从2到n1行每行输入m个整数范围-231~231-1用空格分隔共输入n*m个数表示第一个矩阵中的元素。 输出描述输出m行n列为矩阵转置后的结果。每个数后面有一个空格。 示例
输入2 31 2 34 5 6 输出1 4 2 5 3 6 解题思路原来的列变成行行则变成列。 代码实现
#include stdio.h int main() {int n,m,i,j;int arr[10][10];scanf(%d %d,n,m);for(i 0;i n;i){for(j 0;j m;j){scanf(%d,arr[i][j]);}}for(i 0;i m;i){for(j 0;j n;j){printf(%d ,arr[j][i]);//行变成了用j控制列则由i控制}putchar(\n);} return 0; }104. 矩阵交换 问题描述KiKi有一个矩阵他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。输入描述 第一行包含两个整数n和m表示一个矩阵包含n行m列用空格分隔。 (1≤n≤10,1≤m≤10) 从2到n1行每行输入m个整数范围-231~231-1用空格分隔共输入n*m个数表示第一个矩阵中的元素。 接下来一行输入k表示要执行k次操作1≤k≤5。接下来有k行每行包括一个字符t和两个数a和b中间用空格格分隔t代表需要执行的操作当t为字符’r’时代表进行行变换当t为字符’c’时代表进行列变换a和b为需要互换的行或列1≤a≤b≤n≤101≤a≤b≤m≤10。提示当t为别的字符时不需要处理 输出描述输出n行m列为矩阵交换后的结果。每个数后面有一个空格。示例1 输入 2 21 23 41r 1 2 输出3 4 1 2 示例2 输入2 21 36 82c 1 2t 1 2代码实现 #include stdio.h int main() {int n,m,i,j;int arr[10][10];scanf(%d %d,n,m);for(i 0;i n;i){for(j 0;j m;j){scanf(%d,arr[i][j]);}} int k;//操作k次 scanf(%d,k);//k\n,输入k次之后敲回车还剩个\nchar t;int a,b;for(i 0;i k;i)//每一次操作的过程{scanf( %c %d %d,t,a,b);//%c前多个空格能消化掉上面剩下的\n//不让t接收到的值变成\nif(t r)//交换a和b行{for(j 0;j m;j){int tmp arr[a-1][j];arr[a-1][j] arr[b-1][j];arr[b-1][j] tmp;}}else if(t c)//交换a和b列{for(j 0;j n;j){int tmp arr[j][a-1];arr[j][a-1] arr[j][b-1];arr[j][b-1] tmp;}} }//交换完之后打印for(i 0;i n;i){for(j 0;j m;j){printf(%d ,arr[i][j]);}putchar(\n);}return 0; }105. 杨辉三角 问题描述KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣他想知道杨辉三角的前n行请编程帮他解答。杨辉三角本质上是二项式(ab)的n次方展开后各项的系数排成的三角形。其性质包括每行的端点数为1 一个数也为1每个数等于它左上方和上方的两数之和。 输入描述第一行包含一个整数数n。 (1≤n≤30) 输出描述包含n行为杨辉三角的前n行每个数输出域宽为5。 示例
输入6 输出11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1解题思路 前提每行端点与结尾的数为1。 每个数为上方的两数之和且头两行无需计算全都是1。 行列相等的位置的值为1。 在框起来的三角形内行都是2的列都是1的。当行列都在范围内的时候才需要去计算。 代码实现 #include stdio.h int main() {int n,i,j;int arr[30][30];scanf(%d,n);for(i 0;i n;i){for(j 0;j n;j){if(0 j)//将第0列的值置为1{arr[i][j] 1;}if(i j)//将对角线的值置为1{arr[i][j] 1;}if(i 2 j 1){arr[i][j] arr[i-1][j-1] arr[i-1][j];}}}for(i 0;i n;i){//要打印三角形i打印多少j就打印多少for(j 0;j i;j){printf(%5d,arr[i][j]);}putchar(\n);}return 0; }106. 井字棋 问题描述KiKi 和 BoBo 玩 “井”字棋。也就是在九宫格中只要任意行、列或者任意对角线上面出现三个连续相同的棋子就能获胜。请根据棋盘状态判断当前输赢。输入描述三行三列的字符元素代表棋盘状态字符元素用空格分开代表当前棋盘其中元素为K代表KiKi玩家的棋子为O表示没有棋子为B代表BoBo玩家的棋子。输出描述 如果KiKi获胜输出“KiKi wins!” 如果BoBo获胜输出“BoBo wins!” 如果没有获胜输出“No winner!”。 示例 输入K O BO K BB O K 输出KiKi wins!解题思路判断横3、竖3、对角线上的元素是否相等即可。代码实现 #include stdio.h int main() {int i,j;char arr[3][3];for(i 0;i 3;i){for(j 0;j 3;j){scanf( %c,arr[i][j]);//记得消化掉按下回车之后剩余的\n}}//判断输赢char flag O;for(i 0;i 3;i){//判断某一行的三个是否相等且不为Oif(arr[i][0]arr[i][1]arr[i][1]arr[i][2]arr[i][1]!O){flag arr[i][1];break;}//判断某一列的三个是否相等且不为Oif(arr[0][i]arr[1][i]arr[1][i]arr[2][i]arr[1][i]!O){flag arr[1][i];break;}}//判断对角线上的三个是否相等if(arr[0][0] arr[1][1]arr[1][1]arr[2][2]arr[1][1]!O){flag arr[1][1];}//判断另一条对角线if(arr[0][2] arr[1][1]arr[1][1]arr[2][0]arr[1][1]!O){flag arr[1][1];}if(K flag) printf(KiKi wins!\n);else if(B flag) printf(BoBo wins!\n);else printf(No winner!\n);return 0; }107. 小乐乐与进制转换 问题描述小乐乐在课上学习了二进制八进制与十六进制后对进制转换产生了浓厚的兴趣。因为他的幸运数字是6所以他想知道一个数表示为六进制后的结果。请你帮助他解决这个问题。 输入描述输入一个正整数n (1 ≤ n ≤ 109) 输出描述输出一行为正整数n表示为六进制的结果 示例1 输入6 输出10 示例2 输入120 输出320 解题思路 先让输入的数 n % 6 得到当前数转换成六进制的最低位; 然后让 n / 6用得到的结果继续 % 6 获得第二低位; 不停重复上述步骤直到 n / 6 的结果为 0 为止。 最后将得出的结果翻转过来就是十进制转六进制的最终结果。 代码实现 #include stdio.h int main() {int n,i 0;int arr[40];//将%6,/6后得到的结果存起来scanf(%d,n);//转换while(n)//如果n不为0,说明还有能拿下来的位{arr[i] n % 6;i ;n n / 6;//去掉最低位}for(i–;i 0;i–){printf(%d,arr[i]);//将得到的数翻转过来就是6进制}return 0; }108. 小乐乐求和 问题描述小乐乐最近接触了求和符号Σ他想计算 的结果。但是小乐乐很笨请你帮助他解答。 输入描述输入一个正整数n (1 ≤ n ≤ 109) 输出描述输出一个值为求和结果。 示例1 输入1 输出1 示例2 输入10 输出55 代码实现1
#include stdio.h int main() {long long n,sum 0;scanf(%lld,n);for(int i 1;i n;i){sum i;}printf(%lld\n,sum);return 0; }代码实现2 等差数列公式(1 n) * n / 2
#include stdio.h int main() {long long n; scanf(%lld,n);printf(%lld\n,(1n)*n/2);return 0; }109. 小乐乐定闹钟 问题描述小乐乐比较懒惰他现在想睡觉然后再去学习。他知道现在的时刻以及自己要睡的时长想设定一个闹钟叫他起床学习但是他太笨了不知道应该把闹钟设定在哪个时刻请你帮助他。(只考虑时和分不考虑日期) 输入描述输入现在的时刻以及要睡的时长k单位minute中间用空格分开。 输入格式hour:minute k如hour或minute的值为1输入为1而不是01)(0 ≤ hour ≤ 230 ≤ minute ≤ 591 ≤ k ≤ 109)。 输出描述对于每组输入输出闹钟应该设定的时刻输出格式为标准时刻表示法即时和分都是由两位表示位数不够用前导0补齐。 示例1 输入0:0 100 输出01:40 示例2 输入1:0 200 输出04:20 解题思路用 k / 60 得到的结果就是对应的小时数用 k % 60 得到的结果则是对应的分钟数。 代码实现
#include stdio.h int main() {int h,m,k;scanf(%d:%d %d,h,m,k);h (h (m k) / 60) % 24;//转小时转成24进制m (m k) % 60;//将分钟转成60进制printf(%02d:%02d\n,h,m);return 0; }110. 小乐乐排电梯 问题描述小乐乐学校教学楼的电梯前排了很多人他的前面有n个人在等电梯。电梯每次可以乘坐12人每次上下需要的时间为4分钟上需要2分钟下需要2分钟。请帮助小乐乐计算还需要多少分钟才能乘电梯到达楼上。假设最初电梯在1层 输入描述输入包含一个整数n (0 ≤ n ≤ 109) 输出描述输出一个整数即小乐乐到达楼上需要的时间。 示例1 输入1 输出2 示例2 输入12 输出6 代码实现;
#include stdio.h int main() {int n;scanf(%d,n);printf(%d\n,(n / 12)4 2);//n / 12得出需要上下几趟电梯//然后 4得出轮到乐乐上电梯时的时间//再加上小乐乐上去的两分钟return 0; }