C基础--240322

注意:正确实现本题中协议1的功能,可不作答其他题目。以下所有题目均基于32位系统,不考虑64位系统。

1)可以选用哪种类型表征116.558这样一个数据?

char int short double flo

2)请问short* a= new short[10]; sizeof(a)的大小是多少?short b[10]; sizeof(b)大小又是多少?为什么?若想获取b数组能够容纳数据的个数,可以采用什么方法?

3)在某环境下,执行如下语句后,无法得到1.5的正常结果,请问应如何修改。

float a = 3/2;

4)程序希望实现a计算得到某一数据后自动退出的功能,请指出下面程序可能存在的风险。

void main()

{

         float a = 0;

         while (true)

         {

                   ...

                   一系列对a的运算;

                   if (a == 0.000123)

                   {

                            break;

                   }

         }

         return;

}

5)请指出以下程序中的错误。

void main()

{

         int a[10] = { 0 };

         for (int i = 1; i <= 10; i++)

         {

                   a[i] = i;

                   printf("%f\n", a[i]);

         }

         return;

}

6)以下程序想实现一个从-5开始的为期10次的循环,并输出i的值,但程序无法正常运行,请分析原因,并进行修改。

void main()

{

         unsigned int a = 5;

         for (int i = -5; i < a; i++)

         {

                   printf("i=%d\n", i);

         }

         return;

}

7)在链表的声明中,我们可能会看到以下的书写方式,请问为什么在list结构体前书写typedef struct list* pList;语句?能否在结构体中直接用list*声明pNextpPrev

typedef struct list* pList;

struct

{

         int idx;

         void* data;

         pList pNext;

         pList pPrev;

}list;

编程题

1)通过CC++(不调用系统命令行)实现某个二进制文件内容的读取,输出至另一文件。

2)请按照char单字节解析的方式对以下数据进行解析,读其中的数据。(不允许使用scanf、数据流等读入方式,只能单字节读取),每个数据之间以单字节空格区分。113.655  23.65877

1.
    double float
2.
    sizeof(a) = 2, 
    sizeof(b) = 2*10 = 20,因为short类型是2字节,10个就是2*10
    可以采用sizeof(b)/short(short);
3.
    float a = float(10) / 2;
4. 
    修改判断语句
    if(a >= 1e-6 && a <= 1e6)
5.
    int main(void)    ///输出为int类型
    {
        int a[10] = {0};
        for(int i = 0; i < 10; i++)  //题目这里有错误
        {
            a[i] = i;
            printf("%d\n", a[i]);   //打印的数据类型错误
            
        }
        return 0;
    }
    
6
    int main(void)                
    {
        int a = 5;                  //题目中定义a为无符号整型
        for(int i = -5; i < a; i++)   ///循环判断会i<a,让i变为无符号
            printf("%d\n", i);       ///无符号i<a,判断条件无符号(-5)> 5,循环不执行
        
        return 0;
    }
    
编程题2:
 float 31 符号位
        30 - 23 指数位
        22 -0 数据位
 113.655 0100 0010 1110 0011 0100 1111 0101 1100
        42 E3 4F 5C
 23.65877 41 BD 45 29
 int main(void)
 {
     float a = 113.655;
     float b = 23.65877 
     
     char * p = &a;
     int i = 0;
     for(i = 0; i < 4; i++)
        printf("%#x",*(p + i));
     
     printf("\n");
     
     p = &b;
     for(i = 0; i < 4; i++)
        printf("%#x",*(p + i));
    
    return 0;
 }
    
    
        
    

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值