求职攻略| 答疑解惑,永恒的C语言(大华FPGA岗位分析)

 2024-02-28 01:07:32  阅读 0

如果不想错过我的推送,记得查看右上角公众号并设为star。 选择星星并将其发送给我。

跳出while1循环的语句_跳出循环结构语句_c语言跳出while循环

跳出while1循环的语句_跳出循环结构语句_c语言跳出while循环

大华FPGA岗位笔试题除了考查FPGA和逻辑相关知识外,还包括很多C语言题。

作为一名FPGA工程师,必须更加精通逻辑。 为什么要熟悉C语言? 事实上,FPGA开发中经常会用到嵌入式软核和硬核,这就需要FPGA工程师熟悉C语言,才能实现更好的协同开发。 另外,通过HLS进行开发时,还需要有C语言的基础,甚至更好的是C++。 如果你想精通验证,你还是需要知道如何去做。 如果在Linux下开发,还需要学习Tcl、Shell、Perl等脚本,以提高开发效率。

跳出while1循环的语句_跳出循环结构语句_c语言跳出while循环

综上所述,做FPGA开发,不仅需要精通HDL语言,还需要学习更多的相关内容,让自己更有优势。 这就需要大家在日常的学习中多积累,做到硬件思维和软件思维并重。 ,并且可以自由切换。 我们来看看今天的主题。

16) 程序运行后输出结果为( )

c语言跳出while循环_跳出循环结构语句_跳出while1循环的语句

A 30 B 40 C 10 D 20

分析:本题主要考察C语言数组和指针相关的知识。

首先,我们按顺序解释一下这个程序。 程序只有一个main函数,从main函数开始。

第5行定义了一个整数类型的一维数组a,并赋值为a[0] = 10, a[1] = 20, a[2] = 30, a[3] = 40,所以维数组有4个元素。 第6行定义了一个整型指针变量p。 第 7 行定义了一个整型变量 i。 第8行将数组a的地址赋给指针p(数组与指针的对应关系请参考《》中第37题),所以*p = a[0] = 10,*p+1 = a[1 ] = 20,*p+2 = a[2] = 30,*p+3 = a[3] = 40。

第 9 行是一个 for 循环。 循环变量i的初始值为0。从0到3循环4次。每次循环后i的值加1。

第11行是for循环中要执行的语句。 运算符的优先级在分配编号的右侧进行检查。 指针运算符“*”和前缀自增运算符“++”具有相同的优先级,因此从左到右的优先级规则 ) = 20, p+2; 当i=2时,a[2]=*(p+2)=30,p+3; 当i=3时,a[3]=*(p+3)=40,p+4; 当 i = 4 时退出 for 循环。

第12行打印a[2]的值为30。也验证了答案是A。

17) 程序运行后输出结果为( )

跳出while1循环的语句_c语言跳出while循环_跳出循环结构语句

A 1, 3 B 0, 2

C 0, 3 D 1, 2

分析:本题主要考察C语言中前自增运算符和后自增运算符的区别

首先我们按顺序解释一下这个程序:

第 5 行定义了一个整型变量 a。

第 6 行定义了一个整型变量 b。

第 7 行将 -2 赋给变量 a。

第 8 行将 0 赋给变量 b。

第 9 行是一个 while 语句。 如果 while 括号中的语句为 true,则始终会执行。 如果是假的,就会跳出来。 再看一下while括号里的语句,发现没有括号。 我们需要首先确定优先级。 其中,后自增运算符“++b”的优先级 > 前自增运算符“a++”的优先级 > 逻辑与运算符“&&”,也相当于 ((a++) && (++b) ),a++先赋值后加1,++b先加值后赋值。

第一次执行while语句时,a = -2,b = 0,b需要先加1,然后等于1。 ((a++) && (++b)) = (- 2 && 1) 是正确的。 继续执行while语句,此时a需要加1。循环结束时,a = -1,b = 1。

跳出循环结构语句_c语言跳出while循环_跳出while1循环的语句

第二次执行 while 语句时,a = -1,b = 1,b 需要先加 1,然后等于 2。 ((a++) && (++b)) = (- 1 && 2) 是正确的。 继续执行while语句,此时a需要加1。循环结束时,a = 0,b = 2。

