针对C语言入门OJ题
(简单)BC101-班级成绩输入输出_牛客题霸_牛客网 (nowcoder.com)
参考代码:
//代码一 #include <stdio.h> int main() { int i = 0; //5个学生 for(i=0; i<5; i++) { //读取一个人的5科成绩 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++) { //读取一个人的5科成绩 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-矩阵元素定位_牛客题霸_牛客网 (nowcoder.com)
参考代码:
#include <stdio.h> int main() { int n = 0; int m = 0; scanf("%d %d", &n, &m);//接收矩阵数据 //这是C99语法-变长数组,但是数组不能初始化 //int arr[n][m]; int arr[10][10];//具体给值也行 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-序列重组矩阵_牛客题霸_牛客网 (nowcoder.com)
参考代码:
//代码一 #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");//打印m个后换行 } return 0; }
//代码二 #include <stdio.h> int main() { int n = 0; int m = 0; int arr[10][10] = {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]); } } //打印 for(i=0; i<n; i++) { for(j=0; j<m; j++) { printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
//代码三 #include <stdio.h> int main() { int n = 0; int m = 0; int arr[10][10] = {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]); printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
(简单)BC104-最高身高_牛客题霸_牛客网
参考代码:
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 hi = 0; scanf("%d", &hi); if(hi>max) { x = i; y = j; max = hi; } } } printf("%d %d\n", x+1,y+1);//通常情况下我们所认为的下标 - 从1开始 return 0; }
(简单)BC105-矩阵相等判定_牛客题霸_牛客网
参考代码:
//代码一 #include <stdio.h> int main() { int n = 0; int m = 0; int arr1[10][10]; int arr2[10][10]; //int arr1[n][m]; //int arr2[n][m]; scanf("%d %d", &n, &m);//输入n和m //输入第一矩阵的数据 int i = 0; int j = 0; 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]) break; } } if(i==n && j==m) { printf("Yes\n"); } else { printf("No\n"); } return 0; }
//代码二 #include <stdio.h> int main() { int n = 0; int m = 0; int arr1[10][10]; int arr2[10][10]; //int arr1[n][m]; //int arr2[n][m]; scanf("%d %d", &n, &m);//输入n和m //输入第一矩阵的数据 int i = 0; int j = 0; 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; }
参考代码:
//代码一 #include <stdio.h> int main() { int n = 0; scanf("%d", &n); //int arr[n][n]; int arr[10][10]; int i = 0; int j = 0; 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(arr[i][j] != 0) { //下三角有不是0的就不满足 printf("NO"); return 0; } } } } printf("YES"); return 0; }
//代码二 #include <stdio.h> int main() { int n = 0; scanf("%d", &n); //int arr[n][n]; int arr[10][10]; int i = 0; int j = 0; for(i=0; i<n; i++) { for(j=0; j<n; j++) { scanf("%d", &arr[i][j]); if(i>j) { if(arr[i][j] != 0) { //下三角有不是0的就不满足 printf("NO"); return 0; } } } } printf("YES"); return 0; }
(简单)BC107-矩阵转置_牛客题霸_牛客网
参考代码:
#include <stdio.h> int main() { int n = 0; int m = 0; scanf("%d %d", &n, &m); int arr[10][10]; //int arr[n][m]; int i = 0; int j = 0; for(i=0; i<n; i++)//2 { for(j=0; j<m; j++)//3 { scanf("%d", &arr[i][j]); } } //输出转置后的矩阵 for(i=0; i<m; i++)//3 { for(j=0; j<n; j++)//2 { printf("%d ", arr[j][i]); } printf("\n"); } return 0; }
(中等)BC108-矩阵交换_牛客题霸_牛客网
解析:
- 如果是 %c 读取字符,一定要注意清理前面输入时所留下的空白字符(两种方法)。
- 注意二维数组的下标。
参考代码:
#include <stdio.h> int main() { int n = 0;//行 int m = 0;//列 int arr[10][10] = { 0 }; int k = 0;//操作的次数 char t = 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", &k); for (i = 0; i<k; i++) { //读取操作指令 //注释解释: //scanf("%d", &a); //scanf(" %c", &c); //消耗 %d 后的所有后继空白符,然后读一个 char;或者是使用 getchar 进行读取 scanf(" %c %d %d", &t, &a, &b); //执行操作 if (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]); } printf("\n"); }
(简单)BC109-杨辉三角_牛客题霸_牛客网
参考代码:
#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>=2 && j>=1) 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; }
(入门)BC110-井字棋_牛客题霸_牛客网
参考代码:
#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] && arr[i][1] != 'O') { flag = arr[i][1]; break; } //列 if(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(flag == 'K') printf("KiKi wins!"); else if(flag == 'B') printf("BoBo wins!"); else printf("No winner!"); return 0; }