问题1 main()将被调用多少次?
C
main() { printf ( " main Called Again" ); main(); } |
答复: 无限循环 描述: main()中没有停止对main()的递归调用的条件,因此它将被无限次调用。
问题2 猜测以下程序的输出:
C
#include<stdio.h> 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)这里我们比较如果(10==10.0),因此这个条件是满足的。因为我们不能比较int 所以int被转换成float,然后进行比较。因此,它打印“x和y相等”。
问题3 以下代码的输出是什么?
C
#include<string.h> 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程序的输出是什么?
C
#include "stdio.h" int main() { int _ = 18; int __ = 38; int ___; ___ = _ + __; printf ( "%i" , ___); return 0; } |
答复: 56 描述: 变量名可以有 只有下划线。
问题5 以下操作的结果将打印什么:
C
main() { int x = 41, y = 43; x = y++ + x++; y = ++y + ++x; printf ( "%d %d" , x , y); } |
答复: 86 130 描述: 它实际上依赖于编译器。在x=y+++x++之后,x的值变为85,y变为44,y=++y+++x将被计算为y=(44)+(86)。计算后y变为130。
问题6 以下操作的结果将打印什么:
C
main() { int x = 7; printf ( "%d, %d, %d" , x, x<<5, x>>5); } |
答复: 7, 224, 0 描述: 当x=7时,第一个%d给出7,第二个%d将在左移五次后取x值,并且在将值转换为二进制后进行移位,二进制值7(000111)将左移两次,使其成为二进制224(11100000),因此x<5是224,而左移不会影响x的原始值,因此第三个%d也将显示0。
问题7 输出是什么?
C
main() { if (1, 0) printf ( "True" ); else printf ( "False" ); } |
答复: 错误的 描述: 逗号(,)运算符返回位于 , 因此if语句变成if(0)。
问题8 输出是什么?
C
#include<stdio.h> int main() { printf ( "%d" , printf ( "%d" , 12345678)); return 0; } |
答复: 123456788 描述: 注意结尾的额外8。printf()返回在屏幕上成功打印的字符数。
问题9 输出是什么?
C
void main() { printf ( "2 + 3 = %d" , 2+3); } |
答复: 2 + 3 = 5 描述: 由于格式说明符是%d,并且两者都是整数(2,3),因此它将添加并打印整数值。
问题10 输出是什么?
C
#include<stdio.h> main() { int i = 0; if (i = 55, 0, 10, 0) printf ( "Test Skills %d" , i); else printf ( "C Programming %d" , i); } |
答复: C编程55 描述: 首先计算i=55,然后放弃其值。0随后被评估并丢弃。10.然后评估并丢弃。然后计算最右边的0,它将是if条件中整个表达式的值(但不是子表达式的值),并使条件为false。
问题11 输出是什么?
C
#include<stdio.h> int main() { char arr[5] = "World is beautiful" ; printf ( "%s" , arr); return 0; } |
答复: 世界 还会显示一条警告:“4:19:警告:字符数组的初始值设定项字符串太长[默认情况下已启用]。” 描述: 任何字符数组的大小都不能小于其分配的任何字符串中的字符数。数组的大小可以等于(不包括空字符)或大于但不小于。
问题12 以下程序的输出是什么?
C
#include<stdio.h> 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" ); } } |
答复: 光盘 描述: 在switch语句中,缺省值应该在所有切换情况之后出现。在这种情况下,它会在中间执行,默认值之后的所有情况都会在break语句之前执行。
问题13 输出是什么?
C
#include<stdio.h> 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 考虑下面的程序:
C
#include<stdio.h> main() { int i, j; for ( i = 0, j = 5; j>0, i<10 ; i++, j--) printf ( "GeeksforGeeks.org" ); } |
“Geeksforgeks.org”会被打印多少次? 答复: 10 描述: for循环(j>0,i<10)的条件部分用逗号分隔,这意味着编译器将使用逗号右侧的值,即i<10,因此循环将执行 直到i的值小于10。
问题15 输出是什么?
C
#include<stdio.h> #define SQR( x ) ( x * x ) int main() { int b = 5; int a = SQR(b+2); printf ( "%d" , 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
本文由 哈里什·库马尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。