📜  C程序的输出|套装29

📅  最后修改于: 2021-05-26 02:53:33             🧑  作者: Mango

问题1
main()将被调用多少次?

main()
{
   printf("\n main Called Again");
   main();
}

答案:无限循环
描述: main()中没有条件可以停止对main()的递归调用,因此它将无限次被调用。


问题2
猜猜以下程序的输出:

#include
int main()
{
  int x = 10;
  float y = 10.0;
  if (x == y)
    printf("x and y are equal");
  else
    printf("x and y are not equal");
}

答案: x和y相等
描述:如果(x == y)在这里,我们正在比较if(10 == 10.0)因此满足此条件。因为我们无法比较int
和float,因此将int转换为float并进行比较。因此,它打印“ x和y相等”。


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

#include
main()
{
    char *str1 = "abcd";
    char str2[] = "abcd";
    printf("%d %d %d", sizeof(str1), 
          sizeof(str2), sizeof("abcd"));
}

回答: 8 5 5
描述 :
在运行该程序的机器上,将打印字符指针的第一个大小为8的字符。然后打印大小为5的字符串str2的大小(包括’/ 0’终止字符)。第三个类似于第二个。


问题4
以下c程序的输出是什么?

#include "stdio.h"
int main()
{
    int _ = 18;
    int __ = 38;
    int ___;
    ___ = _ + __;
    printf ("%i", ___);
    return 0;
}

回答: 56
说明:变量名称只能带有下划线。


问题5
通过以下操作将打印出什么:

main()
{
    int x = 41, y = 43;
    x = y++ + x++;
    y = ++y + ++x;
    printf ("%d %d", x , y);
}

回答: 86130
描述:其实际取决于编译器。在x = y ++ + x ++之后,x的值变为85,y变为44,并且y = ++ y + ++ x将被计算为y =(44)+(86)。经过计算,y变为130。


问题6
通过以下操作将打印什么:

main()
{
    int x = 7;
    printf ("%d, %d, %d", x, 
                 x<<5, x>>5);
}

回答: 7,224,0
说明:由于x = 7,所以第一个%d给出7,第二个%d将x左移五次后取x的值,并且在将值转换为二进制后进行移位,二进制值7(000111)将左移两次使它成为二进制224(11100000),所以x << 5是224,并且由于向左移位不会影响x的原始值,它仍然是5,因此第三个%d也将显示0。


问题7
输出是什么?

main()
{
  if (1, 0)
    printf ("True");
  else
    printf ("False");
}

答:
说明:逗号(,)运算符返回的值,该值位于的右侧因此if语句变为if(0)。


问题8
输出是什么?

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

回答: 123456788
描述:注意最后的额外8个。 printf()返回成功在屏幕上打印的字符数。


问题9
输出是什么?

void main()
{
  printf ("2 + 3 = %d", 2+3);
}

答案: 2 + 3 = 5
说明:由于格式说明符为%d且均为整数(2,3),因此它将添加并打印整数值。


问题10
输出是什么?

#include
main()
{
    int i = 0;
    if (i = 55, 0, 10, 0)
        printf ("Test Skills %d", i);
    else
        printf ("C Programing %d", i);
}

答案: C编程55
说明:首先评估i = 55并舍弃其值。然后评估0并丢弃。然后评估10个并丢弃。之后,最右边的0被求值,它将成为if条件中整个表达式的值(而不是子表达式的值),并将条件设为false。


问题11
输出是什么?

#include
int main()
{
    char arr[5] = "World is beautiful";
    printf ("%s", arr);
    return 0;
}

答案:世界
还会显示一条警告消息:“ 4:19:警告:字符数组的初始化字符串太长[默认启用]”
描述:任何字符数组的大小不能小于其已分配的任何字符串的字符数。数组的大小可以等于(不包括null字符)或大于或小于等于。


问题12
以下程序的输出是什么?

#include
void main()
{
    int a = 2;
    switch (a)
    {
        case 4: printf ("A");
        break;
        case 3: printf ("B");
        default : printf("C");
        case 1 : printf ("D");
        break;
        case 5 : printf ("E");
    }
}

答案: CD
描述:在switch语句中,所有switch情况后均应提及default。在这种情况下,它将在两次之间执行,并且默认情况下的所有情况都在break语句之前执行。


问题13
输出是什么?

#include
int main()
{
    int x = 100, y = 200;
    if ( ++x || ++y)
        printf ("x = %d, y = %d", x, y);
    else
        printf ("condition failed");
    return 0;
}

答案: x = 101,y = 200
说明:如果先执行if条件的第一部分(即++ x),则x值变为101。


问题14
考虑以下程序:

#include
main()
{
    int i, j;
    for( i = 0, j = 5; j>0, i<10 ; i++, j--)
    printf ("\GeeksforGeeks.org");
}

“ GeeksforGeeks.org”将被打印多少次?

答: 10
描述: for循环的条件部分(j> 0,i <10)用逗号分隔,这意味着编译器将使用逗号右边的值,即i <10,因此循环将执行
直到i的值小于10。


问题15
输出是什么?

#include
#define SQR( x ) ( x * x )
int main()
{ 
    int b = 5;
    int a = SQR(b+2);
    printf("%d\n", a);
    return 0;
}

答: 17
描述:众所周知,宏将盲目替换,而不进行计算。它将首先替换该值,然后再计算。因此,替换后,宏将变为SQR(x + 2)=(x + 2 * x + 2)在这种情况下x值为5。因此,最终替换将为SQR(5 + 2)=(5 + 2 * 5 + 2)。由于“ *”比“ +”具有更高的优先级,因此它将变为(5 + 10 + 2)。在这种情况下,a的值为17

要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”