自助建微网站,备案后修改网站名称,工装设计方案网站,自助建设网站一、基础题
1#xff0c;冯诺依曼结构的计算机硬件逻辑组成中#xff0c;不包含以下哪个模块#xff1f; A#xff0c;编译器 B#xff0c;控制器 C#xff0c;输入设备 D#xff0c;输出设备 解释#xff1a;冯诺依曼由五个模块组成#xff1a;输入设备 输出设备 存…一、基础题
1冯诺依曼结构的计算机硬件逻辑组成中不包含以下哪个模块 A编译器 B控制器 C输入设备 D输出设备 解释冯诺依曼由五个模块组成输入设备 输出设备 存储器 控制器 运算器 故答案选择A
2假设有一个栈元素依次进栈的顺序是ABCDE。下列不可能的出栈顺序是 AEDCBA BABCDE CBCDEA DEABCD 解释栈先进后出 故答案选择D
3[多选]C语言中static关键字说法正确的有 A用static修饰的全局变量可以在运行时修改 B用static修饰的函数其内部变量可以传递给其他函数 C在a.c文件中有一个static修饰的函数任何情况下都不能可能在b.c中被调用 D其余说法均不对 解释参考自该篇博客static 函数体内 static 变量的作用范围为该函数体不同于 auto 变量 该变量的内存只被分配一次因此其值在下次调用时仍维持上次的值 在模块内的 static 全局变量可以被模块内所有函数访问但不能被模块外其他函数访问 在模块内的static 函数只可被这一模块内的其他函数调用这个函数的使用范围被限制在声明它的模块内 在类的static 成员变量属于整个类所拥有对类的所以对象只有一份拷贝 在类中的 static 成员函数属于整个类所拥有这个函数不接收 this 指针因而只能访问类的 static 成员变量 若全局变量仅在单个C文件中访问则可以将这个变量修改为静态全局变量以降低模块间的耦合度 若全局变量仅由单个函数访问则可以将这个变量改为该函数的静态局部变量以降低模块间的耦合度 设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时需要考虑重入问题
static在c里面可以用来修饰变量也可以用来修饰函数。
修饰变量
int a ;
int main()
{int b ; int c* (int *)malloc(sizeof(int));
}变量在c里面可分为存在全局数据区、栈和堆里。 a是全局变量b是栈变量c是堆变量。 static对全局变量的修饰可以认为是限制了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量但加入static修饰之后只能被本文件中函数引用此变量。 static对栈变量的修饰可以认为栈变量的生命周期延长到程序执行结束时。一般来说栈变量的生命周期由OS管理在退栈的过程中栈变量的生命也就结束了。但加入static修饰之后变量已经不再存储在栈中而是和全局变量一起存储。同时离开定义它的函数后不能使用但如再次调用定义它的函数时它又可继续使用 而且保存了前次被调用后留下的值。
修饰函数
static对函数的修饰与对全局变量的修饰相似只能被本文件中的函数调用而不能被同一程序其它文件中的函数调用。 a.c文件
static int i; //只在a文件中用
int j; //在工程里用
static void init() //只在a文件中用
{
}
void callme() //在工程中用
{static int sum;
}上面的全局i变量和init()函数只能用在a.c文件中,全局变量sum的作用域只在callme里。变量j和函数callme()的全局限扩充到整个工程文件。所以可以在下面的b.c中用extern关键字调用。extern告诉编译器这个变量或者函数在其他文件里已经被定义了。
b.c文件
extern int j; //调用a文件里的
extern void callme(); //调用a文件里的
int main()
{...
}extern的另外用法是当C和C混合编程时如果c调用的是c源文件定义的函数或者变量那么要加extern来告诉编译器用c方式命名函数文件A.cpp调用a.c里面的变量i和函数callme()
extern C //在c文件里调用c文件中的变量
{int j;void callme();
}
int main()
{callme();
}全局变量有外部、静态两种存储方式。 1,全局变量一般用外部存储方式存储用保留字extern加以定义。此时变量的作用域是构成整个程序的所有程序文件也就是定义的外部变量可供其它程序文件使用。(使用这样的全局变量一定要非常慎重一旦产生错误将波及整个程序。) 2,如果希望全局变量仅限于本程序文件使用而其它程序文件中不能引用这时必须将其存储方式定义为静态存储方式用保留字static加以定义。此时称为静态外部变量。 对全局变量加static定义为静态存储方式并不意味着是静态存储而不加static是动态存储。两种形式的全局变量(外部变量)都是静态存储方式都是编译时分配存储空间但作用域不同。使用静态外部变量有利于隔离错误有利于模块化程序设计。 3,全局变量的缺省存储方式是外部存储方式。 对局部变量采用auto方式对全局变量采用extern方式。
故答案选择A、B
4C语言中在头文件正常引用的情况下执行printf(%5s,“abcdefg”);后的结果为 Aabcde Babcdefg Ccdefg D输出错误信息 解释 %5s 是把变量的值保持长度5位不足5位时不足5位在前面用空格补齐超过5位就不用补空格直接显示全部以字符串方式输出。 %-5s 是把变量的值保持长度5位不足5位时不足5位在后面用空格补齐超过5位就不用补空格直接显示全部以字符串方式输出。 故答案选择A
5在32位操作系统中我们定义如下变量 int (*n)[10];请问调用函数sizeof(n)返回值为 A4 B40 C8 D80 解释 int(*n)[10]; 是数组指针 sizeof(n)4 int* n[10]; 是指针数组 sizeof(n)40 在32位操作系统下只要是指针就是4个字节占32位。 故答案选择A
6[多选]请说出const与#define相比有何优点 A宏常量有数据类型而const常量没有数据类型 B有些集成化的测试工具可以对const常量进行调试但是不能对宏常量进行调试 C编译器可以对const进行类型安全检查。而对#define只进行字符替换没有类型安全检查并且在字符替换可能会产生意料不到的错误 解释 const常量有数据类型而宏常量没有数据类型 编译器可以对const常量进行类型安全检查而对宏常量只能字符替换 有些集成化的调试工具能对const常量进行调试对宏常量不能调试 故答案选择B、C
7以下不是无限循环的语句为 Afor(y0,x1;xy;xi) ix; Bfor(;;xi); Cwhile(1) {x;} Dfor(i10;;i–) sumi; 解释其实看是否是无限循环就看for中的第二个判断是否退出条件即可 故答案选择A
8C语言中逻辑“真”等价于 A大于零的数 B大于零的整数 C非零的数 D非零的整数 解释C语言没有提供逻辑型的数据类型关系及逻辑表达式的值“假”用数值0代表而非零的值系统默认用1表示“真”。 说白了就是 零(假) 和 非零(真) 故答案选择C
9(1)请写出bool flag 与 “零值”比较的if语句
//若flag有可能为true也有可能为false
if(flag)
if(! flag)(2)请写出float x 与 “零值”比较的if语句
const float EPSINON 0.00001;
if ((x - EPSINON) (x EPSINON)(3)请写出char *p 与 “零值”比较的if语句
//字符指针有可能为空指针也有可能不为空
if (p NULL)
if (p ! NULL)10运行以下代码会出现什么问题
void getmemory(char *p)//调用GetMemory( str )后 str并未产生变化依然是NULL.只是改变的str的一个拷贝的内存的变化
{p (char *)malloc(100);strcpy(p,hello world);//程序运行到这将产生错误//new的时候有可能内存出错应该在*p (char *) malloc( num );后判断内存是否申请成功//if (*p NULL){//进行申请内存失败处理}
}
int main()
{char *str NULL;getmemory(str);printf(%s/n,str);free(str);//释放动态创建的内存return 0;
}参考博文
二、编程题
1编程实现冒泡排序 我以前写过这里就不在叙述可参考我的这篇博客
#include stdio.h
int main()
{int i,j,t,a[10];for(i0;i10;i){scanf(%d,a[i]);}for(i0;i9;i)//10个数进行9次循环进行9趟比较{for(j0;j9-i;j)//在每一趟比较中进行9-i次比较{if(a[j]a[j1]){ta[j];a[j]a[j1];a[j1]t;}}}for(j0;j10;j){printf(%d\n,a[j]);}return 0;
}2给定一个头节点为head的非空单链表返回链表的中间结点。如果有两个中间结点则返回第二个中间结点。 参考博文 定义一个fast和一个slowfast每走两步slow就走一步 最终返回的slow就是中间的值链表的节点个数为奇数偶数都适用
class ListNode {public int val;public ListNode next;public ListNode(int val){this.val val;this.next null;}
}public class TestDemo1025_1 {public ListNode head;//给定一个头结点为 head 的非空单链表返回链表的中间结点。
//如果有两个中间结点则返回第二个中间结点。public ListNode middleNode() {ListNode fast this.head;ListNode slow this.head;while (fast ! null fast.next ! null){fast fast.next.next;slow slow.next;}return slow;}
}三、选做题
1802.11b/g协议的非重叠信道有()个 A2 B3 C5 D8 答案选择B
2无线局域网WLAN传输介质就是 A无线电波 B红外线 C载波电流 D卫星通信 答案选择A
3如果Boot Loader、内核、启动参数以及其他的系统映像四部分在固态存储设备上分别独立存放则其存储结构的分配顺序应当是() A文件系统、内核、启动参数、Bootloader B启动参数、Bootloader、内核、文件系统 CBootloader、内核、启动参数、文件系统 DBootloader、启动参数、内核、文件系统 解释华为认证考试题库中嵌入式软件助理工程师题库的一道题Bootloader、启动参数、内核、文件系统 答案选择D
4Boot Loader的stage2通常使用C语言实现以完成复杂的功能以下哪一步骤属于stage2的内容() A为加载Boot Loader的stage2准备RAM空间 B设置好堆栈 C硬件设备初始化 D将Kernel映像和根文件系统映像从flash上读到RAM空间中 解释为认证考试题库中嵌入式软件助理工程师题库的一道题将kernel映像和根文件系统映像从flash上读到RAM空间中 答案选择D
5关于ARM处理器的异常的描述不正确的是() A复位属于异常 B除数为零会引起异常 C所有异常都要返回 D外部中断会引起异常 答案选择C