📜  C 程序的输出 | 37套

📅  最后修改于: 2022-05-13 01:56:11.051000             🧑  作者: Mango

C 程序的输出 | 37套

1.) 以下代码的输出是什么?

#include 
int main(void)
{
    int y, z;
    int x = scanf("%d %d", &y, &z);
    printf("%d", x);
    return 0;
}

输入:

12 10

一)12
b)2
c) 语法错误
d) 10

Answer : b

说明: scanf() 返回它成功存储的变量数。

2. 以下代码的输出是什么?



#include 
int main(void)
{
    printf("%d", printf("geeksforgeeks"));
    return 0;
}

a) 语法错误
b) 极客为极客
c)geeksforgeeks13
d)13

Answer : c

说明: () 以整数形式返回输出的长度(由 printf 打印)。

3. 以下代码的输出是什么?

#include 
int add(int a, int b)
{
    if (a != 0 && b != 0)
        return printf("%*c%*c", a, '.', b, '.');
    else
        return a != 0 ? a : b;
}
int main()
{
    int A = 0, B = 0;
    scanf("%d %d", &A, &B);
    printf("Required sum is %d", add(A, B));
    return 0;
}

输入:

22 10

一)42
b) 编译错误
c) 所需金额为 32
d)32

Answer : c

说明: printf() 不使用加法运算符来添加任何数字。

4. 以下代码的输出是什么?

#include 
int main()
{
    printf("%m");
    return 0;
}

成功
b) 编译错误
厘米
d) 以上都不是。



Answer : a

说明: “%m”在 printf() 中使用时打印“成功”。 '%m' 转换是一个 GNU C 库扩展。

5. 以下代码的输出是什么?

#include 
double m[] = { 7709179928849219.0, 771 };
int main()
{
    m[1]-- ? m[0] *= 2, main() : printf((char*)m);
}

a) C++很烂
b) 编译错误
c)714
d)770

Answer: a

解释 :
数字 7709179928849219.0 具有以下二进制表示为 64 位双精度:
01000011 00111011 01100011 01110101 01010011 00101011 00101011 01000011
+^^^^^^^ ^^^^——————————————————————————
+ 显示标志的位置; ^ 指数,和 - 尾数(即没有指数的值)。
由于表示使用二进制指数和尾数,数字加倍会使指数增加 1。这个程序精确地执行了 771 次,所以从 1075(10000110011 的十进制表示)开始的指数最后变成了 1075 + 771 = 1846; 1846 的二进制表示为 11100110110。结果模式如下所示:
01110011 01101011 01100011 01110101 01010011 00101011 00101011 01000011
———— ———— ———— ———— —— —— —— —— —— —— —— ——
0x73 's' 0x6B 'k' 0x63 'c' 0x75 'u' 0x53 'S' 0x2B '+' 0x2B '+' 0x43 'C'
此模式对应于我们看到的打印字符串,只是向后打印。同时,数组的第二个元素变为零,提供空终止符,使字符串适合传递给 printf()。

6. 以下代码的输出是什么?

#include 
int main()
{
    printf("geeksforgeeks");
    brk(0);
}

a) 极客为极客
b) 编译错误
c) 程序不会终止
d) 以上都不是

Answer :  a

说明: brk(0) 终止程序并像返回语句一样起作用。