数组,杨辉,矩阵翻转

来源:互联网 发布:淘宝midway 编辑:程序博客网 时间:2024/06/06 06:33
void main(){    int i = 1;    char arr[21] = {};    char* p = NULL;    p = arr;    for (int i = 0; i < 20; i++)//空出一块空间给‘\0’    {        arr[i] = i + 1;        printf("%d \n", arr[i]);    }    for (p=arr;*p!='\0';p=p+1)    {        printf("%d",*p);    }    getchar();}
void main(){    int i = 1;    char arr[21] = {};    char* p = NULL;    p = arr;    for (int i = 0; i < 20; i++)    {        arr[i] = i + 1;        printf("%d \n", arr[i]);    }    for (p=arr;*p!='\0';p=p+1)    {               printf("%d",*(p));    }    getchar();}

移动地址*p取值

质因子分解

void main()  //90 = 2 * 3 * 3 * 5{       int i = 2, num = 4, a = 0;    while (j / i >= 1)//排除1    {        if (j%i==0)//找到能被整除的数,在排除1以后质子只能被自身整除        {        !a ?printf("%d ",i):printf("* %d",i);        num /= i;//整除赋值        a++;//为了打印前面的乘号,a非0        }        else        {            i++;//递增找到符合条件的数        }    }    getchar();}

杨辉三角

void main(){    int arr[8][8] = {};    for (int i = 0; i < 8; i++)    {               for (int j = 0; j <i; j++)//        {            if (j == 0||j==i)//0列赋值  斜边坐标赋值            {                arr[i][j] = 1;            }            if (arr[i][j]==0)//给剩下的数赋值            {                arr[i][j] = arr[i - 1][j - 1]+arr[i-1][j];//新的值等于上一行两个数之和,看形状就可以知道            }            printf("%3d", arr[i][j]);               }        printf("\n");    }    getchar();}

第一次循环打印了换行,第二次j

void main(){    int a[5][5], b[5][5], i, j;    for (i = 0; i < 5; i++)    {        for (j = 0; j < 5; j++)        {            a[i][j] = 10 + rand() % 91;            //循环给每个下标赋值            b[j][4 - i] = a[i][j];    //顺90度               //b[4-i][4 - j] = a[i][j];   //180度            //b[4 - j][i] = a[i][j];    //逆90度            //b[4 - i][j] = a[i][j];    //上下镜像翻转            //b[i][4 - j] = a[i][j];      //左右镜像翻转              printf("%5d", a[i][j]);        }        printf("\n");    }    printf("\n\t顺时针旋转90度\n\n");    //printf("\n\t顺时针旋转180度\n\n");    //printf("\n\t逆时针旋转90度\n\n\n");    //printf("\n\t上下镜像翻转\n\n");    //printf("\n\t左右镜像翻转\n\n");    for (i = 0; i < 5; i++)    {        for (j = 0; j < 5; j++)        {            //printf("%5d", b[i][j]);//打印赋值结果            printf("%5d",a[4-i][j]);//打印出的结果是一样的不过只是把值的顺序改了,不是真的赋值        }        printf("\n");    }    getchar();}

在循环赋值那里卡住半天没搞懂是怎么回事,数组的赋值是没规定必须从首地址开始的,也可以先从其它下标一 一赋值,打印出来的结果也会不一样;

void main(){    int a[5][5], b[5][5], i, j;    char arr[65];    for (i = 0; i < 5; i++)    {        for (j = 0; j < 5; j++)        {            a[i][j] = 10 + rand() % 91;             printf("%5d", a[i][j]);         }           printf("\n");    }    printf("\n\t顺时针旋转90度\n\n");    char brr[65];    for (i = 0; i < 5; i++)    {        for (j = 0; j < 5; j++)        {            printf("%5d", a[4 - i][j]);//改变输出顺序,达到想要的效果,不过下标的值是没有改变的        }        printf("\n");    }    getchar();}