zoukankan      html  css  js  c++  java
  • 四则运算、进制转换、变量内存分配

    1、四则运算

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    #define eps 1e-6
    int main()
    {
        srand(time(NULL));
        int a,b;
        char op[5] = "+-*/";
        int index;
        /* 计算 */
        printf("除法精确到小数点后2位,四舍五入!
    ");
        while(1)
        {    //随机操作数
            a = rand()%101;
            b = rand()%100+1;
            printf("请选择(输入数字):1.加法 2.减法 3.乘法 4.除法 5.随机 6.退出
    " );
            // 1.随机、退出、+-*/
            scanf("%d",&index);
            if(5==index)
                index = rand()%4;
            else if(6==index)
                exit(0);
            else
                index--;
            // 2.题目、答案输入
            printf("%d%c%d=",a,op[index],b);
            double answer, result;
            scanf("%lf",&answer);
            // 3.判题
            switch(op[index]){
                case '+':
                    result = a+b; break;
                case '-':
                    result = a-b; break;
                case '*':
                    result = a*b; break;
                case '/':
                    if(b==0)printf("除数不可以为零
    ");//b已经处理过了
                    else {
                        int r = ((double)a/b+0.005)*100;//4舍5入保留2位
                        result = (double)r/100;
                    }
                    break;
            }
            if(fabs(result - answer)<=eps)
                printf("");
            else
                printf("");
            printf("正确答案:%.2f
    ", result);
        }
        return 0;
    }
    View Code

    2、10进制转16进制并输出

    /* 10进制转为16进制,限定8位16进制 */
    #include <stdio.h>
    int main()
    {
        long long x = 0xffffffff;  /* long long 类型 */
        const char* hexChar = "0123456789ABCDEF";
        char out[] = "00000000";   /* 8位字符 */
        int index = 7;   /* 最高位 */
        while(x)
        {
            out[index--] = hexChar[x%16];
            x /=16;
        }
        printf("%s
    ",out);
        return 0;
    }
    View Code

    3、小端,栈区,基本数据类型变量内存分配,联合体及联合体的内存分配,内存对齐

    /*    结构体成员为基本数据类型,按声明次序,从低地址向高地址分配内存,
    union共用一个存储单元*/
    
    #include <stdio.h>
    int main()
    {    
        int x = 0x5ff;
        char y;
        /* 
            在栈区,基本数据类型变量 x,y 从高地址向低地址分配内存, 
            小端,变量的地址始于低地址,
            若x的地址为0022ff38,y的地址就是0022ff37
            x内存空间为0022ff38~0022ff3c
        */
        printf("&x = %p,&y = %p
    ",&x,&y); 
    
        char *p = (char*)&x;
        printf("%x
    ",*(++p)); /* x地址上移一个字节, 打印5 */
        
        union {     
            int i[2]; /* 数组元素从低地址向高地址分配内存 */
            double d;
            char c[9];
        }r, *s = &r;
        
        printf("%d
    ", sizeof(r)); //8*2=16个字节 内存对齐
        
        printf("%p,%p
    ",&r.i[0],&r.i[1]);/* 从低地址向高地址 */
        printf("%p,%p
    ", &r.d,&r.c[0]);  /* 联合体成员地址相同 */
        
        s->i[0] = 0x39;  /* 十进制57 */
        s->i[1] = 0x38;
    
        /* s->i[0] 与 s->c[0] 共用内存 */
        printf("%c
    ",s->c[0]); /* 字符'9'的ascii码值57 */
        return 0;
    }
    View Code
  • 相关阅读:
    JavaScript 的数据类型及其检测
    编写JavaScript 代码的5个小技巧
    canvas标签的基本用法
    析构函数的调用------新标准c++程序设计
    类型转换构造函数 及使用explicit避免类型自动转换------新标准c++程序设计
    c++小知识
    this指针------新标准c++程序设计
    类的互相包含------新标准c++程序设计
    封闭类------新标准c++程序设计
    c++内存模型------计算机系统核心概念及软硬件实现
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/11664542.html
Copyright © 2011-2022 走看看