一  .选择

1。给出以下定义:

char acX[] = "abcdefg";

char acY[] = {'a','b','c','d','e','f'','g'};

则正确的叙述为(D)

A) 数组acX和数组acY等价                                 B) 数组acX和数组acY的长度相等

C)数组acX的长度大于数组acY的长度              D)数组acX的长度小于数组acY的长度

acX数组的元素已经确定,但acY的并不确定,无法判断‘g’的下一个元素是什么,不能判定它的‘\0’是不是下一个出现,所以准确来说,D选项也是有问题的

2。void example(char acHello[])

{

printf("%d",sizeof(acHello));

return ;

}

void main()

{

char acHello[] = "hello,51_cc";

example(acHello);

return ;

}

的输出结果是(A)

A)  4                B) 12            C)13               D)不确定

acHello是一个数组,但他作为函数参数传递时,传递的是首元素的地址,也就是相当于一个指针,四个字节

3。以下叙述中不正确的是(C)

A)在不同的函数中可以使用相同名字的变量

B)函数中的形式参数是在栈中保存               //行参在栈中保存,实参在堆

C)在一个函数内定义的变量只在本函数范围内有效                    //在它的有效空间里有效,成对出现的括号

D)在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

4。全局变量可以定义在被多个.c文件包含着的头文件中(B)

A)正确                     B)错误

不可以,因为每个.c文件引用该.h文件时,会对.h中的函数重新定义一次。
如果全局变量被定义在可被多个.c文件包含的头文件中时,就会出现重复定义。

所以,应该是在某个.c文件里面定义,在.h中用extern进行声明

5。在X86 下,有如下程序(32位小字节存储)

#include<stdio.h>

void main()

{

union

{

short k;

char i[2];

}*s,a;

s = &a ;

s->i[0] = 0x39;

s->i[1] = 0x38;

printf("%x\n",a.k);

}

输出结果是(A)

A)    3839          B)3938                 C)380039               D)不确定

考察大小端问题。首先,不管是大端还是小端都是从低地址开始

大端:高位数据存放在低位地址,低位数据存放在高位地址

小端:高位数据存放在高位地址,低位数据存放在低位地址

6。#define BUF_LEN 2048

struct AAA

{

unsigned long ulLen;

char buf[BUF_LEN];

};

函数PrintBufLen的作用是打印出结构体中buf的实际占用长度,有下面两种实现方法:

方法一:

void PrintBufLen(struct AAA *pBuf)

{

if(NULL == pBuf)

{

printf("Error,pBuf is NULL.\n");

return;

}

printf("len = %u",pBuf->ulLen);

return;

}

方法二:

void PrintBufLen(struct AAA Buf)

{

printf("len = %u \n".Buf.ulLen);

return;

}

以下说法只有一个正确的是(A)

A:优选方法一,原因是以指针作为入参,减少函数参数压栈的系统开销

B:   优选方法二,原因是可以不做入参合法性判断,不容易出错

C:   两种方法一样,可以任选一种

D:   以上说法都不对

///

对程序而言,两种方法都是正确的,第一种用指针调动,第二种以对象调动,显然,方法二用对象调动,会调动它的构造,析构函数,时间,空间都要比指针的大,所以 A正确

7。有如下宏定义和结构定义

#define MAX_SIZE A+B

struct _Record_Struct

{

unsigned char Env_Alarm_ID  :  4       //表示位域,表示占了一个字节的四位

unsigned char Paral  :  2;

unsigned char state;

unsigned char avail  : 1;

}*Env_Alarm_Record;

struct   _Record_Struct  *Pointer  =  (struct  _Record_Struct*)malloc(sizeof(struct  _Record_Struct)  * MAX_SIZE);

当A = 2,B = 3时,pointer分配(D)个字节的空间

A)     20               B)      15              C)        11                D)9

如果是结构体,总空间应该是占最大空间元素的整倍数,如果是联合体,直接各元素所占空间直接相加

所以应该是  3×2+3 = 9

8。在X86,VC++6.0环境下,有下列程序

#include<stdio.h>

int main()

{

char c;       //  范围是-128~127

unsigned char uc;    //  范围是 0~255

unsigned short us;

c = 128;  //128 = -128

uc = 128;

us = c +  uc;   //us= -128 +128 = 0  = 0x0

printf("0x%x", us);

us  = (unsigned char)c +uc;  //c强转为无符号char型,us= 128+128 = 256  = 0x100

printf("0x%x", us);

us = c + (char)uc; //uc强转成字符型,结果为-128 ,us= -128-128 = -256    以0000 0001 0000 0000 存放,原码为 1111 1111 0000 0000 = 0xff00

printf("0x%x", us);

return 0;

}

输出结果是(A)

A)0x0  0x100   0xff00

B)   0x100 0x100 0xff00

