暑假第十八天之每天一些题系列

暑假第十八天之每天一些题系列

一、选择题

  • 设有以下宏定义,则执行语句: z = 2 * (N + Y(5 + 1)); 后z的值为
#define N 3
#define Y(n) ((N+1)*n) /*这种定义在编程规范中是严格禁止的*/

A. 出错 B. 42 C. 48 D. 54

答案解析:

#define定义的符号和宏在预处理阶段完成替换,z=2*(N+Y(5+1));被替换为:z=2*(3+((3+1)*5+1));则z的值为48

  • 对于以下代码,哪种说法是正确的
int i=6;
if ( i<= 6 )
	printf("hello\n");
else
	printf("bye-bye\n");

A. 打印出 “hello”
B. 打印出 “bye-bye”
C. 不能通过编译
D. 打印出 “hello bye-bye”

答案解析:

if else语句,i<=6,则进入if语句,否则进入else语句。

  • 下列可用于C语言程序标识符的一组是(名字间以逗号分隔)
    A. For, -abc, IF
    B. For, _abc, IF
    C. 2_a, xyz, b1_s
    D. void, d, WORD

答案解析:

C语言的标识符一般应遵循如下的命名规则:
1 标识符必须以字母a~z、 A~Z或下划线开头,后面可跟任意个(可为0)字符,这些字符可以是字母、下划线和数字,其他字符不允许出现在标识符中。
2 标识符区分大小写字母
3 标识符的长度,c89规定31个字符以内,c99规定63个字符以内
4 C语言中的关键字,有特殊意义,不能作为标识符
5 自定义标识符最好取具有一定意义的字符串,便于记忆和理解。

  • 对于以下代码,输出结果是
char ch = -1;
printf("%d\n", ch);

A. 运行错误,因为 %d 和 ch 的类型不匹配
B. ASCII 码表中 255 那个位置的字符
C. 255
D. -1

答案解析:

char也是本质上也是整形,它是有符号的char,故以整形打印为-1,若是无符号的char,以整形打印为255

  • 以下哪个 for 语句是错误的
    A. for(i=0; i<10; i–);
    B. for(int i=0; i<10, j<10; i++);
    C. for(i=0; i++);
    D. for(i=0; i<10,j<10; i++);

for循环的前两部分在结束时都要加分号,没有语句也要加分号

二、填空题

  • 表达式 (double)(10/4*4) 的结果是

答案解析:

结果是:8.000000;10/4是2,2*4等于8,强制类型转换为double,故为8.000000

  • 假设所有变量均为整型,则表达式 (a=2,b=5,a++,b++,a+b) 的值为

答案解析:

此处为逗号表达式,逗号表达式的值是最后一个表达式的结果,每个表达式从左往右依次计算,a变为3,b变为4,故最后表达式值为7

  • 以下代码段的结果是
int main()
{
    int i,x,y;
    i = x = y = 0;
    do {
        ++i;
        if( i%2 )
        x += i,
        i++;
        y += i++;
    } while ( i<=7 );
    printf("%d %d %d", i, x, y);
}

答案解析:

第一次循环下来,i=3,x=1,y=2;第二次循环下来,i=5,x=1,y=6,第三次循环后,i=7,x=1,y=12;第四次循环后,i=9,x=1,y=20。此时i>7,循环结束,故打印为9,1,20

三、算法题

题目描述:

如何判断一个数n是否是2的k次方?注意:不用求K是多少,只需要判断,请编写函数实现

思路:

2的次方的数的二进制只有一个1,n&n-1是去掉n的二进制当中的那个1,如果它是0的话说明是2的次方,否则不是

代码如下:

#include<stdio.h>
void judge_is_2pow(int n)
{
    //2的次方的数的二进制只有一个1,n&n-1是去掉n的二进制当中的那个1,如果它是0的话说明是2的次方,否则不是
    if(n&n-1)
    {
        printf("这个数不是2的次方\n");
    }
    else
    {
        printf("这个数是2的次方\n");
    }
}
int main()
{
	judge_is_2pow(4);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小赵小赵福星高照~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值