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");
    }

  • 相关阅读:
    Convert、Parse、TryParse、(int)区别及可能引发性能问题
    重写、覆盖、重载、多态几个概念的区别分析
    计算机系统的硬件组成(转)
    如何选择Html.RenderPartial和Html.RenderAction
    位运算(转)
    Java程序员面试中的多线程问题
    请转到控制面板来配置或安装系统组件
    开篇
    DropDownList 不能有多个项被选定!
    有关rollup和cube的使用方法讨论
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5157271.html
Copyright © 2011-2022 走看看