【嵌入式笔试题】C语言笔试题(2)

本文提供了22道C语言数据类型的笔试题目,涵盖变量定义、代码逻辑、浮点数比较、结构体内存对齐、数组与指针等核心知识点。通过这些题目,帮助读者深入理解C语言中的数据类型及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言非常之经典的笔试题。

2.数据类型(22道)

2.1 用变量a给出下面的定义

1 )一个整型数: int a
2 )一个指向整型数的指针(一重指针): int *a
3 )一个指向指针的的指针,它指向的指针是指向一个整型数的指针(二重指
针): int **a
4 )一个有 10 个整型数的数组 : int a[10]
5 )一个有 10 个指针的数组,这 10 个指针是指向整型数的(指针数组): int
*a[10]
6 )一个指向有 10 个整型数数组的指针(数组指针): int (*a)[10]
7 )一个指向函数的指针,该函数有一个整型参数并返回一个整型数(函数指针):
int (*a)(int)
8 )一个有 10 个指针的数组,这 10 个指针均指向函数,该函数有一个整型参数并返回
个整型数(函数指针数组): int (*a[10])(int)

2.2下面的代码输出是什么,为什么?

void foo( void )
{
        unsigned int a = 6;
        int b = -20;
        (a + b > 6)? printf ( "> 6" ) : printf ( " <= 6" );
}
答案: 输出是 “>6”
解读: 当运算表达式中存在有符号数和无符号数时,有符号数隐式转换成了无符号数
(即底层的补码不变,但是此数从有符号数变成了无符号数)。注意,正数的补码为其
本身,负数的补码为其反码 +1 。因此 -20 变成了一个非常大的正整数,所以该表达式计
算出的结果 ”>6”

2.3写出float x零值比较的if语句。

答案: if (x > -0.000001 && x < 0.000001);
解读: 因为计算机在处理浮点数的时候是有误差的,所以不能将浮点型变量用 “==”
=” 与数字比较,应该设法转化成 “>” “<” 此类形式。

2.4下面代码有什么错误?

#include<stdio.h>
void main()
{
        char *s = "AAA" ;
        s[0] = 'B' ;
        printf ( "%s" , s);
}
1 "AAA" 是字符串常量, s 是指针,指向这个字符串常量,所以声明 s 的时候就有问
题,应该是 cosnt char* s="AAA"
2 )然后又因为是常量,所以对是 s[0] 的赋值操作是不合法的。

2.5下面代码输出是什么?

答案: 输出是 14
解读: 代码将数值 2 强制类型转换为 int 类型指针, int 类型指针加 3 相当于指向后面第三
int 类型变量的首地址,一个 int 类型变量占 4 个字节,所以加 3 相当于指针往后移了 12
个字节,指向地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值