文章目录大家好我是沐曦希
- 矩阵交换
- 输入描述
- 输出描述
- 思路
- 代码
- 小乐乐改数字
- 描述
- 输入描述
- 输出描述
- 思路
- 代码
- 求质数个数
- 描述
- 输出描述
- 思路
- 代码
- 去重整数并排序
- 描述
- 输入描述
- 输出描述
- 思路
- 代码
- 井字棋
- 描述
- 输入描述
- 输出描述
- 思路
- 代码
- 杨辉三角
- 描述
- 输入描述
- 输出描述
- 例子
- 代码
- 写在最后
矩阵交换
题目链接: BC139 矩阵交换
输入描述输出描述第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10)
从2到n+1行,每行输入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≤10,1≤a≤b≤m≤10)。
提示:当t为别的字符时不需要处理
思路输出n行m列,为矩阵交换后的结果。每个数后面有一个空格。
代码创建一个数组arr[n][m]来存储数组。
当k=1,t为r,a=1,b=2时
当k=1,t为c,a=1,b=2时
当t为其他字母时,不需要处理。
当k不为1是,就需要循环来实现。
#include小乐乐改数字int main() { int n=0;//行 int m=0;//列 scanf("%d%d",&n,&m); int i=0; int j=0; int a=0;//互换的行 int b=0;//互换的列 char t=0;//接收字符 int arr[10][10]={0}; for(i=0;i for(j=0;j scanf("%d",&arr[i][j]); } } int k=0;//k次操作 scanf("%d",&k); for(i=0;i //读取操作指令 // 消耗 %d 后的所有后继空白符,然后读一个 char scanf(" %c%d%d",&op,&a,&b); if(t=='r') { //行变换 for(j=0;j int tmp=arr[a-1][j]; arr[a-1][j]=arr[b-1][j]; arr[b-1][j]=tmp; } } else if(t=='c') {//列转换 for(i=0;j int tmp=arr[j][a-1]; arr[j][a-1]=arr[j][b-1]; arr[j][b-1]=tmp; } } } //输出 for(i=0;i for(j=0;j printf("%d ",arr[i][j]); } printf("n"); } return 0; }
题目链接:链接: BC116小乐乐改数字
描述输入描述小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输出描述输入包含一个整数n (0 ≤ n ≤ 109)
思路输出一个整数,即小乐乐修改后得到的数字。
创建一个整型n接受输入,和一个整型ret来输出。
通过n%10来获得各个位数并且判断,判断之后各个修改后的位数通过乘10的n次方之和来获得ret
例如:
输入:222 输出:0
输入:123 输出103代码
//code1 #include求质数个数#include int main() { int n = 0; scanf("%d", &n); int ret = 0; int count = 0; while (n) { int tmp = n % 10; if (tmp % 2 == 0) tmp = 0; else tmp = 1; ret += tmp * pow(10, count++); n /= 10; } printf("%dn", ret); return 0; } //code2 #include int main() { int n,m=0,t,x,k; scanf("%d",&n); for(k=1;n!=0;k=k*10) { t=n%10; if(t%2==0) x=0; else x=1; m=x*k+m; n=n/10; } printf("%d",m); return 0; }
题目链接: BC135 KiKi求质数个数
描述输出描述所有三位整数中,有多少个质数。
思路一行,一个整数,表示所有三位整数中,有多少个质数。
代码求质数可以通过for循环该数字%从2到该数字的平方根来判断。
#include去重整数并排序#include int main() { int i, j; int count = 0; for (i = 101; i < 1000; i += 2) { for (j = 2; j < sqrt(i); j++) { if (i % j == 0) { break; } } if (j > sqrt(i)) { count++; } } printf("%d", count); return 0; }
题目链接: BC136 KiKi去重整数并排序
描述输入描述给定一个整数序列,把其中的重复的整数去掉,并将去重后的序列从小到大排序输出。
输出描述第一行,输入一个整数n,表示序列有n个整数。
第二行输入n个整数(每个整数大于等于1,小于等于1000),整数之间用空格分隔。
思路去重并且从小到大排列的整数序列,整数之间用空格分隔。
代码方法一:先qsort或者冒泡排序,之后再去除重复的整型,把后面的整型往前挪。
方法二:直接定义一个m变量,令a[m]=m,可以避免重复,打印时只打印非0的。
//code1 #include井字棋//暴力求解 int cmp(const void* e1, const void* e2) { return (*(int*)e1 - *(int*)e2); } int main() { int n = 0; int arr[1000] = {0}; scanf("%d", &n); //接受n个数字 int i = 0; for(i=0; i scanf("%d", &arr[i]); } //处理 qsort(arr,n,sizeof(arr[0]),cmp); //2. 去重 //去重比较的对数数n-1 for(i=0; i if(arr[i] == arr[i+1]) { //把从i+1下标往后的元素全部往前覆盖 int k = 0; for(k=i; k arr[k] = arr[k+1]; } n--; i--; } } //3. 打印 for(i=0; i printf("%d ", arr[i]); } return 0; } //code2 #include int main() { int n = 0; int arr[1001] = {0};//1000 scanf("%d", &n); //接受n个数字 int i = 0; int m = 0; for(i=0; i scanf("%d", &m); arr[m] = m; } for(i=0; i<=1000; i++) { if(arr[i] != 0) { printf("%d ", arr[i]); } } return 0; }
题目链接:链接: BC110 井字棋
描述输入描述KiKi和BoBo玩“井”字棋。也就是在九宫格中,只要任意行、列,或者任意对角线上面出现三个连续相同的棋子,就能获胜。请根据棋盘状态,判断当前输赢。
输出描述三行三列的字符元素,代表棋盘状态,字符元素用空格分开,代表当前棋盘,其中元素为K代表KiKi玩家的棋子,为O表示没有棋子,为B代表BoBo玩家的棋子。
思路如果KiKi获胜,输出“KiKi wins!”;
如果BoBo获胜,输出“BoBo wins!”;
如果没有获胜,输出“No winner!”。
创建一个二维数组来接受棋盘,通过对左角线,右对角线,,每一行和列是否有相同的三个字符来判断输赢,如果没有则平局。
例如:
输入: K O B O K B B O K 输出: KiKi wins!代码
#include杨辉三角char IsWin(char board[3][3],int row,int col) { int i = 0; for (i = 0; i < row; i++) { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != 'O') return board[i][0]; } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != 'O') return board[0][0]; if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[0][2] != 'O') return board[0][2]; int j = 0; for (j = 0; j < col; j++) { if (board[0][j] == board[1][j] && board[1][j] == board[2][j] && board[0][j] != 'O') return board[0][j]; } return 0; } int main() { char board[3][3]={0}; int i = 0; int j = 0; for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf("%c",&board[i][j]); getchar(); } } char ch = IsWin(board,3,3); if(ch =='K') printf("KiKi wins!"); else if(ch =='B') printf("BoBo wins!"); else printf("No winner!"); return 0; }
题目链接:BC109 杨辉三角
描述输入描述杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
输出描述第一行包含一个整数数n。 (1≤n≤30)
例子包含n行,为杨辉三角的前n行,每个数输出域宽为5。
输入:6
输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
代码
#include写在最后int main() { int n = 0; scanf("%d", &n); int i = 0; int j = 0; int arr[n][n]; arr[0][0] = 1; for (i = 0; i < n; i++) { arr[i][0] = 1; if (i >= 2) { for (j = 1; j < i; j++) { arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } } if (i >= 1) arr[i][i] = 1; } for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { printf("%5d", arr[i][j]); } printf("n"); } return 0; }
友友们觉得不错的可以给个关注,点赞或者收藏哦!感谢各位友友们的支持。
你的❤️点赞是我创作的动力的源泉
你的✨收藏是我奋斗的方向
你的关注是对我最大的支持
你的✏️评论是我前进的明灯
创作不易,希望大佬你支持一下小沐吧



