暑假第十八天之每天一些题系列
Posted 小赵小赵福星高照~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暑假第十八天之每天一些题系列相关的知识,希望对你有一定的参考价值。
暑假第十八天之每天一些题系列
一、选择题
- 设有以下宏定义,则执行语句: 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;
}
以上是关于暑假第十八天之每天一些题系列的主要内容,如果未能解决你的问题,请参考以下文章