嵌入式系统开发人员C语言测试题(数据类型和变量)
2015-01-28 18:24
344 查看
嵌入式系统开发人员 C 语言测试题--(数据类型和变量)
1.1
选择题
(1)C
语言中最简单的数据类型包括____。
a.
整型 实型 逻辑型
b.
整型 实型 字符型
c.
整型 字符型 逻辑型
d.
整型 实型 逻辑型 字符型
(2)下面符合要求的位段定义是____。
要求:
1. a
有两位
2. b 有两位
3. c 有两位
4. d 有四位
a. struct bitfields1
{
unsigned a, b, c:2;
unsigned d:4;
}
b. struct bitfields2
{
unsigned a:2, b:2;
unsigned c:2, d:4;
}
c. struct bitfields3
{
unsigned a, b, c:6;
unsigned d:4;
}
d. struct bitfields4
{
unsigned a, b:4;
unsigned c, d:6;
}
(3)下面关于枚举类型的说法正确的是_____。
a.
可以为枚举元素赋值;
b.
枚举元素可以进行比较;
c.
枚举元素的值可以在类型定义时指定;
d.
枚举元素可以作为常量使用。
(4)下面关于结构类型的说法正确的是____。
a.
对于结构变量,可以通过运算符"."或"->",逐个访问其成员;
b.
结构变量和结构变量成员的地址都可以被引用;
c.
如果指针变量
p
已指向某结构数组,则
p+1
指向当前元素的下一个成员;
d.
如果指针变量
p
已经指向一个结构变量(或结构数组),就不能再使之指向结构变量(或结构数组元素)的某一成员。
(5)设有语句
char a = '\72';则变量
a____。
a.
包含
1
个字符
b.
包含
2
个字符
c.
包含
3
个字符
d.
说明不合法
(6)下面关于结构类型的说法正确的是____。
a.
结构初始化时,每个成员的值用逗号隔开,可以只对部分成员赋初值;
b.
数组元素的类型可以是结构,结构成员类型也可以是数组;
c.
结构变量、结构地址和结构成员都可以作为函数参数使用;
d.
结构可以嵌套。
(7)下面关于结构类型的说法正确的是_____。
a.
结构是一种复合数据类型,其构成元素既只能是基本数据类型(如
int、long、float
等)的变量;
b.
缺省条件下,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;
c.
结构成员按照它们被声明的顺序在内存中顺序存储;
d.
结构第一个成员的地址和整个结构的地址相同。
(8)下面关于枚举类型的说法正确的是______。
a.
枚举值是常量,不能在程序中用赋值语句再对它赋值;
b.
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量;
c.
把数值直接赋予枚举变量最好用强制类型转换;
d.
枚举元素不是字符常量而是字符串常量。
(9)下面关于联合类型说法正确的是______。
a.
对联合变量的赋值、使用都只能是对变量的成员进行。
b.
联合变量的成员表示为: 联合变量名.成员名
c.
可以对联合变量作初始化赋值。
d.
一个联合变量,每次只能赋予一个成员值。
(10)合法的长整型常数是_____。
a. OL
b. 4962710 c. 324562&
d. 216D
(
11)在
C
语言中,
char 型数据在内存中的存储形式是_____。
a.
补码
b. 反码
c. 原码
d. ASCII 码
(12)设
C
语言中,一个
int
型数据在内存中占
2
个字节,则
unsigned
int 型数据的取值范围为______。
a. 0~255
b. 0~32767
c. 0~65535
d. 0~2147483647
(13)已知
ch
是字符型变量,下面不正确的赋值语句是____。
a. ch='a+b';
b. ch='\0'; c. ch='7'+'9';
d. ch=5+9;
(14)已知
ch
是字符型变量,下面正确的赋值语句是____。
a. ch= '123';
b. ch= '\xff'; c. ch= '\08';
d. ch="\";
(15)以下选项中不正确的整型常量是_____。
a. 12L
b. -10 c. 1,900 d. 123U
(16)_____是不正确的字符常量。
a. 'n'
b. '1' c. "a"
d. '101'
(17)假设
int
型变量占两个字节的存储单元,若有定义:
int x[10]={0,2,4};
则数组
x
在内存中所占字节数为______。
a. 3
b. 6 c. 10
d. 20
(18)C
语言中能用八进制表示的数据类型为_____。
a.
字符型、整型
b. 整形、实型
c.
字符型、实型、双精度型
d. 字符型、整型、实型、双精度型
(19)以下只有在使用时才为该类型变量分配内存的存储类说明是____。
a. auto
和
static
b. auto 和
register
c. register
和
static
d. extern 和
register
(20)下面四个选项中,均是合法整型常量的选项是____。
a. 160
b. 0xcdf c. 01 d. 0x48a
0xffff 01a 986,012
2e5
011
0xe 0668 0x
(21)下面四个选项中,均是不合法的整型常量的选项是____。
a. 0f1
b. 0Xcdf c. 018 d. 0x48eg
0xffff
017 999 068
0011
12,456 5e2 03f
(22)下面四个选项中,均是不合法的浮点数的选项是____。
a. 160.
b. 123 c. 18 d. e3
0.12 2e4.2 123e4
.234
e3
.e5 0.0
1e3
(23)下面四个选项中,均是合法浮点数的选项是____。
a.
+le+1 b. 60. c. 123e
d. e3
5e-9.4 12e-4 1.2e-.4
.8e4
03e2
8e5 +2e 5.e
(24)下面四个选项中,均是合法转义字符的选项是____。
a. '\''
b. '\' c. '\018' d. '\\0'
'\\' '\017' '\f'
'101'
'\n'
'\"' 'xab' 'xlf'
(25)下面四个选项中,均是不合法的转义字符的选项是____。
a. '\'' b. '\1011'
c. '\011' d. '\abc'
'\\' '\'
'\f' '\1011'
'\xf' '\a'
'\}' 'xlf'
(26)下面正确的字符常量是____。
a. "a"
b. '\\'' c. 'W' d. ''
(27)下面四个选项中,均是不正确的八进制数或十六进制数的选项是____。
a.
016 b. oabc c. 010
d. 0a12
0x8f
017 -0x11 7ff
018
0x8 0x16 -123
(28)下面四个选项中、均是正确的数值常量或字符常量的选项是____。
a. 0.0 b. "a"
c.'3' d. 001
0f 3.9E-2.5
011 0xabcd
8.9e lel
0xFFOO 2e2
'&'
'\''' 0a
50.
(29)以下所列的
C
语言常量中,错误的是_____。
a. 0xFF
b. 1.2e0.5 c. 2L d. '\72'
(30)下面四个选项中,均是非法常量的选项是______。
a.'as'
b.'\\' c. -0xl8 d. 0xabc
-0fff '\01' 01177
'\0'
'\0xa'
12,456 0xf"a"
(31)下面关于
volatile
变量的说法正确的是_______。
a.
并行设备的硬件寄存器(如:状态寄存器);
b.
一个中断服务子程序中会访问到的非自动变量(也就是全局变量);
c.
会被几个任务共享的变量;
d.
定时器变量。
1.2
填空题
(32)说明下面变量的定义:
char (*p[])();
_____________________
char *p()[];
_____________________
char (*p)[10][10];
_____________________
char(*(*p())[])[];
_____________________
(33)下面共同体的存储空间是_____
union BOOKNUMBER
{
T_S16 age;
T_S8 title[10];
T_S8 post[32];
}
(34)若整数值范围是
-32768 至
32767。在执行下面的表达式之后,
i 的结果是什么?
int i=32766;
i=i+1;
i =
i=i+1;
i =
(35)对于联合类型:
union x
{
char ch[7];
int i[2];
float f;
}tom;
那么,
sizeof(tom) =
(36)有以下程序,程序的输出结果是______(注意:
ch[0]在低字节,ch[1]在高字节)。
#include<stdio.h>
union pw
{
int i;
char ch[2];
}a;
main()
{
a.ch[0] = 13;
a.ch[1] = 0;
printf("%d\n", a.i);
}
(37)以下程序用以输出结构体变量
bt
所占内存单元的字节数,请在横线内填上适当内容。
struct ps
{
double i;
char arr[20];
};
main()
{
struct ps bt;
printf("bt size :%d\n", _______);
}
(38)设位段的空间分配由右到左,则以下程序的运行结果是_____。
struct packed_bit
{
unsigned a:2;
unsigned b:3;
unsigned c:4;
int i;
}data;
main()
{
data.a = 1;
data.b = 2;
data.c = 3;
data.i = 0;
printf("%d\n", data);
}
(39)以下程序的运行结果是_____。
main()
{
enum COLOR{
RED,
BLUE = 5,
YELLOW
}cl;
printf("%d", cl.YELLOW);
}
(40)以下程序的运行结果是______。
main()
{
union EXAMPLE{
struct{
int x;
int y;
}in;
int a;
int b;
}e;
e.a = 1;
e.b = 2;
e.in.x = e.a * e.b;
e.in.y = e.a + e.b;
printf("%d %d", e.in.x, e.in.y);
}
(41)请补充下面代码:
#include<al oc.h>
main()
{
T_S16 *a;
a = (int*)mal oc(_________);
*a = 123;
______ = 456;
______ = 789;
…
}
(42)在小类型转大类型时应确保不会改变数据的值,在程序的逻辑上确认后,还应在强制转换代码后加上清高位代码以确保转换正确,请填
充下面的代码以示例:
T_S8 cLocalHeight = 0xfe;
T_U32 g_lHeight = 0;
g_lHeight = _________cLocalHeight;
(43)在不同符号位转换时(T_U8?àT_S8,
T_U16?àT_S16, T_U32?àT_S32)应在逻辑上确保不会改变数据的符号位或是含义值,请填充下面的
代码以示例:
T_S16 nTop;
T_S16 nBottom;
T_VOID Img_SetHeight(T_U16 nHght)
T_S16 nHeight = nTop - nBottom;
Img_SetHeight(___________);
(44)写出判断字符变量
c
是英文字母的表达式____________。
(45)下面函数的返回值是______。
int data()
{
float x = 9.9;
return(x);
}
(46)下面程序段的输出结果是______。
Union
{
int b1, b2, b3;
} yy;
yy.b1 = 1;
yy.b2 = 2;
yy.b3 = 10 * yy.b1 + yy.b2;
printf("%d, %d, %d", yy.b1, yy.b2, yy.b3);
1.3
问答与设计
(47)请说明以下数据类型的表示范围:
T_S8:
T_U8:
T_S16:
T_U16:
T_S32:
T_U32:
T_pVOID:
float:
double:
(注:
#define T_S8
signed char
#define T_U8
unsigned char
#define T_S16 signed short
#define T_U16 unsigned short
#define T_S32 signed int
#define T_U32 unsigned int
#define T_pVOID void *
)
(48)请说明无值型的用途。
(49)浮点型变量可以用'%'求余运算吗?为什么?
(50)什么情况下适合使用联合类型?
(51)已知联合类型
union data
已被正确定义,指出下面代码的错误并说明原因:
mix()
{
extern union data mid;
mid.ival = 5;
mid->fval = 3.6;
mid.pval = 'c';
printf("%d", mid.ival);
printf("%d", mid.pval);
}
(52)找出下面的程序中的错误并改正。
#include <stdio.h>
main()
{
float a[3] = {0,0};
int i;
for (i=0; i<3; i++)
{
scanf("%d", &a[i]);
}
for (i=1; i<3; i++)
{
a[0] = a[0] + a[i];
}
printf("%f\n", a[0]);
}
(53)可以对结构体变量初始化吗?可以对共同体变量进行初始化吗?为什么?
(54)结构体变量可以作为函数参数吗?共同体变量可以作为函数参数吗?为什么?
(55)说明位操作提高程序运行效率的原理。
(56)变量有哪几种存储类型,它们的关键字、作用范围和生存时间各是什么?
(57)什么是结构类型的自然对界条件?
(58)如何改变结构类型缺省的对界条件?
(59)用变量
a
给出下面的定义:
a. 一个整型数;
d. 一个指向整型数的指针;
c. 一个指向指针的的指针,它指向的指针是指向一个整型数;
d. 一个有
10
个整型数的数组;
e. 一个有
10
个指针的数组,该指针是指向一个整型数的;
f. 一个指向有
10
个整型数数组的指;
g. 一个指向函数的指针,该函数有一个整型参数并返回一个整型;
h. 一个有
10
个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。
(60)关键字
static
的作用是什么?
(61)下面的声明都是什么意思?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
(62)关键字
volatile
有什么含意?并给出三个不同的例子。
(63)一个参数既可以是
const
还可以是
volatile
吗?为什么?
(64)一个指针可以是
volatile
吗?为什么?
(65)嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量
a,写两段代码,第一个设置
a
的
bit 3,第二个清除
a
的
bit 3。
在以上两个操作中,要保持其它位不变。
(66)能够把一个整型数强制转换为一指针吗?说明理由。
(67)假定
PI
宏已正确定义,请指出下面代码的错误:
__interrupt double compute_area (double
radius)
{
double area = PI * radius * radius;
printf("\nArea = %f", area);
return area;
}
(68)评价下面代码的合理性:
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
(69)请分别写出
BOOL , float,
指针变量 与"零值"比较的
if 语句。
(70)外部变量的定义性声明与引用性声明在应用上的区别是什么?
(71)请说明外部变量的特性。(至少三点)
(72)外部变量和静态变量的区别是什么?
(73)对控制寄存器正确赋值要注意些什么?
(74)请区别如下代码?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
(75)已知
a
为整数,比较下面代码的效率并说明原因:
a++;
a = a+1;
(76)已知
a
为整数,比较下面代码的效率并说明原因:
a = a*4;
a << 2;
(77)说明一个变量和定义一个变量有什么区别?
(78)可以在头文件中说明
static
变量吗?
(79)全局变量的缺省关键字是什么?
(80)局部变量的缺省关键字是什么?
(81)静态局部变量的使用范围和生命周期是什么?
(82)全局变量的使用范围和生命周期是什么?
(83)静态全局变量和全局变量的区别是什么?
(84)寄存器变量的使用有什么限制?能用取址运算符"&"来获取
register
变量的地址吗,原因是什么?
(85)为什么指针型变量在使用前必须初始化?
(86)请指出下面代码的缺陷:
main()
{
T_S16 *i;
T_S8 *str;
*I = 100;
str = "Good";
}
(87)分别从大转小、小转大两方面说明类型转换可能存在的隐患,并给出解决措施。
(88)减少全局变量使用的原因是什么?
(89)为什么禁止在符号变量上进行移位操作?
(90)请从类型转换精度损失的角度分析以下代码。
#define DELAY_MILLISECONDS 10000
T_S8 cTime;
cTime = DELAY_MILLISECONDS;
WaitTime(cTime);
(91)结构体中的位域为什么要尽可能相邻?
(92)判断下面语句是否正确并说明原因。
float a;
scanf("%7.2f", &a);
@老梁 359699505@qq.com
www.jsetc.com
(93)判断下面语句是否正确并说明原因。
#include <stdio.h>
void main(void)
{
int x;
scanf("%d", x);
printf("%d", x);
}
(94)判断下面语句是否正确并说明原因。
main()
{
int a = 5;
printf("%d", a);
}
(95)判断下面语句是否正确并说明原因。
main()
{
float a, b;
printf("%d", a%b);
}
(96)判断下面语句是否正确并说明原因。
int a, b;
scanf("%d%d", a, b);
(97)判断下面语句是否正确并说明原因。
int n;
scanf("%d", &n);
int a
;
(98)全局变量与局部变量、动态存储变量与静态存储变量的区别?
(99)为什么说使用尽量小的数据类型能够优化代码?
(100)已知整型变量
I,那么
I++;与
I = I + 1;那个效率高,说明原因。
(101)要求设置一绝对地址为
0x67a9
的整型变量的值为
0xaa66。编译器是一个纯粹的
ANSI
编译器。写代码实现这一要求。
(102)
描述下列变量说明:
short int a;
float b[3];
long (* c)[3];
unsigned * d[3];
void (*f)(int);
1.1
选择题
(1)C
语言中最简单的数据类型包括____。
a.
整型 实型 逻辑型
b.
整型 实型 字符型
c.
整型 字符型 逻辑型
d.
整型 实型 逻辑型 字符型
(2)下面符合要求的位段定义是____。
要求:
1. a
有两位
2. b 有两位
3. c 有两位
4. d 有四位
a. struct bitfields1
{
unsigned a, b, c:2;
unsigned d:4;
}
b. struct bitfields2
{
unsigned a:2, b:2;
unsigned c:2, d:4;
}
c. struct bitfields3
{
unsigned a, b, c:6;
unsigned d:4;
}
d. struct bitfields4
{
unsigned a, b:4;
unsigned c, d:6;
}
(3)下面关于枚举类型的说法正确的是_____。
a.
可以为枚举元素赋值;
b.
枚举元素可以进行比较;
c.
枚举元素的值可以在类型定义时指定;
d.
枚举元素可以作为常量使用。
(4)下面关于结构类型的说法正确的是____。
a.
对于结构变量,可以通过运算符"."或"->",逐个访问其成员;
b.
结构变量和结构变量成员的地址都可以被引用;
c.
如果指针变量
p
已指向某结构数组,则
p+1
指向当前元素的下一个成员;
d.
如果指针变量
p
已经指向一个结构变量(或结构数组),就不能再使之指向结构变量(或结构数组元素)的某一成员。
(5)设有语句
char a = '\72';则变量
a____。
a.
包含
1
个字符
b.
包含
2
个字符
c.
包含
3
个字符
d.
说明不合法
(6)下面关于结构类型的说法正确的是____。
a.
结构初始化时,每个成员的值用逗号隔开,可以只对部分成员赋初值;
b.
数组元素的类型可以是结构,结构成员类型也可以是数组;
c.
结构变量、结构地址和结构成员都可以作为函数参数使用;
d.
结构可以嵌套。
(7)下面关于结构类型的说法正确的是_____。
a.
结构是一种复合数据类型,其构成元素既只能是基本数据类型(如
int、long、float
等)的变量;
b.
缺省条件下,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;
c.
结构成员按照它们被声明的顺序在内存中顺序存储;
d.
结构第一个成员的地址和整个结构的地址相同。
(8)下面关于枚举类型的说法正确的是______。
a.
枚举值是常量,不能在程序中用赋值语句再对它赋值;
b.
只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量;
c.
把数值直接赋予枚举变量最好用强制类型转换;
d.
枚举元素不是字符常量而是字符串常量。
(9)下面关于联合类型说法正确的是______。
a.
对联合变量的赋值、使用都只能是对变量的成员进行。
b.
联合变量的成员表示为: 联合变量名.成员名
c.
可以对联合变量作初始化赋值。
d.
一个联合变量,每次只能赋予一个成员值。
(10)合法的长整型常数是_____。
a. OL
b. 4962710 c. 324562&
d. 216D
(
11)在
C
语言中,
char 型数据在内存中的存储形式是_____。
a.
补码
b. 反码
c. 原码
d. ASCII 码
(12)设
C
语言中,一个
int
型数据在内存中占
2
个字节,则
unsigned
int 型数据的取值范围为______。
a. 0~255
b. 0~32767
c. 0~65535
d. 0~2147483647
(13)已知
ch
是字符型变量,下面不正确的赋值语句是____。
a. ch='a+b';
b. ch='\0'; c. ch='7'+'9';
d. ch=5+9;
(14)已知
ch
是字符型变量,下面正确的赋值语句是____。
a. ch= '123';
b. ch= '\xff'; c. ch= '\08';
d. ch="\";
(15)以下选项中不正确的整型常量是_____。
a. 12L
b. -10 c. 1,900 d. 123U
(16)_____是不正确的字符常量。
a. 'n'
b. '1' c. "a"
d. '101'
(17)假设
int
型变量占两个字节的存储单元,若有定义:
int x[10]={0,2,4};
则数组
x
在内存中所占字节数为______。
a. 3
b. 6 c. 10
d. 20
(18)C
语言中能用八进制表示的数据类型为_____。
a.
字符型、整型
b. 整形、实型
c.
字符型、实型、双精度型
d. 字符型、整型、实型、双精度型
(19)以下只有在使用时才为该类型变量分配内存的存储类说明是____。
a. auto
和
static
b. auto 和
register
c. register
和
static
d. extern 和
register
(20)下面四个选项中,均是合法整型常量的选项是____。
a. 160
b. 0xcdf c. 01 d. 0x48a
0xffff 01a 986,012
2e5
011
0xe 0668 0x
(21)下面四个选项中,均是不合法的整型常量的选项是____。
a. 0f1
b. 0Xcdf c. 018 d. 0x48eg
0xffff
017 999 068
0011
12,456 5e2 03f
(22)下面四个选项中,均是不合法的浮点数的选项是____。
a. 160.
b. 123 c. 18 d. e3
0.12 2e4.2 123e4
.234
e3
.e5 0.0
1e3
(23)下面四个选项中,均是合法浮点数的选项是____。
a.
+le+1 b. 60. c. 123e
d. e3
5e-9.4 12e-4 1.2e-.4
.8e4
03e2
8e5 +2e 5.e
(24)下面四个选项中,均是合法转义字符的选项是____。
a. '\''
b. '\' c. '\018' d. '\\0'
'\\' '\017' '\f'
'101'
'\n'
'\"' 'xab' 'xlf'
(25)下面四个选项中,均是不合法的转义字符的选项是____。
a. '\'' b. '\1011'
c. '\011' d. '\abc'
'\\' '\'
'\f' '\1011'
'\xf' '\a'
'\}' 'xlf'
(26)下面正确的字符常量是____。
a. "a"
b. '\\'' c. 'W' d. ''
(27)下面四个选项中,均是不正确的八进制数或十六进制数的选项是____。
a.
016 b. oabc c. 010
d. 0a12
0x8f
017 -0x11 7ff
018
0x8 0x16 -123
(28)下面四个选项中、均是正确的数值常量或字符常量的选项是____。
a. 0.0 b. "a"
c.'3' d. 001
0f 3.9E-2.5
011 0xabcd
8.9e lel
0xFFOO 2e2
'&'
'\''' 0a
50.
(29)以下所列的
C
语言常量中,错误的是_____。
a. 0xFF
b. 1.2e0.5 c. 2L d. '\72'
(30)下面四个选项中,均是非法常量的选项是______。
a.'as'
b.'\\' c. -0xl8 d. 0xabc
-0fff '\01' 01177
'\0'
'\0xa'
12,456 0xf"a"
(31)下面关于
volatile
变量的说法正确的是_______。
a.
并行设备的硬件寄存器(如:状态寄存器);
b.
一个中断服务子程序中会访问到的非自动变量(也就是全局变量);
c.
会被几个任务共享的变量;
d.
定时器变量。
1.2
填空题
(32)说明下面变量的定义:
char (*p[])();
_____________________
char *p()[];
_____________________
char (*p)[10][10];
_____________________
char(*(*p())[])[];
_____________________
(33)下面共同体的存储空间是_____
union BOOKNUMBER
{
T_S16 age;
T_S8 title[10];
T_S8 post[32];
}
(34)若整数值范围是
-32768 至
32767。在执行下面的表达式之后,
i 的结果是什么?
int i=32766;
i=i+1;
i =
i=i+1;
i =
(35)对于联合类型:
union x
{
char ch[7];
int i[2];
float f;
}tom;
那么,
sizeof(tom) =
(36)有以下程序,程序的输出结果是______(注意:
ch[0]在低字节,ch[1]在高字节)。
#include<stdio.h>
union pw
{
int i;
char ch[2];
}a;
main()
{
a.ch[0] = 13;
a.ch[1] = 0;
printf("%d\n", a.i);
}
(37)以下程序用以输出结构体变量
bt
所占内存单元的字节数,请在横线内填上适当内容。
struct ps
{
double i;
char arr[20];
};
main()
{
struct ps bt;
printf("bt size :%d\n", _______);
}
(38)设位段的空间分配由右到左,则以下程序的运行结果是_____。
struct packed_bit
{
unsigned a:2;
unsigned b:3;
unsigned c:4;
int i;
}data;
main()
{
data.a = 1;
data.b = 2;
data.c = 3;
data.i = 0;
printf("%d\n", data);
}
(39)以下程序的运行结果是_____。
main()
{
enum COLOR{
RED,
BLUE = 5,
YELLOW
}cl;
printf("%d", cl.YELLOW);
}
(40)以下程序的运行结果是______。
main()
{
union EXAMPLE{
struct{
int x;
int y;
}in;
int a;
int b;
}e;
e.a = 1;
e.b = 2;
e.in.x = e.a * e.b;
e.in.y = e.a + e.b;
printf("%d %d", e.in.x, e.in.y);
}
(41)请补充下面代码:
#include<al oc.h>
main()
{
T_S16 *a;
a = (int*)mal oc(_________);
*a = 123;
______ = 456;
______ = 789;
…
}
(42)在小类型转大类型时应确保不会改变数据的值,在程序的逻辑上确认后,还应在强制转换代码后加上清高位代码以确保转换正确,请填
充下面的代码以示例:
T_S8 cLocalHeight = 0xfe;
T_U32 g_lHeight = 0;
g_lHeight = _________cLocalHeight;
(43)在不同符号位转换时(T_U8?àT_S8,
T_U16?àT_S16, T_U32?àT_S32)应在逻辑上确保不会改变数据的符号位或是含义值,请填充下面的
代码以示例:
T_S16 nTop;
T_S16 nBottom;
T_VOID Img_SetHeight(T_U16 nHght)
T_S16 nHeight = nTop - nBottom;
Img_SetHeight(___________);
(44)写出判断字符变量
c
是英文字母的表达式____________。
(45)下面函数的返回值是______。
int data()
{
float x = 9.9;
return(x);
}
(46)下面程序段的输出结果是______。
Union
{
int b1, b2, b3;
} yy;
yy.b1 = 1;
yy.b2 = 2;
yy.b3 = 10 * yy.b1 + yy.b2;
printf("%d, %d, %d", yy.b1, yy.b2, yy.b3);
1.3
问答与设计
(47)请说明以下数据类型的表示范围:
T_S8:
T_U8:
T_S16:
T_U16:
T_S32:
T_U32:
T_pVOID:
float:
double:
(注:
#define T_S8
signed char
#define T_U8
unsigned char
#define T_S16 signed short
#define T_U16 unsigned short
#define T_S32 signed int
#define T_U32 unsigned int
#define T_pVOID void *
)
(48)请说明无值型的用途。
(49)浮点型变量可以用'%'求余运算吗?为什么?
(50)什么情况下适合使用联合类型?
(51)已知联合类型
union data
已被正确定义,指出下面代码的错误并说明原因:
mix()
{
extern union data mid;
mid.ival = 5;
mid->fval = 3.6;
mid.pval = 'c';
printf("%d", mid.ival);
printf("%d", mid.pval);
}
(52)找出下面的程序中的错误并改正。
#include <stdio.h>
main()
{
float a[3] = {0,0};
int i;
for (i=0; i<3; i++)
{
scanf("%d", &a[i]);
}
for (i=1; i<3; i++)
{
a[0] = a[0] + a[i];
}
printf("%f\n", a[0]);
}
(53)可以对结构体变量初始化吗?可以对共同体变量进行初始化吗?为什么?
(54)结构体变量可以作为函数参数吗?共同体变量可以作为函数参数吗?为什么?
(55)说明位操作提高程序运行效率的原理。
(56)变量有哪几种存储类型,它们的关键字、作用范围和生存时间各是什么?
(57)什么是结构类型的自然对界条件?
(58)如何改变结构类型缺省的对界条件?
(59)用变量
a
给出下面的定义:
a. 一个整型数;
d. 一个指向整型数的指针;
c. 一个指向指针的的指针,它指向的指针是指向一个整型数;
d. 一个有
10
个整型数的数组;
e. 一个有
10
个指针的数组,该指针是指向一个整型数的;
f. 一个指向有
10
个整型数数组的指;
g. 一个指向函数的指针,该函数有一个整型参数并返回一个整型;
h. 一个有
10
个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数。
(60)关键字
static
的作用是什么?
(61)下面的声明都是什么意思?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
(62)关键字
volatile
有什么含意?并给出三个不同的例子。
(63)一个参数既可以是
const
还可以是
volatile
吗?为什么?
(64)一个指针可以是
volatile
吗?为什么?
(65)嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量
a,写两段代码,第一个设置
a
的
bit 3,第二个清除
a
的
bit 3。
在以上两个操作中,要保持其它位不变。
(66)能够把一个整型数强制转换为一指针吗?说明理由。
(67)假定
PI
宏已正确定义,请指出下面代码的错误:
__interrupt double compute_area (double
radius)
{
double area = PI * radius * radius;
printf("\nArea = %f", area);
return area;
}
(68)评价下面代码的合理性:
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
(69)请分别写出
BOOL , float,
指针变量 与"零值"比较的
if 语句。
(70)外部变量的定义性声明与引用性声明在应用上的区别是什么?
(71)请说明外部变量的特性。(至少三点)
(72)外部变量和静态变量的区别是什么?
(73)对控制寄存器正确赋值要注意些什么?
(74)请区别如下代码?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
(75)已知
a
为整数,比较下面代码的效率并说明原因:
a++;
a = a+1;
(76)已知
a
为整数,比较下面代码的效率并说明原因:
a = a*4;
a << 2;
(77)说明一个变量和定义一个变量有什么区别?
(78)可以在头文件中说明
static
变量吗?
(79)全局变量的缺省关键字是什么?
(80)局部变量的缺省关键字是什么?
(81)静态局部变量的使用范围和生命周期是什么?
(82)全局变量的使用范围和生命周期是什么?
(83)静态全局变量和全局变量的区别是什么?
(84)寄存器变量的使用有什么限制?能用取址运算符"&"来获取
register
变量的地址吗,原因是什么?
(85)为什么指针型变量在使用前必须初始化?
(86)请指出下面代码的缺陷:
main()
{
T_S16 *i;
T_S8 *str;
*I = 100;
str = "Good";
}
(87)分别从大转小、小转大两方面说明类型转换可能存在的隐患,并给出解决措施。
(88)减少全局变量使用的原因是什么?
(89)为什么禁止在符号变量上进行移位操作?
(90)请从类型转换精度损失的角度分析以下代码。
#define DELAY_MILLISECONDS 10000
T_S8 cTime;
cTime = DELAY_MILLISECONDS;
WaitTime(cTime);
(91)结构体中的位域为什么要尽可能相邻?
(92)判断下面语句是否正确并说明原因。
float a;
scanf("%7.2f", &a);
@老梁 359699505@qq.com
www.jsetc.com
(93)判断下面语句是否正确并说明原因。
#include <stdio.h>
void main(void)
{
int x;
scanf("%d", x);
printf("%d", x);
}
(94)判断下面语句是否正确并说明原因。
main()
{
int a = 5;
printf("%d", a);
}
(95)判断下面语句是否正确并说明原因。
main()
{
float a, b;
printf("%d", a%b);
}
(96)判断下面语句是否正确并说明原因。
int a, b;
scanf("%d%d", a, b);
(97)判断下面语句是否正确并说明原因。
int n;
scanf("%d", &n);
int a
;
(98)全局变量与局部变量、动态存储变量与静态存储变量的区别?
(99)为什么说使用尽量小的数据类型能够优化代码?
(100)已知整型变量
I,那么
I++;与
I = I + 1;那个效率高,说明原因。
(101)要求设置一绝对地址为
0x67a9
的整型变量的值为
0xaa66。编译器是一个纯粹的
ANSI
编译器。写代码实现这一要求。
(102)
描述下列变量说明:
short int a;
float b[3];
long (* c)[3];
unsigned * d[3];
void (*f)(int);
相关文章推荐
- 嵌入式系统开发人员C语言测试题--填空题(数据类型和变量)
- 嵌入式系统开发人员C语言测试题--填空题(数据类型和变量)
- 嵌入式系统开发人员C语言测试题--设计问答题(运算符与表达式)
- 嵌入式系统开发人员C语言测试题--选择题(运算符与表达式)
- 嵌入式系统开发人员C语言测试题--填空题(运算符与表达式)
- 嵌入式系统开发人员C语言测试题-数据结构与算法
- 嵌入式系统开发人员C语言测试题 (运算符与表达式)
- 嵌入式系统开发人员的知识结构(转)
- 在32、64位系统、C语言基本数据类型的长度。
- SAP常用知识点{系统变量|TCODE|消息类型|数据类型|变量声明|Internal Table}
- 嵌入式系统编程语言-C语言开发流程及基本结构
- C语言的数据类型(三)变量
- 如何用C语言开发DSP嵌入式系统
- 移动开发四国语言概览三:数据类型与常量、变量(上)
- C语言变量和数据类型
- 我也要学C语言-第三章:C程序的数据,数据类型还有变量
- VC常用的Windows数据类型与ARM嵌入式C语言的数据类型
- C语言变量和数据类型练习1
- oracle的学习六:pl/sql基础(数据类型、定义变量)、游标、过程、函数、包、触发器(系统触发器)
- C语言的数据类型→常量与变量