矩阵逆时针旋转90度

#include <stdio.h>
int main(){
    int a[4][4],b[4][4],i,j; /*a 存放原始数组数据,b 存放旋转后数组数据*/
    printf("please input original matrix elements -> 16 numbers: \n");
    /*输入一组数据存放到数组 a 中,然后旋转存放到 b 数组中*/
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            scanf("%d",&a[i][j]);
            printf("%6d",a[i][j]);
            b[3-j][i]=a[i][j];
            //原矩阵的第i行变为了旋转矩阵的第i列;
            //原矩阵的第j列变为了旋转矩阵的倒数第j行;
            //(可看作先矩阵转置,然后按转置矩阵的行数i逆序输出,先输出转置矩阵的最后一行...便得到旋转后的矩阵)
        }
        printf("\n");
    }
    printf("rotated matrix:\n");
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
            printf("%6d",b[i][j]);  
        }

        printf("\n");
    }

    return 0;   
}

这里写图片描述


scanf

#include <stdio.h>
int main(){

    int a;
    int i;
    printf("###for_1 start###\n");
    for (i=0; i<2; ++i)
    {
        scanf("%d", &a);
        printf("$i=%d a=%d\n",i, a);
    }
    printf("\n**i=%d a=%d\n###for_1 end###\n\n\n\n",i, a);

    printf("###for_2 start###\n",i, a);
    for (i=0; i<2; i++)
    {
        scanf("%d", &a);
        printf("$i=%d a=%d\n",i, a);
    }
    printf("\n**i=%d a=%d\n",i, a);
    printf("###for_2 end###\n");
    return 0;
}
//在for循环中的i++和++i效果一样,实际上,i++和++i在单独用(没有赋值给变量)时没有区别。
/*
for_1中,我输入了3个数(1,2,3),第3个数在for_2中第一次循环中被程序读取了,所以直接出
现了"$i=0 a=3";然后我再向缓冲区输入2个数(3,4),结果只printf了一次。由此可以看出
scanf的用法。
*/

这里写图片描述

1.假设输入是一根连接到你程序上的管子,你所有的输入都会像水一样按顺序灌进程序。每当你按下(换行符),新的输入就会全部加入这个管子中等待被程序接受。scanf干了什么呢?如果管子中还有水,它就试图按一定格式从管道中取出水来,如果格式不对或者管子是空的,就会结束并等待下一个输入。相当于你一次放入几个数到管子中,但程序还是一个一个取数的,一个一个输出的。

2.假如在你的程序中输入了一个字母会怎么样,请搜索“stdin流阻塞”。

3.首先,在你没有回车时,你所输入的字符是保存在终端的,并没有给电脑处理当你键入回车,系统才开始对它进行处理,第一个数字,处理完显示出来,然后依次显示剩余的数字,直到遇到回车。原理大概就这样,scanf格式输入以遇到第一个空白字符为结束编制,我们常输入回车就起这个作用,但是如果后边也需要输入,同时书写格式与它完全不同,可以省略回车,因为在下次输入完你就会输入回车。
【转发】

  • 10
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值