C语言习题~day37

1.由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。下面哪个阶段可以发现被调用的函数未定义()

A.预处理

B.编译

C.链接

D.执行

C。在链接阶段,会将各个目标文件以及所需的库进行组合和关联,如果存在被调用的函数未定义,在链接时就会发现这个问题,因为无法找到该函数的具体实现来完成链接过程。预处理主要处理宏等操作;编译阶段主要进行语法检查和生成目标代码,但对于跨文件的函数调用是否定义的检查主要在链接阶段;执行阶段是程序运行阶段,到这个时候发现就太晚了。所以选 C。

2.设有以下宏定义:

#define  N  3+1
#define Y(n) ((N+1)*n)

则执行语句z=2*(N+Y(5+1))后,z的值为()

A.60

B. 190

C.248

D.上述答案都不对

先计算 Y(5+1),Y(5+1)展开为 ((N+1)*5+1),即 ((4+1)*5+1)=(5*5+1)=26。

然后计算 N+Y(5+1)=4+26=30。

最后计算 z=2*(N+Y(5+1))=2*30=60。

3.char a; int b; float c; double d    则表达式a*b+d-c值的类型为()

A. float

B. int

C. char

D.double

D。在进行混合运算时,会进行类型转换,转换的规则是向精度更高的数据类型转换。char 类型会自动提升为 int 类型参与运算,int 与 double 运算时结果会转换为 double 类型,float 与 double 运算时也会转换为 double 类型,所以最终表达式 a*b+d-c 的值的类型为 double 类型。

4. 厘米换算英尺英寸

#include <stdio.h>

int main() {
	int cm;
	scanf("%d", &cm);

	double meters = cm / 100.0;
	double feet = meters / 0.3048;
	int foot = (int)feet;
	double inch = (feet - foot) * 12;

	printf("%d %d\n", foot, (int)inch);

	return 0;
}

1. 首先从用户处获取以厘米为单位的数值。

2. 将厘米转换为米(除以 100),然后根据公式将米转换为英尺(除以 0.3048),得到一个包含小数部分的英尺值。

3. 通过强制类型转换获取英尺的整数部分,这就是英尺的整数值。

4. 用英尺值减去其整数部分得到小数部分,再乘以 12 将其转换为英寸,同样通过强制类型转换获取英寸的整数部分。

5. 最后输出得到的英尺整数值和英寸整数值。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值