//题目37:将一个数组逆序输出。用第一个与最后一个交换。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

//分析:逆序输出,就会想到使用递归可以轻易实现,但是这次我就用for循环逆序打印吧

#define N 10  //这是为了以后动态数组的使用

void main(){
    int a[N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    printf("原数组\n");
    for (int *p = a; p < a + N; p++)
    {
        printf("%5d",*p);
    }
    printf("\n逆序打印\n");
    //判断数组长度是偶数,还是奇数,好决定怎么调换
    int temp = 0;
    //if ((N + 1) % 2)
    //{
    //    //奇数

    //}
    //else{
    //    //偶数
    //}
    //我可以在for中加一个判断,就不用循环2次
    for (int i = 0; i < (N + 1) / 2; i++)
    {
        if (a[i] != a[N - i - 1])//判断是数组长度奇数,还是偶数的区别
        {
            temp = a[i];
            a[i] = a[N - i - 1];//N是10,a[0]=a[9]
            a[N - i - 1] = temp;
        }
    }
    for (int *p = a; p < a + N; p++)
    {
        printf("%5d", *p);
    }



    system("pause");
}

 

C语言 百炼成钢13_数组

 

//题目38:取一个整数a从右端开始的4~7位。

#include<stdio.h>
#include<stdlib.h>

//分析:题目的意思是  例如  0011 1010  获取0--011 1--010  获取中间的这四位的值
//获取中间这四位,我们可以先通过与操作,将其他几位置0,再通过移位操作,获取值


void main(){
    unsigned char a = 58;  // 即0011 1010
    unsigned char b = 120;//  构造0111 1000  用来将其他位置0,需要的位不变
    unsigned char c = a&b;//得到0011 1000
    unsigned char d = c >> 3;//右移 3位  0000 0111  得到结果是7

    printf("\n得到的结果是%d\n",d);
    system("pause");
}

C语言 百炼成钢13_百炼成钢_02

 

 

//题目39:打印出杨辉三角形(要求打印出10行如下图) 
//1
//1  1
//1  2  1
//1  3  3  1
//1  4  6  4  1
//1  5  10 10 5  1

#include<stdio.h>
#include<stdlib.h>

//分析:使用二维数组解决,杨辉三角,例如: a[2][1]=a[1][0]+a[1][1];

void main(){
    int a[6][6] = { 1 };
    //赋值
    for (int i = 1; i < 6; i++)
    {
        for (int j = 0; j < 6; j++)
        {
            if (j==0)
            {
                a[i][j] = 1;
            }
            else{
                a[i][j] = a[i-1][j-1] + a[i-1][j];
            }
        }
    }
    //打印
    for (int i = 0; i < 6; i++)
    {
        for (int j = 0; j < 6; j++)
        {
            if (a[i][j]!=0)
            {
                printf("%5d", a[i][j]);
            }
        }
        //换行
        printf("\n");
    }

    system("pause");
}

 

C语言 百炼成钢13_百炼成钢_03