📜  C 程序的输出 | 38套

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

C 程序的输出 | 38套

问题1。下面的输出是什么?

#include 
void main()
{
    int a[5] = { 5, 1, 15, 20, 25 };
    int i, j, m;
    i = ++a[1];
    j = a[1]++;
    m = a[i++];
    printf("%d, %d, %d", i, j, m);
}

选项 :
A. 3、2、15
B. 2, 3, 20
C. 2, 1, 15
D. 1, 2, 5

Answer : A

解释: >> int a[5] = {5, 1, 15, 20, 25};变量 arr 被声明为一个大小为 5 的整数数组,它被初始化为
a[0] = 5, a[1] = 1, a[2] = 15, a[3] = 20, a[4] = 25。

>> int i, j, m;变量 i、j、m 被声明为整数类型。

>> i = ++a[1];变成 i = ++1;因此 i = 2 和 a[1] = 2



>> j = a[1]++;变成 j = 2++;因此 j = 2 和 a[1] = 3。

>> m = a[i++];变成 m = a[2];因此 m = 15 并且 i 增加 1(i++ 表示 2++ 所以 i=3)

>> printf(“%d, %d, %d”, i, j, m);它打印变量 i, j, m 的值

问题2。下面的输出是什么?

void main()
{
    int arr[10] = { 1, 2, 3, 4, 5 };
    printf("%d", arr[5]);
}

选项 :
A. 垃圾值
B. 5
C. 6
D. 0

Answer : D

说明:当数组在声明时部分初始化时,数组的其余元素默认初始化为 0。

问题3。下面的输出是什么?
假设数组从 65472 开始,每个整数占用 2 个字节

void main()
{
    int a[3][4] = { 1, 2, 3, 4, 4, 3, 2, 1, 7, 8, 9, 0 };
    printf("%u, %u", a + 1, &a + 1);
}

选项 :
A. 65474、65488
B. 65480、65488
C. 65480, 65496
D. 65474, 65476



Answer : C

说明:数组的基地址(也是第一个元素的地址)是65472。
对于像对数组的引用这样的二维数组,其类型为“指向 4 个整数数组的指针”。因此,a+1 指向数组 a 中第二行的第一个元素的内存位置。因此 65472 +(4 个整数 * 2 个字节)= 65480
然后,&a 的类型为“指向 4 个整数的 3 个数组的数组的指针”,总共 12 个整数。因此,&a+1 表示“12 个整数 * 2 个字节 * 1 = 24 个字节”。
因此,起始地址 65472 + 24 = 65496。所以,&a+1 = 65496

问题4。下面的输出是什么?

#include 
void main()
{
    printf(6 + "Geeks for Geeks");
}

选项 :
A. 对于极客
B. 极客
C.编译时错误
D、无输出

Answer : A

说明:它跳过 6 个字符并打印给定的字符串。

问题5。下面的输出是什么?

#include 
void main()
{
    char* s = "hello";
    char* p = s;
    printf("%p\t%p", p, s);
}

选项 :
A. 打印不同的地址
B. 打印相同的地址
C. 运行时错误
D、什么都没有

Answer : B

解释: *s 将保存值“hello”,并且该字符串被分配给 *p,它将开始指向相同的物理位置。