第三次执行while语句时,a = 0,b = 2,b需要先加1到3,((a++) && (++b)) = (0 && 3)的结果为false,则while语句会被跳出。 ,那么a需要增加1。这个循环结束时,a = 1,b = 3。很多同学分析了这一点后都选择了A选项,但验证的结果如下:

跳出while1循环的语句_c语言跳出while循环_跳出循环结构语句

分析有问题吗? 事实上,当第三次执行while时,就会出现问题。 当第三次循环开始时,a = 0,b = 2。因为a = 0,此时while判断a不满足条件,然后进行自增操作1,a = 1。因为while语句的条件不满足,循环体不会执行++b,因此b的值不会改变。 答案是D。

18) 在C语言中,执行下列语句后,c的值为( )

int a = 12, b = 7 ;m(int a, int b){   a++;   a = b;}main(){   m(a, &b);   c = a;}

A 12 B 13 C 8 D 程序错误

分析:本题主要考察C语言变量定义的基础知识

这道题看上去代码很多,但实际上错误很明显。 我们发现c从头到尾都没有定义过,那么程序编译的时候自然会报错。 运行时报错如下:

所以本题选D。

19) 在C语言中,有以下程序段:

int *p, a = 10, b = 1 ;p = &a;a = *p+b;

执行该程序后,a的值为( )

A 10 B 11 C 12 D 编译错误

分析:本题主要考察C语言指针的基础知识

代码中有三句话,逐句分析。

第一句定义了一个整型指针变量p,一个赋初值10的整型变量a,赋初值1的整型变量b。

第二句将变量a的地址赋给指针p。

第三句*p就是取指针p的值,即10,然后将b的值加1,然后将结果赋值给a,所以a就是11。也验证了答案是B.

20) 已知int i = 1, j = 3, k = 5; 执行以下程序后,i、j、k的值为( )

if(i > j)    k = i; i = j; j = k;

i = 1,j = 3,k = 5

B i = 3,j = 5,k = 5

C i = 3,j = 5,k = 1

迪 = 3,j = 5,k = 3

分析:本题主要考察C语言语句的顺序执行以及括号的理解

首先,在题干中定义三个整型变量并赋值。 然后if语句确定i和j的大小。 根据题干可知i=1,j=3,如果i>j不成立则为假,所以k=不会被执行。 i语句,所以k仍然是5,但是i=j和j=k会按顺序执行,所以i=3,j=5。也验证了答案是B。

21) 给出定义:int x[2][3]; 那么下列关于二维数组x的说法错误的是()

x[0]可以看作是由3个整数元素组成的一维数组

B x[0]和x[1]是数组名,分别代表不同的地址常量。

C 数组 x 包含 6 个元素

D可以使用语句x[0] = 0; 将初始值 0 分配给所有元素

分析:本题主要考察C语言二维数组的相关知识

在二维数组中,不能使用 x[0] = 0 等赋值语句。 x[0] 表示一维数组。 x[0]是一个指针,指向x[0][0]的位置。 分配初始值时,应该逐个元素分配值,或者组合成一维数组来分配初始值。 因此,选项D是错误的,其他三个选项的描述都是正确的。

22) 在C语言中,函数的隐式存储类是( )

A 无存储类别 B

光盘自动

分析:本题主要考察C语言中函数的隐式存储类型

auto只用于局部变量,必须是auto。 函数的存储类型是指它是否可以被其他文件模块访问。 根据C语言的原理,该函数是全世界(本项目中)隐式访问的,所以默认的是,如果该函数前面有它,则表示该函数只能被本项目访问。 源程序文件中的模块访问,故答案为C。

跳出循环结构语句_c语言跳出while循环_跳出while1循环的语句

结尾

笔试分析将持续为您提供笔试题分析和知识补充。 如果你有想分析的题目,可以发给达尔文安排。 同时欢迎您加入达文求职技术交流群。 入群方式:添加倪姐微信()并备注求职,即可邀请入群。

达尔文求职系列:

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码