精华内容
下载资源
问答
  • C语言实现矩阵翻转(上下翻转、左右翻转)
    2021-05-21 06:45:33

    C语言实现矩阵翻转 上下翻转与左右翻转

    实例代码:

    #include

    void matrix (int m, int n, int t)

    {

    int arr[m][n];

    int i, j, k;

    for (i = 0; i < m; i++){

    for (j = 0; j < n; j++){

    scanf("%d", &arr[i][j]);

    }

    }

    if (t == 0){//左右翻转

    for (i = 0; i < m; i++){

    for (j = n-1; j >= 0; j--){

    if ( j == 0 ) {

    printf("%d", arr[i][j]);

    }

    else {

    printf("%d ", arr[i][j]);

    }

    }

    printf("\n");

    }

    }

    else if (t == 1){//上下翻转

    for (i = m-1; i >= 0; i--){

    for (j = 0; j < n; j++){

    if ( j == n - 1 ) {

    printf("%d", arr[i][j]);

    }

    else {

    printf("%d ", arr[i][j]);

    }

    }

    printf("\n");

    }

    }

    }

    int main()

    {

    int m, n, t;

    scanf("%d %d %d", &m, &n, &t);

    matrix (m, n, t);

    return 0;

    }

    动态分配内存

    void matrix (int m, int n, int t)

    {

    int i, j;

    int **arr=(int**)malloc(m*sizeof(int*));

    for(i = 0; i < m; i++)

    {

    arr[i] = (int*)malloc(n * sizeof(int));

    for(j = 0; j < n;j++)

    {

    scanf("%d", &arr[i][j]);

    }

    }

    /*

    int **arr = new int*[m];

    for(i=0;i

    {

    arr[i] = new int[n];

    for(j=0;j

    {

    scanf("%d", &arr[i][j]);

    }

    }

    */

    if (t == 0){//左右翻转

    for (i = 0; i < m; i++){

    for (j = n-1; j >= 0; j--){

    if ( j == 0 ) {

    printf("%d", arr[i][j]);

    }

    else {

    printf("%d ", arr[i][j]);

    }

    }

    printf("\n");

    }

    }

    else if (t == 1){//上下翻转

    for (i = m-1; i >= 0; i--){

    for (j = 0; j < n; j++){

    if ( j == n - 1 ) {

    printf("%d", arr[i][j]);

    }

    else {

    printf("%d ", arr[i][j]);

    }

    }

    printf("\n");

    }

    }

    }

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    更多相关内容
  • 旋转矩阵 代码(C)本文地址:外链网址已屏蔽输出旋转矩阵, 使矩阵是按对角线螺旋上升, 在输出规则确定以后, 就可以判断, 上升规律是, 行列相加为定值.所以采用两次循环的方法, 并且上下矩阵, 分开输出.如:1 2 6 7 153 ...

    旋转矩阵 代码(C)

    本文地址: 外链网址已屏蔽

    输出旋转矩阵, 使矩阵是按对角线螺旋上升, 在输出规则确定以后, 就可以判断, 上升规律是, 行列相加为定值.

    所以采用两次循环的方法, 并且上下矩阵, 分开输出.

    如:

    1 2 6 7 15

    3 5 8 14 16

    4 9 13 17 22

    10 12 18 21 23

    11 19 20 24 25

    代码:

    /*

    * main.cpp

    *

    * Created on: 2014.6.12

    * Author: Spike

    */

    /*eclipse cdt, gcc 4.8.1*/

    #include

    void output(int n)

    {

    if (n < 0) return;

    const int MAX = 100;

    int a[MAX][MAX];

    int min = 1;

    int max = n*n;

    //上半个矩阵

    for (int i=0; i

    for (int j=0; j

    if (i % 2 == 0) {

    a[i-j][j] = min++;

    a[n-1-i+j][n-1-j] = max--;

    } else {

    a[j][i-j] = min++;

    a[n-1-j][n-1-i+j] = max--;

    }

    }

    for (int i=0; i

    for (int j=0; j

    printf("%3d%c", a[i][j], j == n - 1 ? '\n' : ' ');

    }

    }

    int main()

    {

    output(5);

    return 0;

    }

    输出:

    1 2 6 7 15

    3 5 8 14 16

    4 9 13 17 22

    10 12 18 21 23

    11 19 20 24 25

    A105342986-99981.png_small.png

    展开全文
  • 矩阵运算 c语言编程

    2021-05-26 10:35:13
    C语言实现矩阵转置、求逆阵、矩阵加减乘除法#include #include #include #include #include void init(int *a,int m,int n){//随机产生函数srand(time(NULL));int i,j;for(i=0;i{for(j=0;j*(a+i*n+j)=rand()%10+1;}}...

    C语言实现矩阵转置、求逆阵、矩阵加减乘除法

    #include

    #include

    #include

    #include

    #include

    void init(int *a,int m,int n)

    {//随机产生函数

    srand(time(NULL));

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    *(a+i*n+j)=rand()%10+1;

    }

    }

    void input(int *a,int m,int n)

    {//用户输入函数

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    scanf("%d",a+i*n+j);

    }

    }

    void choose(int *a,int m,int n)

    {//是随机产生还是用户输入

    int i;

    printf("是想输入矩阵(输入0)还是随机产生(输入1):\n");

    scanf("%d",&i);

    switch(i)

    {

    case 1:init(a,m,n);

    break;

    case 0:printf("请输入%d个数\n",m*n);

    input(a,m,n);

    break;

    default:printf("你的输入有误,请重新输入:\n");

    break;

    }

    }

    void print(int *a,int m,int n)

    {//打印函数

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    printf("%4d",*(a+i*n+j));

    printf("\n");

    }

    }

    //矩阵关于y轴翻转

    void juzheny(int *a,int *b,int m,int n)

    {

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    *(b+i*n+j)=*(a+i*n+n-j-1);

    }

    }

    //矩阵关于x轴翻转

    void juzhenx(int *a,int *b,int m,int n)

    {

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    *(b+i*n+j)=*(a+(m-i-1)*n+j);

    }

    }

    //顺时针旋转90°,逆时针旋转270°

    void juzhens(int *a,int *b,int m,int n)

    {

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    *(b+i*m+j)=*(a+(m-j-1)*n+i);

    }

    }

    //逆时针旋转90°,顺时针旋转270°

    void juzhenn(int *a,int *b,int m,int n)

    {

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    *(b+i*m+j)=*(a+j*n+(n-i-1));

    }

    }

    // 顺/逆时针旋转180°

    void juzhens1(int *a,int *b,int m,int n)

    {

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    *(b+i*n+j)=*(a+(m-i-1)*n+n-j-1);

    }

    }

    //矩阵转置

    void juzhenzz(int *a,int *b,int m,int n)

    {

    int i,j;

    for(i=0;i

    {

    for(j=0;j

    *(b+i*m+j)=*(a+j*n+i);

    }

    }

    //任意修改矩阵的元素值

    void juzhenyz(int *a,int i,int j,int x,int m,int n)

    {

    *(a+i*n+j)=x;

    }

    void jiemian()

    {

    int i;

    for(i=0;i<80;i++)

    printf("*");

    printf("\n");

    printf(" ");

    }

    void menu()

    {//菜单界面初始化

    int i;

    for(i=1;i<3;i++)

    printf("\n");

    printf("\n关于一些矩阵方面的应用!\n");

    for(i=0;i<80;i++)

    printf("=");

    printf("\n0.查询矩阵中元素所在的行号和列号。 1.任意修改矩阵的元素值。\n");

    printf("\n2.矩阵转置。 3.矩阵关于y轴翻转。 4.矩阵关于x轴翻转。\n");

    printf("\n5.矩阵顺或逆时针旋转90°或逆或顺时针旋转270°。 \n");

    printf("\n6.矩阵旋转180°。7.删除矩阵中该元素所在的行和列,得到了新的二维数组。\n");

    printf("\n8.矩阵的逆矩阵。9.矩阵对应行列式的值。10.求矩阵的伴随矩阵。 11.退出系统. \n");

    for(i=0;i<80;i++)

    printf("=");

    printf("\n");

    }

    int zhanghao()//用户输入用户名账号和密码

    {

    char str1[80],str2[80],

    展开全文
  • c – 旋转矩阵n次

    2021-05-20 17:38:53
    4×5矩阵旋转由下图表示.请注意,在一次旋转中,您必须仅将元素移动一步(请参阅样本测试以获得更清晰). 保证M和N的最小值是偶数. 输入 First line contains three space separated integers, M, N and R, where M ...

    当我陷入困境时,我正在解决HackerRank上的问题.

    问题陈述

    You are given a 2D matrix, a, of dimension MxN and a positive integer R. You have to rotate the matrix R times and print the resultant matrix. Rotation should be in anti-clockwise direction.

    4×5矩阵的旋转由下图表示.请注意,在一次旋转中,您必须仅将元素移动一步(请参阅样本测试以获得更清晰).

    0k9kw.png

    保证M和N的最小值是偶数.

    输入

    First line contains three space separated integers, M, N and R, where M is the number of rows, N is number of columns in matrix, and R is the number of times the matrix has to be rotated.

    Then M lines follow, where each line contains N space separated positive integers. These M lines represent the matrix.

    产量

    Print the rotated matrix.

    约束

    2 <= M, N <= 300

    1 <= R <= 10^9

    min(M, N) % 2 == 0

    1 <= aij <= 108, where i ∈ [1..M] & j ∈ [1..N]'

    我试图做的是将圆圈存储在一维数组中.像这样的东西.

    while(true)

    {

    k = 0;

    for(int j = left; j <= right; ++j) {temp[k] = a[top][j]; ++k;}

    top++;

    if(top > down || left > right) break;

    for(int i = top; i <= down; ++i) {temp[k] = a[i][right]; ++k;}

    right--;

    if(top > down || left > right) break;

    for(int j = right; j >= left; --j) {temp[k] = a[down][j] ; ++k;}

    down--;

    if(top > down || left > right) break;

    for(int i = down; i >= top; --i) {temp[k] = a[i][left]; ++k;}

    left++;

    if(top > down || left > right) break;

    }

    然后我可以通过计算其模数为R的长度来轻松旋转1D矩阵.但是,我如何将其重新放回矩阵形式?再次使用循环可能会导致超时.

    请不要提供代码,但只提供建议.我想自己做.

    解决方案创建:

    #include

    using namespace std;

    int main() {

    int m,n,r;

    cin>>m>>n>>r;

    int a[300][300];

    for(int i = 0 ; i < m ; ++i){

    for(int j = 0; j < n ; ++j)

    cin>>a[i][j];

    }

    int left = 0;

    int right = n-1;

    int top = 0;

    int down = m-1;

    int tleft = 0;

    int tright = n-1;

    int ttop = 0;

    int tdown = m-1;

    int b[300][300];

    int k,size;

    int temp[1200];

    while(true){

    k=0;

    for(int i = left; i <= right ; ++i)

    {

    temp[k] = a[top][i];

    // cout<

    ++k;

    }

    ++top;

    if(top > down || left > right)

    break;

    for(int i = top; i <= down ; ++i)

    {

    temp[k]=a[i][right];

    // cout<

    ++k;

    }

    --right;

    if(top > down || left > right)

    break;

    for(int i = right; i >= left ; --i)

    {

    temp[k] = a[down][i];

    // cout<

    ++k;

    }

    --down;

    if(top > down || left > right)

    break;

    for(int i = down; i >= top ; --i)

    {

    temp[k] = a[i][left];

    // cout<

    ++k;

    }

    ++left;

    if(top > down || left > right)

    break;

    //________________________________\\

    size = k;

    k=0;

    // cout<

    for(int i = tleft; i <= tright ; ++i)

    {

    b[ttop][i] = temp[(k + (r%size))%size];

    // cout<

    // int index = (k + (r%size))%size;

    // cout<

    ++k;

    }

    ++ttop;

    for(int i = ttop; i <= tdown ; ++i)

    {

    b[i][tright]=temp[(k + (r%size))%size];

    ++k;

    }

    --tright;

    for(int i = tright; i >= tleft ; --i)

    {

    b[tdown][i] = temp[(k + (r%size))%size];

    ++k;

    }

    --tdown;

    for(int i = tdown; i >= ttop ; --i)

    {

    b[i][tleft] = temp[(k + (r%size))%size];

    ++k;

    }

    ++tleft;

    }

    size=k;

    k=0;

    if(top != ttop){

    for(int i = tleft; i <= tright ; ++i)

    {

    b[ttop][i] = temp[(k + (r%size))%size];

    ++k;

    }

    ++ttop;

    }

    if(right!=tright){

    for(int i = ttop; i <= tdown ; ++i)

    {

    b[i][tright]=temp[(k + (r%size))%size];

    ++k;

    }

    --tright;

    }

    if(down!=tdown){

    for(int i = tright; i >= tleft ; --i)

    {

    b[tdown][i] = temp[(k + (r%size))%size];

    ++k;

    }

    --tdown;

    }

    if(left!=tleft){

    for(int i = tdown; i >= ttop ; --i)

    {

    b[i][tleft] = temp[(k + (r%size))%size];

    ++k;

    }

    ++tleft;

    }

    for(int i = 0 ; i < m ;++i){

    for(int j = 0 ; j < n ;++j)

    cout<

    cout<

    }

    return 0;

    }

    展开全文
  • c语言旋转位图90度

    2013-07-03 00:16:10
    纯c函数写的旋转位图90度程序, 提供了编程接口方便调用。 不涉及任何平台相关代码,可以在windows和linux中运行。 其中变量定义用到了c++的规则(GNU c) 所以有些编译器可能报错, 请使用c++ 源代码格式cpp,再...
  • C语言 矩阵的翻转,旋转,螺旋输出
  • C语言实现蛇形矩阵

    万次阅读 多人点赞 2017-12-19 21:37:14
    c语言实现蛇形矩阵
  • 本人运用C语言编写矩阵的行阶梯,行最简变换,并求对应方程组通解的程序,可实现对任意一个矩阵的行阶梯变换和行最简变换,进而求出矩阵的秩,矩阵所对应的齐次或非齐次线性方程组的通解特解。输入矩阵规格时,数字...
  • C语言实现矩阵的转置

    千次阅读 2021-01-20 11:42:09
    Today,让我来带大家学习怎样用C++实现矩阵的转置 话不多说,直接上代码: #include "stdio.h" #include "stdlib.h" #include "time.h" #define N 100 void display(int **a,int m,int n); void fun(int **a,int...
  • C语言_数组原地_顺时针旋转 90 度

    千次阅读 2020-07-07 10:13:48
    你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵旋转图像。 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入矩阵,使其变为: [ [7,4,1], [8,5,2], ...
  • C语言编程竞赛初赛试题.docC/C语言编程竞赛训练题(部分)1.编辑工具一般都具有字符串“查找”功能,试编程实现字符串的查找并统计匹配的次数。要求如下1 查找字符串以逗号为分隔符,若遇逗号,则从逗号后的字符重新...
  • C语言如何输出转置矩阵

    千次阅读 2021-02-09 18:39:31
    ##关于C语言如何输出转置矩阵 我们遇到这样的题目,即对于一个给定的 3×3 矩阵,请将其顺时针旋转 90 度后输出。即要求我们输出一个转置矩阵。 为了使结论更具普遍性,此处我们讨论n*n矩阵的转置。 方法一 我们...
  • C语言 螺旋数组矩阵

    2021-05-20 10:47:31
    } // 逆时针旋转 第一遍 void chushi() { int n = 36; int r = ceil(sqrt(n)); int nums[n][n]; for (int x = 0; x ; x++) { for (int y = 0; y ; y++) { nums[x][y] = 0; } } int j = r / 2; int k = r / 2; int f...
  • C语言矩阵问题

    2021-11-16 16:21:51
    今天我们只看矩阵旋转,希望得到当前矩阵顺时针旋转90度以后得到的矩阵。 Input 输入数据的第一行是一个正整数T,代表有T组测试样例。接下来T组数据,每组数据第一行是两个整数M,N (0 < M , N < 100),分别...
  • 24、【数组】旋转矩阵(C++版)

    千次阅读 2021-01-10 13:01:54
    则此题是n×n型矩阵旋转,重点把握好旋转前后行、列索引编号的变化。通过对旋转前后的索引编号进行分析找出,旋转后的变化关系即可。 解法一:辅助数组 当旋转第一行时, (0,0) => (0,3) (0,1) => (1,3) (0,...
  • C语言实现二值图像旋转任意角度

    热门讨论 2009-12-15 18:52:56
    C语言实现二值图像绕图像中心,旋转任意角度。
  • C语言编程

    2021-10-22 09:50:32
    C语言编程题写一个函数,判断一个字符串是否由另一个字符串旋转得到写一个函数,可以实现左旋字符串中的n个字符有一个数字矩阵,矩阵的每行从左到右时递增的,每列从上到下也是递增的,请编写程序在这样的矩阵中查找某个...
  • C语言编程练习(含答案).pdf本文由梦零99贡献 第一套(同教材的第49题) 给定程序中,函数f u n 的功能是将形参s 所指字符串中所有的ASCII码值小于97 的字符存入形参t 所指字符数组中,形成一个新串,并统计出符合条件...
  • 矩阵旋转90度 编写一个函数,该函数采用下面左侧所示的4x4矩阵并将其旋转90度。
  • C语言时尚编程百例

    2021-05-23 09:33:21
    实例89 填充图形 实例90 图形的旋转和变换 实例91 VGA 256色编程 实例92 生成美丽的随机图案 实例93 Mandelbrot分型图 实例94 动画程序设计 实例95 屏幕检测小程序 实例96 运动的小车 实例97 动态显示16色位图 实例...
  • 接下来我们直接来看比较复杂的蛇型数组(9*9以内) 蛇形数组由于自身数字在旋转,有从左往右和从右往左、从上往下和从下往上四种递增方式。用第二种直接循环的方式显然不太适合。所以我们采用创建二维数组,直接在...
  • 题自CCF201503-1《图像旋转》 终于遇到要想一阵子的签到题了,...不过尴尬的事又来了,矩阵旋转方向本应是逆时针的编程顺时针的了XD,检查了一遍发现输出时应该是列递减而不是列递增,害粗心了。 最后提交,一百
  • 有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。 测试样例: [[1,2,3],[4,5,6],[7,8,9]],3 返回:[[7,4,1],[8,...
  • 矩阵旋转——(c语言)

    千次阅读 2013-01-17 19:07:00
    n阶矩阵旋转 矩阵的顺时针旋转基本有四种情况: 0度 90度 180度 270度,相当于逆向的90度 算法思路 矩阵的计算主要是考虑下标之间的变换,先上一张我在纸上分析的图 (ps:好大啊,没有压缩) ...
  • C语言:拉丁方阵

    2021-05-22 05:02:22
    例29 拉丁方阵问题描述构造 NXN 阶的拉丁方阵,使方阵中的每一行和每一列中数字1到N...输入样例4输出样例1 2 3 42 3 4 13 4 1 24 1 2 3(1)编程思路。观察给出的例子,可以发现:若将每一行中第一列的数字和最后一列...
  • C语言实现字符串的左旋转下面采用C语言用三种方法实现这样一个问题:给定一个字符串如 abcdef 左旋转2位,即cdefab,左旋转6位,即abcdef。从上面的描述中大概得知这是一个周期性的字符串重现问题,具有周期性。下面...
  • 选择结构(1) 编程判断输入整数x的正负性和奇偶性。(2) 已知银行整存整取存款不同期限的月息利率分别为:0.63% 期限一年0.66% 期限=年月息利率= 0.69% 期限三年0.75% 期限五年0.84% 期限八年要求输入存钱的本金...
  • 我正在研究旋转NxN矩阵的这段代码;我已无数次追踪该程序,我有点理解实际旋转是如何发生的.它基本上首先旋转角落,然后沿角落顺时针旋转角落后的元素.我只是不理解几行,而且我的大脑中的代码仍然没有“驱动回家”,可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,148
精华内容 1,259
关键字:

C语言编程旋转矩阵