Daily practice——2021/4/19

1.设有以下说明语句 typedef struct { int n; char ch[8]; } PER; 则下面叙述中正确的是 ( )。
A.PER 是结构体变量名
B.PER是结构体类型名
C.typedef struct 是结构体类型
D.struct 是结构体类型
正确答案: B
解析:使用typedef为现有类型创建别名,定义易于记忆的类型名。

2.以下程序的输出是( )。

main( )
{ int a=2,b=1,c=2;
if(a<b)
if(b<0)
c=0;
else c+=1;
printf("%d",c); }

A.0  B.1  C.2  D.3
正确答案: C
解析:关于if-else匹配原则,else与最近的未匹配的if配对,则题意程序对应等价于:
int a=2,b=1,c=2;
if(a<b)
{
if(b<0) c=0;
else c+=1;
}
printf("%d",c);
由于a<b为假,故直接执行printf,输出2。

3.for(int x = 0 , y = 0; !x && y <= 5 ; y++)语句执行循环的次数是多少次?
A.0  B.5  C.6  D.无数次
正确答案: C
解析:算数运算符>关系运算符>&&>||>赋值运算符
    !x && y <= 5 就是 (!x) && (y <= 5)

#include<stdio.h>

int main()
{
	int c = 0;
	for (int x = 0, y = 0; !x && y <= 5; y++)
	{
		c += 1;
	}
	printf("%d", c);
	return 0;
}

在这里插入图片描述

4.字符型常量在内存中存放的是:( )。
A.ASCII码
B.BCD码
C.内部码
D.十进制码
正确答案: A
解析:ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。
BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式。
内码是指汉字系统中使用的二进制字符编码。
十进制码面向的是开发人员,经过转化对应的编码给计算机使用。

5.当n=5时,下列函数的返回值是:( )。

 int foo(int n) 
 { 
 if(n<2)return n; 
 return foo(n-1)+foo(n-2); 
 } 

A.5  B.7  C.8  D.1
正确答案: A
解析:f(5) =
   f(4) + f(3) =
   f(3) + f(2) + f(2) + f(1) =
   f(2) + f(1) + f(1) + f(0) + f(1) + f(0) + f(1) =
   f(1) + f(0) + f(1) + f(1) + f(0) + f(1) + f(0) + f(1) = 5

6.(不定项)以下数字在表示为double(8字节的双精度浮点数)时存在舍入误差的有()。
A.2的平方根
B.10的30次方
C.0.1
D.0.5
E.100
正确答案: A B C
解析:A选项,毫无疑问。
8字节的共64位,按照标准的浮点数表示方法,应该是1位符号位,11位指数位,52位尾数位。
对于 B选项(2^90 < B < 2^100)来说,指数位是够了,但是尾数位会不会够呢? B = 2^30*5^30 也就是说将B表示成二进制后,其后30位全为0,从其第一个不为0到最后一个不为0的二进制表示位中,至少需要90 - 30 = 60位来存储,而其尾数位只有52位,必然会产生舍入误差,所以B选项存在舍入误差。
对于C选项来说,将C表示成二进制便知 10[0.1] = 2[0.00011001100110011…],亦为无限循环小数,所以将0.1表示成二进制的double型必然也会产生舍入误差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值