C语言--每日选择题--Day34

第一题

1.  i  = ()

int i = 1;
int j = i++;
if((i > j++) && (i++ == j)) 
{
    i += j;
}

A:3

B:5

C:6

D:7

答案及解析 B

本题考查你对后置++的认识,后置++返回的是++之前的值,之后再++;

所以在进入if语句之前,j = 1, i = 2;

i > j++,2 > 1 为真,此时i = 2,j = 2;

i++ == j 为真,i = 3,j = 2

所以 i += j, i = 5;

第二题(易错题)

2. 在 32 位编译器上,下面输出的结果为()

char *str1 = "Hello", str2[] = "Hello"; 
 printf("%d %d", sizeof(str1), sizeof(str2));

A:5 6

B:5 5

C:6 6

D:4 6

答案及解析 D

首先要知道sizeof求的是你的变量的数据类型的字节

str1是char*类型,是一个字符指针,并不是数组,所以指针的字节为4或者8字节,题目说了为32位,所以为4字节;

str2是一个字符串,sizeof(数组名)求的是整个数组的空间,但是字符串还有一个隐藏的\0,所以结果为6字节

第三题

3. 以下程序运行时输入:123456789↙,则程序运行结果是( )

#include 
int main()
{
    int x, y;
    scanf("%2d%*4s%2d", &x, &y);
    printf("%d", y - x);
    return 0;
}

A:44

B:55

C:66

D:88

答案及解析 C

本题是一个比较少见的题;

%*4s表示读取一个长度为四个字符的字符串,中间的*表示将读取到的字符串忽略,不赋给变量列表中的变量。

%2d代表读取2个整数

所以x = 12,y = 78

y - x = 66;

第四题

4. 在标准C中,while(){}和do{}while()的功能完全相同。请问这句话的说法是正确的吗?

A:正确

B:错误

答案及解析 B

while循环是先进行条件判断后进入循环体

do-while是先进入循环体,后条件判断;

所以在条件相同时,do-while永远比while多执行一次循环

第五题

5. 在C语言程序中,若对函数的返回值类型未加显式说明,则函数的返回值隐含类型为()

A:void

B:double

C:char

D:int

答案及解析 D

若对函数类型未加显式说明,则函数的隐含类型为int

你可能感兴趣的:(C语言选择题,c语言,算法,开发语言)