|
本文展示了10个C语言的迷题以及答案,而且有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题,希望你能更了解C语言。 如果你不看答案,不知道是否有把握回答各个谜题?让我们来试试。 . G. p6 c, x9 T% g. r, t 1会输出"hello-std-out"? ; S) T) B/ ]9 z1 `#include<stdio.h>) P* G( d9 B* Q( H1 ` int main()+ x ~* {8 N# T2 y6 `- y { while (1) {1 g: k# S W0 W, N0 c5 }$ r fprintf(stdout, "hello-std-out");/ E* Z. I' n0 H fprintf(stderr, "hello-std-err");" `% p) [8 I( X1 g' x) v sleep(1);# E( |) h* B" Z W } return 0; } 2 N9 @& {5 a+ Z/ S( E0 ?8 Y 参考答案: 2 这段程序是有问题吗? % x& h/ G+ C# t5 T# J; P( n4 _" M#include<stdio.h>/ ?- E" U% M& m$ ^. U) d int main()% a; h0 I5 E' {4 Q0 } { int a = 1,2;0 K5 [8 a4 y ^* [ printf("a : %d\n",a); return 0; }7 L; c2 `8 e& r 参考答案: ) H0 N$ Z9 \' [ 3 下面的程序会有什么样的输出呢? , {3 J, Z6 [3 F/ H Y0 l#include<stdio.h> int main() { int i=43; printf("%d\n",printf("%d",printf("%d",i))); return 0;& m6 b# j4 ~ t8 J5 P( n' v4 ]1 R } 参考答案
4 下面的程序会输出什么? #include<stdio.h> int main()0 o. Y0 n( V) R- h. B { float a = 12.5;% [/ l0 ]+ ^3 |. _+ ^ printf("%d\n", a);* r" e$ J* e) a( y& I printf("%d\n", (int)a);6 J7 j Q! l& e4 x( A8 g* |, f printf("%d\n", *(int*)&a); return 0;: e& _ m0 v( y, p/ f6 c y U$ { } 参考答案 该项程序输出:"0 12 1095237632"。
5 下面的程序输出是多少?并解释为什么? #include<stdio.h>( p" N" b& c8 c- z; @" m. k$ D9 z int main()2 g4 A* @% s4 R { int a = 1; switch (a)% P( |) o5 }6 s5 w* R6 `8 t { int b = 20; case 1: printf("b is %d\n", b); break;6 f7 R) Q6 P# X. V default:9 \$ T4 h+ l. B5 r2 i printf("b is %d\n", b);% A' U- I' g9 ~; X break;2 D, r( g' N7 c( C6 K } m4 @3 Z7 I; I+ J return 0; }/ I6 P6 X9 A' y3 B5 M% z9 M 参考答案 5 k) {; [* P) C3 z6 o4 i% k$ W 6 下面的程序会有什么潜在的危险? / C, G3 ?* ^2 A8 C- O#include<stdio.h> int main() {1 g1 F4 e; m( k char str[10]; printf("Enter the string:"); scanf("%s", str); o. e" N9 E- \ V7 A2 q# J( N* o printf("You entered:%s\n", str); return 0; } 参考答案 ! [2 v. O4 {( u) o, n% A 7 请问下面的程序输出什么? ) L1 n7 c5 u' f. d8 x/ X- s#include<stdio.h> int main()$ c7 O8 q# F9 S0 Z! ~8 H/ J {/ W' ~" R$ c. x3 H) _: ]# D. z int i; i = 10;" A+ @0 F+ M9 d, H! t5 p0 Q' N printf("i : %d\n", i); printf("sizeof(i++) is: %d\n", sizeof(i++)); printf("i : %d\n", i);: A3 H) U& y7 `) p return 0;! X4 n, _: X6 a0 M& _ } 参考答案 如果你觉得输出分别是:10,4,11。那么你就错了。
8 下面的程序的输出值是什么? #include<stdio.h>( _! }6 v+ `, h* h8 i #define SIZEOF(arr) (sizeof(arr)/sizeof(arr[0]))" _& a( o) j! ?0 x, w( f: W #define PrintInt(expr) printf("%s:%d\n",#expr,(expr))6 }* P/ D* [9 P" a, u+ ^; b/ C , n( ^( D1 Y% W3 ` int main() e) p% O* Q9 E. G0 Z( S { /* The powers of 10 */& s, |, y1 w$ D+ c. W! e int pot[] = { 0001,7 ~5 Z( g% R0 l% ]2 Z, ~* m$ h9 b 0010,6 p% L$ Q# o% R3 }' {3 R t 0100,8 M( j/ o5 P: O! l9 s3 l 10005 c2 ^6 N9 F) N1 r, _ o }; int i; for (i = 0; i < SIZEOF(pot); i++)PrintInt(pot);4 d ?$ n* j$ b return 0;2 C, ?) [7 t8 r" d2 J }. x( X/ V( J& H7 g% h0 ? l9 \ 参考答案
9 下面的输出是什么? #include<stdio.h>$ u6 h) v) n/ r int main() { int i = 6;* ^: s$ D6 Y. c" i if (((++i < 7) && (i++ / 6)) || (++i <= 9));9 n- z, c. L- ^3 h7 F! |. o9 z printf("%d\n", i); return 0;0 u. K1 K& I5 C W }, j+ H6 P! ?. T5 J4 P8 ^/ e 参考答案 本题并不简单的是考前缀++或反缀++,本题主要考的是&&和||的短路求值的问题。
所以,我相信你会知道本题的答案是什么了。 10 下面的C程序是合法的吗? 1 U5 f4 v W5 e; W F#include<stdio.h>: K- I2 x2 f, t, C5 f* M' Z int main() { int a = 3, b = 5; printf(&a["Ya!Hello! how is this? %s\n"], &b["junk/super"]);- Z% k" @& D# M6 U //等价printf("Hello! how is this? %s\n", "super");; N% C8 i! j& [6 I( f printf(&a["WHAT%c%c%c %c%c %c !\n"], 1["this"], 2["beauty"], 0["tool"], 0["is"], 3["sensitive"], 4["CCCCCC"]);9 x; O( f* P+ Q9 `8 D. G+ E return 0; } 参考答案 本例是合法的,输出为:"Hello! how is this? super That is C !"
|
微信公众号
手机版