优秀的编程知识分享平台

网站首页 > 技术文章 正文

每日一题||C语言刷题(c语言刷题网)

nanyue 2024-09-12 15:54:04 技术文章 8 ℃

题目描述

给出一个 n?m 的整数矩阵,将这个矩阵顺时针旋转 90° 后输出。

输入

第一行输入两个整数 n,m。(1≤n,m≤200)

接下来 n行,每行输入 m 个元素,表示输入的矩阵。矩阵中的元素都是绝对值小于 10000的整数。

输出

输出 m行,每行 n个元素,表示旋转后的矩阵。

#include<stdio.h>

int main(){
	int n,m;
	scanf("%d%d", &n, &m);
	int arr[205][205];
	int i,j;
	for (i = 0; i <n; i++){
		for (j = 0; j < m; j++){
			scanf("%d",&arr[i][j]);
		}
	}
	// 分割线
	printf("=================\n"); 
	for (i = 0; i < m; i++){
		for(j = 0; j < n; j++){
			printf("%d", arr[n-j-1][i]);  //难点?
			// 如果 列数不是最后一个,则打印空格
			if (j != n-1){
				printf(" ");
			} 
		}
	    // 如果行数不是最后一个,则打印换行 
		if (i != m -1){
			printf("\n");
		}
	}
	return 0;
}


变体一:矩阵水平翻转

#include<stdio.h>
// 矩阵的水平反转 
int main(){
	int n,m,i,j;
	// 输入行与列 
	scanf("%d%d", &n, &m);
	int arr[205][205];
	// 输入矩阵 
	for (i =0; i < n; i++){
		for (j = 0; j < m; j++){
			scanf("%d", &arr[i][j]);
		}
	}
	//打印分割线
	printf("===================\n");
	// 水平翻转
	for (i = 0; i < n; i++) {
		for (j = m-1; j >= 0; j--){
			printf("%d", arr[i][j]);
			
			// 空格
			 if (j != 0){
			 	printf(" ");
			 } else {
			 	printf("\n");
			 }
		}
	}
	return 0;	 
}


变体二:竖直翻转

#include<stdio.h>
// 矩阵的竖直翻转
int main(){
	int n,m;
	scanf("%d%d", &n, &m);
	int arr[205][205];
	int i,j;
	// 依次输入矩阵元素
	for (i = 0; i < n; i++){
		for (j = 0; j < m; j++){
			scanf("%d", &arr[i][j]);
		}
	} 
	// 分割线
	printf("=====================\n");
	
	// 矩阵的竖直翻转, n: 行元素变化; m; 列元素不变;
	for (i = n -1; i >= 0; i--){
		for (j = 0; j < m; j++){
			printf("%d", arr[i][j]);
			// 空格
			if (j != m-1){
				printf(" ");
			} else {
				printf("\n");
			}
		}
	} 
	return 0;
} 


变体三、选择翻转类型

#include<stdio.h>
int main(){
	int n,m, i,j, mode;
	// 输入行与列 
	scanf("%d%d", &n, &m);
	int arr[205][205];
	//依次输入矩阵的元素
	for (i =0; i < n; i++){
		for (j=0; j <m; j++){
			scanf("%d",&arr[i][j]);
		}
	} 
	scanf("%d", &mode);
	printf("===================\n");
	if (mode == 1){
	// 水平翻转
		for (i = 0; i < n; i++) {
			for (j = m-1; j >= 0; j--){
				printf("%d", arr[i][j]);
				// 空格
			 	if (j != 0){
			 		printf(" ");
					} else {
			 		printf("\n");
					}
				}
			}
		}
	else if (mode == 0){
		// 矩阵的竖直翻转, n: 行元素变化; m; 列元素不变;
		for (i = n -1; i >= 0; i--){
			for (j = 0; j < m; j++){
				printf("%d", arr[i][j]);
				// 空格
				if (j != m-1){
					printf(" ");
				} else {
					printf("\n");
				}
			}
		} 
	}
	return 0;
}


Tags:

最近发表
标签列表