C)  0x100 0x100 0x0

D)  0x0 0x100 0x0

8。#include<stdio.h>

unsigned short *sum (unsigned char a,unsigned char b)

{

unsigned short  s = 0;

s = a + b;

return &s;

}

int main()

{

unsigned short *p = NULL;

unsigned char a =1,b =2;

p = sum(a,b);

printf("%u + %u",a,b);

printf("= %u\n",*p);

return 0;

}

程序的执行结果为(A)

A) 1+2 = 0      B) 1+ 2 = 3          C)1 + 2  = NULL       D) 不确定

在sum函数中,s是创建的临时变量,函数结束后,s会被释放,作用域消失,返回值就会变得不确定

c/c++的改错练习二相关推荐

  1. 计算机省二c语言编程改错题,2013年计算机二级C语言上机试题六十九

    一.填空题 请补充main函数,该函数的功能是:从键盘输入两个字符串并人别保存在字符数组成str1 t 和str2中,用字符串str2 替换字符串联str1前面的所有字符,注意:str2的长度不大于s ...

  2. 国二c语言改错题答案,c语言国二考试编程题答案

    <c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...

  3. c语言上机填空改错试题,2013年计算机二级C语言上机试题六十二及答案

    2013年计算机二级.一级.三级等更多考试考前培训请进入教育联展网-中国教育培训第一门户,助您顺利通过计算机等级考试! 填空题 请补充main函数,该函数的功能是:从键盘输入一组字符串,以'*'结束输 ...

  4. C语言国二程序改错,2012计算机国二C语言等级考试题库(内部资料)程序改错

    计算机国二C语言等级考试题库(内部资料) 1.给定程序MODI1.C中函数fun的功能是:根据以下公式求π值,并作为函数值返回.例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140 ...

  5. 国二c语言成语改错,2014年计算机二级C++上机模拟试题及解析(5)

    voidmain() { D3d; /**********found**********/ d.f(); } [参考答案] (1)将class D2:public Base 改为:class D2:v ...

  6. 面向对象编程(OOP)----BLUE大师JS课堂笔记(二)

    一,把面向过程的程序改写成面向对象的程序 1.前提   所有的程序都在onload里面 2.改写   不能函数嵌套,可以全局变量 3.onload-------------------->构造函 ...

  7. 周信东c语言实验二实验报告,周信东主编最新版C语言程序设计基础实验一实验报告.doc...

    周信东主编最新版C语言程序设计基础实验一实验报告.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我 ...

  8. 用计算机答题答案提交后能否改错,南京晓庄计算机操作系统习题库含答案全1-5章...

    第一章 一. 判断改错题(正确的打√,错误的打×并改正) (1) 实时系统只能应用于生产控制系统,不能应用于信息处理系统.( ) (2) 并发含有"同时进行"的概念,是指两个或者是 ...

  9. Git《二》时光机穿梭

    Git<二>时光机穿梭 零. 目录 时光机 版本回退 工作区和暂存区 管理修改 撤销修改 删除文件 总结 一. 时光机 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候 ...

最新文章

  1. 毒鸡汤真相,你被骗了多少年?
  2. Android适配难题全面总结
  3. 样式表中的 element.style样式如何修改
  4. python卷积神经网络回归预测_回归[keras]的一维卷积神经网络,做
  5. 服务端第三次课程:面向切面编程AOP
  6. Linux学习总结(66)——CentOS7操作系统SSH安全加固
  7. 物联网云平台四个功能领域
  8. Numpy包简单介绍
  9. Hive安装超详细教程
  10. 爬虫程序的简单介绍(Python)
  11. SEO的日常主要工作做哪些
  12. Windows 11的临时文件清理工具
  13. Apple应用证书申请过程
  14. ios 应用闪退原因
  15. 如何找回存储在DBeaver连接中的数据库密码
  16. 计算机网络实验报告哈工大_哈工大计算机网络实验报告之五
  17. 64格棋盘放芝麻,求重量。
  18. 最不可思议的巧合,这些电影一定是穿越者拍的了!
  19. Java Base64位加密和解密
  20. MongoDB管理工具Robomongo如何使用

热门文章

  1. 基于HTML和HTML5
  2. 微信小程序 | 一键生成万圣节头像框工具
  3. · 电动汽车(EV)充电标准及其差异
  4. 多路径路由算法选择(2)——回顾传统的动态路由协议(RIP、OSPF、BGP、IGRP、EIGRP、IS-IS)
  5. 电商实时交易风控系统
  6. Datatable 列名
  7. 华为OWS平台和HEC服务浅见
  8. 使用idm下载新闻视频(bbc)及百度云盘内容
  9. 第七届万向区块链全球峰会 | 邹传伟:元宇宙经济学
  10. 思科路由器重置密码并保存设置重置密码