zoukankan      html  css  js  c++  java
  • C语言 百炼成钢13

    //题目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("原数组
    ");
        for (int *p = a; p < a + N; p++)
        {
            printf("%5d",*p);
        }
        printf("
    逆序打印
    ");
        //判断数组长度是偶数,还是奇数,好决定怎么调换
        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");
    }

    //题目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("
    得到的结果是%d
    ",d);
        system("pause");
    }

    //题目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("
    ");
        }
    
        system("pause");
    }

  • 相关阅读:
    windows中dos命令指南
    HDU 2084 数塔 (dp)
    HDU 1176 免费馅饼 (dp)
    HDU 1004 Let the Balloon Rise (map)
    变态杀人狂 (数学)
    HDU 2717 Catch That Cow (深搜)
    HDU 1234 开门人和关门人 (模拟)
    HDU 1070 Milk (模拟)
    HDU 1175 连连看 (深搜+剪枝)
    HDU 1159 Common Subsequence (dp)
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5157271.html
Copyright © 2011-2022 走看看