🔥個人主頁:艾莉絲努力練劍
?專欄傳送門:《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題
🍉學習方向:C/C++方向
??人生格言:為天地立心,為生民立命,為往圣繼絕學,為萬世開太平
前言:上一篇博客又帶大家刷了一些相對來說簡單的代碼題目,本篇文章我們將繼續練習下面的題目。這些題目的難度已經有的挖了大坑,大家做的時候要留意,如果做不出來,看了代碼演示后要自己多敲幾遍,去理解代碼的邏輯。
宇宙安全聲明:鑒于博主能力有限,本專欄適用于代碼小白刷題,大佬們多多包涵(抱拳)!
目錄
正文
一、班級成績輸入輸出
二、矩陣元素定位
三、序列重組矩陣
四、最高身高
五、矩陣相等判定
六、上三角矩陣判定
七、矩陣轉置
八、矩陣交換
九、楊輝三角
十、井字棋
結尾
正文
一、班級成績輸入輸出
BC101 班級成績輸入輸出
這道題沒什么好講的,我們寫一個嵌套循環,先輸入各科成績,再加起來,輸出各科成績和總分即可。注意打印各科成績的時候有一個空格。
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main()
{int i = 0;for (i = 0; i < 5; i++){double sum = 0.0;int j = 0;double score = 0.0;for (j = 0; j < 5; j++){scanf("%lf", &score);sum += score;printf("%.1lf ", score);}printf("%.1lf\n", sum);}return 0;
}
也可以這樣寫——
#include <stdio.h>int main()
{int i = 0;double score[5] = { 0 };for (i = 0; i < 5; i++){int j = 0;double sum = 0.0;for (j = 0; j < 5; j++){scanf("%lf", &score[j]);sum += score[j];}for (j = 0; j < 5; j++){printf("%.1lf ", score[j]);}printf("%.1lf\n", sum);}return 0;
}
二、矩陣元素定位
BC102 矩陣元素定位
我們直接看代碼——
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main()
{int m = 0;int n = 0;int x = 0;int y = 0;scanf("%d %d", &n, &m);//這是c99語法-變長數組,但是數組不能初始化int arr[n][m];//具體給值也行int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d ", &arr[i][j]);}}scanf("%d %d", &x, &y);printf("%d\n", arr[x - 1][y - 1]);return 0;
}
當然,如果我們直接把這組代碼放到VS2022上調試,會報這樣的錯誤——?
大家想想,怎么改就可以了,可以把你想到的答案在評論區展示一下。?
uu們一定要讀題讀仔細,n和m是有范圍的,我們改一下——
#include <stdio.h>int main()
{int m = 0;int n = 0;int arr[5][5] = { 0 };scanf("%d %d", &n, &m);int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d ", &arr[i][j]);}}int x = 0;int y = 0;scanf("%d %d", &x, &y);printf("%d\n", arr[x - 1][y - 1]);return 0;
}
三、序列重組矩陣
BC103 序列重組矩陣
看完題目,我們直接嘗試寫出代碼——
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main()
{int n = 0;int m = 0;scanf("%d%d", &n, &m);int i = 0;int tmp = 0;for (i = 1; i <= m * n; i++){scanf("%d", &tmp);printf("%d ", tmp);if (i % m == 0)printf("\n");}return 0;
}
?空格可以在取地址那兒,也可以直接放在兩個%d之間——
#include <stdio.h>int main()
{int n = 0;int m = 0;scanf("%d %d", &n, &m);int i = 0;int tmp = 0;for (i = 1; i <= m * n; i++){scanf("%d", &tmp);printf("%d ", tmp);if (i % m == 0)printf("\n");}return 0;
}
四、最高身高
BC104 最高身高
思路:先輸入n和m,再創建x和y并賦初值,寫一個for循環嵌套,輸入身高,再比較大小,比出最高的身高就會跳出循環,?輸出打印最高身高——
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main()
{int n = 0;int m = 0;scanf("%d %d", &n, &m);int i = 0;int j = 0;int max = 0;int x = 0;int y = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){int height = 0;scanf("%d ", &height);if (height > max){x = i;y = j;max = height;}}}printf("%d %d", x + 1, y + 1);return 0;
}
寫里面也可以——
#include <stdio.h>int main()
{int n = 0;int m = 0;scanf("%d %d", &n, &m);int max = 0;int x = 0;int y = 0;for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){int height = 0;scanf("%d ", &height);if (height > max){x = i;y = j;max = height;}}}printf("%d %d", x + 1, y + 1);return 0;
}
五、矩陣相等判定
BC105 矩陣相等判定
?我們試著把代碼寫出來——
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int n = 0;int m = 0;scanf("%d%d", &n, &m);int a1[n][m];int a2[n][m];int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &a1[i][j]);}}for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &a2[i][j]);}}for (i = 0; i < n; i++){for (j = 0; j < m; j++){if (a1[i][j] != a2[i][j])break;}}if (i == n && j == m){printf("Yes\n");}else{printf("No\n");}return 0;
}
題目有范圍要求:1 < m,n < 10——
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int n = 0;int m = 0;scanf("%d%d", &n, &m);int a1[10][10];int a2[10][10];int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &a1[i][j]);}}for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &a2[i][j]);}}for (i = 0; i < n; i++){for (j = 0; j < m; j++){if (a1[i][j] != a2[i][j])break;}}if (i == n && j == m){printf("Yes\n");}else{printf("No\n");}return 0;
}
?
六、上三角矩陣判定
BC106 上三角矩陣判定
?我們把代碼敲一下——
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int a[n][n];int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < n; j++){scanf("%d", &a[i][j]);}}//判斷for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (i > j){if (a[i][j] != 0){//下三角有不是0的就不滿足printf("NO");return 0;}}}}printf("YES");return 0;
}
?同樣的道理——
#include <stdio.h>
int main()
{int n = 0;scanf("%d", &n);int a[10][10];int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < n; j++){scanf("%d", &a[i][j]);}}//判斷for (i = 0; i < n; i++){for (j = 0; j < n; j++){if (i > j){if (a[i][j] != 0){//下三角有不是0的就不滿足printf("NO");return 0;}}}}printf("YES");return 0;
}
?
七、矩陣轉置
BC107 矩陣轉置
我們直接寫——?
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int n = 0;int m = 0;scanf("%d%d", &n, &m);int a[n][m];int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &a[i][j]);}}//轉置for (i = 0; i < m; i++)//3{for (j = 0; j < n; j++)//2{printf("%d ", a[j][i]);}printf("\n");}return 0;
}
?
八、矩陣交換
BC108 矩陣交換
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int m = 0;//列int n = 0;//行int arr[10][10] = { 0 };int cnt = 0;//操作的次數char op = 0;//代表操作的字符int a = 0;int b = 0;//讀取數據scanf("%d%d", &n, &m);int i = 0;int j = 0;for (i = 0; i < n; i++){for (j = 0; j < m; j++){scanf("%d", &arr[i][j]);}}scanf("%d", &cnt);for (i = 0; i < cnt; i++){//讀取操作指令//注釋解釋://scanf("%d", &a);//scanf(" %c", &c); // 消耗 %d 后的所有后繼空白符,然后讀一個 charscanf(" %c %d %d", &op, &a, &b);//執行操作if (op == '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 (op == '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]);}printf("\n");}return 0;
}
1、如果是%c讀取字符,一定要清理前面輸入時留下的空白字符;
2、注意二維數組的下標。
?
九、楊輝三角
BC109 楊輝三角
我們之前寫過楊輝三角的題目,但是比這個簡單,我們先看看這道題的代碼——?
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{int arr[30][30] = { 0 };int i = 0;int j = 0;int n = 0;scanf("%d", &n);for (i = 0; i < n; i++){for (j = 0; j <= i; j++){if (i == j)arr[i][j] = 1;if (j == 0)arr[i][j] = 1;if (i > 1 && j > 0)arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}for (i = 0; i < n; i++){for (j = 0; j <= i; j++){printf("%5d", arr[i][j]);}printf("\n");}return 0;
}
?這道題就要這樣寫了——
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>int YangHuiTriAngle(int arr[][4],int n)
{for (int i = 0; i < n; i++){for (int j = 0; j <= i; j++){if (i == 0 || i == j){arr[i][j] = 1;}else{arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];}}}
}int main()
{int arr[4][4] = { 0 };YangHuiTriAngle(arr, 4);for (int i = 0; i < 4; i++){for (int j = 0; j <= i; j++){printf("%d ", arr[i][j]);}}printf("\n");return 0;
}
?
十、井字棋
BC110 井字棋
這道題我們寫出來是這樣的——?
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>
int main()
{char arr[3][3] = { 0 };int i = 0;int j = 0;char flag = 'c';for (i = 0; i < 3; i++){for (j = 0; j < 3; j++){scanf("%c", &arr[i][j]);getchar();}}for (i = 0; i < 3; i++){if (arr[i][0] == arr[i][1] && arr[i][1] == arr[i][2]){flag = arr[i][1];break;}if (arr[0][i] == arr[1][i] && arr[1][i] == arr[2][i]){flag = arr[1][i];break;}}if (arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2]){flag = arr[1][1];}if (arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0]){flag = arr[1][1];}if (flag == 'K')printf("KiKi wins!");else if (flag == 'B')printf("BoBo wins!");elseprintf("No winner!");return 0;
}
結尾
往期回顧:
【C語言刷題】第九天:加量加餐繼續,代碼題訓練,融會貫通IO模式
【C語言刷題】第八天:加量加餐繼續,代碼題訓練,熟練IO模式
【C語言刷題】第七天:加量加餐繼續,代碼題訓練,熟練IO模式
【C語言刷題】第六天:繼續加量加餐,代碼題訓練,熟練IO模式
【C語言刷題】第五天:繼續加量加餐,代碼題訓練,熟練IO模式
【C語言刷題】第四天:繼續加量加餐,代碼題入門,熟練IO模式
【C語言刷題】第三天:繼續加量加餐,代碼題入門,熟練IO模式
【C語言刷題】第二天:加量加餐,代碼入門,熟悉IO模式
【C語言刷題】第一天:簡單代碼入門,熟悉IO模式
結語:本篇文章帶大家刷了十道題目,大家認真思考一下,結合知識點就能想出來,大家一定要及時回顧前面刷過的題目。本文到這里就結束了,希望對友友們有所幫助。本文的代碼相比起之前的題目,難度上已經有了加深,大家要上手操作,后面的代碼題難度上整體是逐漸遞增的,博主控制了難度,這樣友友們能比較絲滑地上手敲下去。