青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 47, 文章 - 10, 評論 - 8, 引用 - 0
數據加載中……

C語言高級測試:為C程序員準備的0x10個最佳問題

整個測試遵循以下的約定:

u ?????? 假定在所有的程序中必須的頭文件都已經被正確包含。

考慮如下的數據類型:

u ?????? char 1 個字節

u ?????? int 4 個字節

u ?????? long int 4 個字節

u ?????? float 4 個字節

u ?????? double 為個 8 字節

u ?????? long double 8 個字節

u ?????? 指針為 4 個字節
1. Consider the following program:

?1 #include < setjmp.h >
?2 static ?jmp_buf??buf;
?3 main()
?4 {
?5 ?? volatile ?? int ?b;
?6 ??b? = 3 ;
?7 ?? if (setjmp(buf) != 0 )??
?8 ?? {
?9 ????printf( " %d? " ,?b);??
10 ????exit( 0 );
11 ??}

12 ??b = 5 ;
13 ??longjmp(buf?,? 1 );
14 }
The output for this program is: ?

(a) 3
(b) 5
(c) 0
(d) None of the above

2. Consider the following program:
?1main()
?2{
?3???struct?node?
?4???{
?5?????int?a;
?6?????int?b;
?7?????int?c;?????
?8???}
;
?9???struct?node??s=?{?3,?5,6?};
10???struct?node?*pt?=?&s;
11???printf("%d"?,??*(int*)pt);
12}
The output for this program is:
(a) 3
(b) 5
(c) 6
(d) 7

3. Consider the following code segment:
?1int??foo?(?int?x?,?int??n)
?2{
?3??int?val;
?4??val?=1;
?5??if?(n>0)?
?6??{
?7????if?(n%2?==?1)??val?=?val?*x;
?8????val?=?val?*?foo(x*x?,?n/2);
?9??}

10??return?val;
11}

What function of x and n is compute by this code segment?? ?

(a) x^n
(b) x*n
(c) n^x
(d) None of the above

4. Consider the following program:

1 main()
2 {
3 ?? int ??a[ 5 ]? = ? { 1 , 2 , 3 , 4 , 5 } ;
4 ?? int ? * ptr? = ??( int * )( & a + 1 );
5 ??printf( " %d?%d " ?,? * (a + 1 ),? * (ptr - 1 )?);
6 }

The output for this program is:

(a) 2 2
(b) 2 1
(c) 2 5
(d) None of the above

5. Consider the following program:

?1 void ?foo( int ?[][ 3 ]?);?????
?2 main()
?3 {
?4 ?? int ?a?[ 3 ][ 3 ] = ? {? {? 1 , 2 , 3 } ?,? {? 4 , 5 , 6 } , { 7 , 8 , 9 } } ;
?5 ??foo(a);
?6 ??printf( " %d " ?,?a[ 2 ][ 1 ]);
?7 }

?8
?9 void ?foo(? int ?b[][ 3 ])
10 {
11 ?? ++ ?b;
12 ??b[ 1 ][ 1 ]? = 9 ;
13 }

The output for this program is:
(a) 8
(b) 9
(c) 7
(d) None of the above

6. Consider the following program:

?1 main()
?2 {
?3 ?? int ?a,?b,c,?d;
?4 ??a = 3 ;
?5 ??b = 5 ;
?6 ??c = a,b;
?7 ??d = (a,b);
?8 ??printf( " c=%d " ?,c);
?9 ??printf( " d=%d " ?,d);
10 }

11

The output for this program is:

(a) c=3 d=3
(b) c=5 d=3
(c) c=3 d=5
(d) c=5 d=5

7. Consider the following program:

1 main()
2 {
3 ?? int ?a[][ 3 ]? = ? {? 1 , 2 , 3 ?, 4 , 5 , 6 } ;
4 ?? int ?( * ptr)[ 3 ]? = a;
5 ??printf( " %d?%d? " ??,( * ptr)[ 1 ],?( * ptr)[ 2 ]?);
6 ?? ++ ptr;
7 ??printf( " %d?%d " ??,( * ptr)[ 1 ],?( * ptr)[ 2 ]?);
8 }

9
The output for this program is:

(a) 2 3 5 6
(b) 2 3 4 5
(c) 4 5 0 0
(d) None of the above

8. Consider following function

?1int?*f1(void)
?2{
?3??int?x?=10;
?4??return(&x);
?5}

?6
?7int?*f2(void)
?8{
?9??int*ptr;
10??*ptr?=10;
11??return?ptr;
12}

13
14int?*f3(void)
15{
16??int?*ptr;
17??ptr=(int*)?malloc(sizeof(int));
18??return?ptr;
19}

20
Which of the above three functions are likely to cause problem with pointers

(a) Only f3
(b) Only f1 and f3
(c) Only f1 and f2
(d) f1 , f2 ,f3

9. Consider the following program:

1main()
2{
3??int?i=3;
4??int?j;
5??j?=?sizeof(++i+?++i);
6??printf("i=%d?j=%d",?i?,j);
7}

8
The output for this program is:

(a) i=4 j=2
(b) i=3 j=2
(c) i=3 j=4
(d) i=3 j=6

10. Consider the following program:

?1void?f1(int?*,?int);?
?2void?f2(int?*,?int);?
?3void(*p[2])?(?int?*,?int);
?4main()
?5{
?6??int?a;
?7??int?b;
?8??p[0]?=?f1;
?9??p[1]?=?f2;
10??a=3;
11??b=5;
12??p[0](&a?,?b);
13??printf("%d\t?%d\t"?,?a?,b);
14??p[1](&a?,?b);
15??printf("%d\t?%d\t"?,?a?,b);
16}

17
18void?f1(?int*?p?,?int?q)
19{
20??int?tmp;
21??tmp?=*p;
22??*p?=?q;
23??q=?tmp;
24}

25
26void?f2(?int*?p?,?int?q)
27{
28??int?tmp;
29??tmp?=*p;
30??*p?=?q;
31??q=?tmp;
32}
??
33
The output for this program is:

(a) 5 5 5 5
(b) 3 5 3 5
(c) 5 3 5 3
(d) 3 3 3 3

11. Consider the following program:

?1void?e(int?);???
?2main()
?3{
?4??int?a;
?5??a=3;
?6??e(a);
?7}

?8
?9void?e(int?n)
10{
11??if(n>0)
12??{
13????e(--n);
14????printf("%d"?,?n);
15????e(--n);
16??}

17}

18
19

The output for this program is:

(a) 0 1 2 0
(b) 0 1 2 1
(c) 1 2 0 1
(d) 0 2 1 1

12. Consider following declaration

1 typedef? int ?( * test)?(? float ? * ?,? float * )
2 test?tmp;
3

type of tmp is

(a) Pointer to function of having two arguments that is pointer to float
(b) int
(c) Pointer to function having two argument that is pointer to float and return int
(d) None of the above

13. Consider the following program:

1 main()
2 {
3 ?? char ? * p;
4 ?? char ?buf[ 10 ]? = {? 1 , 2 , 3 , 4 , 5 , 6 , 9 , 8 } ;
5 ??p? = ?(buf + 1 )[ 5 ];
6 ??printf( " %d " ?,?p);
7 }

8
The output for this program is:

(a) 5
(b) 6
(c) 9
(d) None of the above

14. Consider the following program:

?1Void?f(char**);
?2main()
?3{
?4??char?*?argv[]?={?"ab"?,"cd"?,?"ef"?,"gh",?"ij"?,"kl"?};
?5??f(?argv?);
?6}

?7
?8void?f(?char?**p?)
?9{
10??char*?t;
11??t=?(p+=?sizeof(int))[-1];
12??printf(?"%s"?,?t);
13}

14
The output for this program is:

(a) ab
(b) cd
(c) ef
(d) gh

15. Consider the following program:

?1#include<stdarg.h>
?2int?ripple?(?int?,?);
?3main()
?4{
?5??int?num;
?6??num?=?ripple?(?3,?5,7);
?7??printf(?"?%d"?,?num);
?8}

?9
10int?ripple?(int?n,?)
11{
12??int?i?,?j;
13??int?k;??
14??va_list?p;
15??k=?0;
16??j?=?1;
17??va_start(?p?,?n);?????
18??for?(;?j<n;??++j)?
19??{
20????i?=??va_arg(?p?,?int);
21????for?(;?i;????i?&=i-1??)
22??????++k;
23??}

24??return?k;
25}

26
27
The output for this program is:

(a) 7
(b) 6
(c) 5
(d) 3

16. Consider the following program:

?1int?counter?(int?i)
?2{
?3??static?int?count?=0;
?4??count?=?count?+i;
?5??return?(count?);
?6}

?7
?8main()
?9{
10??int?i?,?j;
11??for?(i=0;?i?<=5;?i++)
12????j?=?counter(i);
13}

14

The value of j at the end of the execution of the this program is:

(a) 10
(b) 15
(c) 6
(d) 7

?

Answer With Detailed Explanation

_____________________________________________________________

Answer 1.

The answer is (b)

volatile variable isn't affected by the optimization. Its value after the longjump is the last value variable assumed.

b last value is 5 hence 5 is printed.

setjmp : Sets up for nonlocal goto /* setjmp.h*/

Stores context information such as register values so that the lomgjmp function can return control to the statement following the one calling setjmp.Returns 0 when it is initially called.

Lonjjmp: longjmp Performs nonlocal goto /* setjmp.h*/

Transfers control to the statement where the call to setjmp (which initialized buf) was made. Execution continues at this point as if longjmp cannot return the value 0.A nonvolatile automatic variable might be changed by a call to longjmp.When you use setjmp and longjmp, the only automatic variables guaranteed to remain valid are those declared volatile.

Note: Test program without volatile qualifier (result may very)

Answer 2.

The answer is (a)

The members of structures have address in increasing order of their declaration. If a pointer to a structure is cast to the type of a pointer to its first member, the result refers to the first member.

Answer 3.

The answer is (a)

Non recursive version of the program

?1 int ??what?(? int ?x?,? int ??n)
?2 {
?3 ?? int ?val;
?4 ?? int ?product;
?5 ??product? = 1 ;
?6 ??val? = x;
?7 ?? while (n > 0 )
?8 ?? {
?9 ???? if ?(n % 2 ? == ? 1 )??
10 ??????product? = ?product * val;
11 ????n? = ?n / 2 ;?
12 ????val? = ?val * ?val;
13 ??}

14 }

15



/* Code raise a number (x) to a large power (n) using binary doubling strategy */
Algorithm description

1 ( while ?n > 0 )??
2 {
3 ?? if ??next?most?significant?binary?digit?of??n(?power)?? is ?one
4 ??then?multiply?accumulated?product?by?current?val??,?
5 ??reduce?n(power)??sequence?by?a?factor?of?two? using ?integer?division?.
6 ?? get ?next?val?by?multiply?current?value?of?itself???????????????????
7 }

8



Answer 4.

The answer is (c)

type of a is array of int
type of &a is pointer to array of int
Taking a pointer to the element one beyond the end of an array is sure to work.

Answer 5.

The answer is (b)

Answer 6.

The answer is (c)

The comma separates the elements of a function argument list. The comma is also used as an operator in comma expressions. Mixing the two uses of comma is legal, but you must use parentheses to distinguish them. the left operand E1 is evaluated as a void expression, then E2 is evaluated to give the result and type of the comma expression. By recursion, the expression

E1, E2, ..., En

results in the left-to-right evaluation of each Ei, with the value and type of En giving the result of the whole expression.

1 c = a,b;?? / ? * yields?c = a * ? /
2 d = (a,b);? /* ?d?=b?? */
3



Answer 7.

The answer is (a)


/* ptr is pointer to array of 3 int */

Answer 8.

The answer is (c)

f1 and f2 return address of local variable ,when function exit local variable disappeared

Answer 9.

The answer is (c)

sizeof operator gives the number of bytes required to store an object of the type of its operand . The operands is either an expression, which is not evaluated ( (++i + ++ i ) is not evaluated so i remain 3 and j is sizeof int that is 2) or a parenthesized type name.

Answer 10.

The answer is (a)

1 void ( * p[ 2 ])?(? int ? * ,? int );?



define array of pointer to function accept two argument that is pointer to int and return int. p[0] = f1; p[1] = f2 contain address of function .function name without parenthesis represent address of function Value and address of variable is passed to function only argument that is effected is a (address is passed). Because of call by value f1, f2 can not effect b

Answer 11.

The answer is (a)

Answer 12.

The answer is (c)

C provide a facility called typedef for creating new data type names, for example declaration

1 typedef? char ? string



Makes the name string a synonym for int .The type string can be used in declaration, cast, etc, exactly the same way that the type int can be. Notice that the type being declared in a typedef appears in the position of a variable name not after the word typedef.

Answer 13.

The answer is (c)

If the type of an expression is "array of T" for some type T, then the value of the expression is a pointer to the first object in the array, and the type of the expression is altered to "pointer to T"
So (buf+1)[5] is equvalent to *(buf +6) or buf[6]

Answer 14.

The answer is (d)

p+=sizeof(int) point to argv[2]

(p+=sizeof(int))[-1] points to argv[1]

Answer 15.

The answer is (c)

When we call ripple value of the first argument passed to ripple is collected in the n that is 3. va_start initialize p to point to first unnamed argument that is 5 (first argument).Each call of va_arg return an argument and step p to the next argument. va_arg uses a type name to determine what type to return and how big a step to take Consider inner loop

1 (;?i;?i &= i - 1 )?k ++ ? /* ?count?number?of??1?bit?in?i?*



in five number of 1 bits is (101) 2
i
n seven number of 1 bits is (111) 3
hence k return 5

example

1 let??i = ? 9 ? = ? 1001
2 ?????i - 1 ?? = ? 1000 ????????
3 ????(i - 1 )? + 1 ? = ?i
4 ??????????????? 1000
5 ????????????????? + 1
6 ?????????????? 1 ? 001



The right most 1 bit of i has corresponding 0 bit in i-1 this way i & i-1, in a two complement number system will delete the right most 1 bit I(repeat until I become 0 gives number of 1 bits)

Answer 16.

The answer is (b)

Static variable count remain in existence rather than coming and going each time function is called
so first call counter(0) count =0
second call counter(1) count = 0+1;
third call counter(2) count = 1+2; /* count = count +i */
fourth call counter(3) count = 3+3;
fifth call counter(4) count = 6+4;
sixth call counter(5) count = 10+5;
?

posted on 2006-11-01 12:02 編程之道 閱讀(402) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            你懂的视频欧美| 欧美尤物一区| 欧美日韩专区在线| 亚洲一区二区三区在线看 | 亚洲国产精品久久久久久女王| 牛牛影视久久网| 欧美国产日韩在线| 午夜视频久久久| 久久精品理论片| 日韩午夜电影av| 午夜国产精品影院在线观看| 悠悠资源网久久精品| 91久久精品美女高潮| 欧美午夜在线观看| 久热精品在线视频| 欧美日韩一区高清| 久久中文字幕一区二区三区| 欧美日韩福利| 久久九九热re6这里有精品| 欧美电影打屁股sp| 欧美一区国产在线| 欧美fxxxxxx另类| 欧美一区二区三区在线看| 欧美成年人视频| 欧美在线观看视频在线| 欧美激情第10页| 久久精品青青大伊人av| 欧美日韩一区二区视频在线观看| 久久精品女人的天堂av| 欧美日韩三级视频| 欧美大片一区二区三区| 国产精品免费看| 亚洲区免费影片| 禁断一区二区三区在线 | 欧美一区1区三区3区公司| 欧美成人精品| 久久一区免费| 国产精品日本精品| 99国产精品99久久久久久| 亚洲成人在线网| 欧美一区午夜精品| 亚洲在线一区二区三区| 欧美大片免费观看| 欧美成年人在线观看| 国产日韩欧美中文| 亚洲调教视频在线观看| 99精品欧美一区二区三区| 久久亚洲国产精品日日av夜夜| 欧美一区二区三区在线观看视频| 欧美日韩大片一区二区三区| 欧美激情亚洲| 亚洲黄一区二区三区| 久久人人97超碰人人澡爱香蕉| 久久超碰97中文字幕| 国产老女人精品毛片久久| 亚洲视频axxx| 国产精品99久久久久久久vr | 国产日韩欧美一区二区| 亚洲图片欧美一区| 亚洲伊人网站| 国产精品国产三级国产a| 正在播放亚洲| 欧美一区二区三区免费观看视频| 国产精品电影网站| 亚洲一区二区三区免费在线观看 | 国产综合色产在线精品| 欧美专区第一页| 久久美女性网| 在线日韩电影| 欧美α欧美αv大片| 亚洲韩国精品一区| 亚洲视频在线观看| 国产精品久久久久久久久| 亚洲一区二区精品| 久久精品视频免费| 在线色欧美三级视频| 欧美大片免费看| 这里只有精品视频| 久久久精品一区二区三区| 在线精品视频在线观看高清 | 久久精品国产免费观看| 免费看黄裸体一级大秀欧美| 亚洲日韩欧美视频一区| 欧美日韩一区二区三区在线看| 一区二区三区日韩精品| 久久激情网站| 亚洲免费观看在线视频| 国产精品久久久久久久久免费樱桃 | 欧美国产欧美综合| 亚洲午夜在线观看视频在线| 久久久久久久久久久久久久一区| 在线看一区二区| 欧美日韩免费一区二区三区视频| 亚洲欧美日韩综合| 亚洲动漫精品| 欧美一区二区在线免费观看 | 国产欧美日韩一区二区三区在线观看 | 国产一区二区三区在线观看精品| 久久男人av资源网站| 一区二区三区高清在线| 六十路精品视频| 亚洲尤物精选| 最新国产成人av网站网址麻豆| 欧美午夜电影完整版| 久久免费黄色| 亚洲综合好骚| 亚洲欧洲在线播放| 久久亚洲综合网| 亚洲一区二区在线免费观看视频| 曰韩精品一区二区| 国产美女搞久久| 欧美日韩午夜精品| 老色鬼精品视频在线观看播放| 亚洲一二三区在线| 亚洲精品欧美| 欧美成人午夜激情视频| 久久精品一区| 欧美一区二区三区日韩| 宅男噜噜噜66一区二区| 亚洲国产日韩欧美综合久久| 国产人妖伪娘一区91| 国产精品chinese| 欧美日韩国产高清| 欧美v日韩v国产v| 久久免费精品日本久久中文字幕| 亚洲欧美中文字幕| 亚洲无玛一区| 亚洲视频在线观看网站| 亚洲精品一区二区三区婷婷月 | 亚洲精品在线视频| 欧美激情一区二区| 免费一区二区三区| 欧美成年人视频网站欧美| 久久亚洲国产精品日日av夜夜| 欧美在线视频二区| 午夜伦理片一区| 亚洲影院高清在线| 亚洲免费中文字幕| 午夜精彩国产免费不卡不顿大片| 亚洲色无码播放| 亚洲手机在线| 亚洲欧美欧美一区二区三区| 亚洲欧美日韩精品在线| 亚洲欧美一区二区在线观看| 午夜精品福利电影| 久久本道综合色狠狠五月| 久久久久久高潮国产精品视| 久久性天堂网| 欧美激情2020午夜免费观看| 亚洲国产免费| 日韩视频免费大全中文字幕| 在线亚洲欧美| 欧美在线观看网址综合| 久久久999精品免费| 美国成人直播| 欧美日韩在线看| 国产日韩欧美精品在线| 在线观看日韩专区| 一本色道精品久久一区二区三区| 亚洲午夜一级| 久久亚洲高清| 亚洲人成在线播放网站岛国| 在线一区亚洲| 久久综合网络一区二区| 欧美国产精品久久| 国产精品国产精品| 在线欧美电影| 亚洲一区二区三区高清| 久久久久99| 亚洲精品视频一区二区三区| 亚洲欧美在线磁力| 久久综合亚洲社区| 欧美视频在线看| 在线看无码的免费网站| 亚洲视频你懂的| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲蜜桃精久久久久久久| 欧美一区二区成人6969| 欧美—级a级欧美特级ar全黄| 国产精品一区免费观看| 91久久久国产精品| 欧美在线高清| 亚洲美女一区| 久久乐国产精品| 久久丁香综合五月国产三级网站| 男人插女人欧美| 亚洲伊人一本大道中文字幕| 欧美国产在线观看| 韩曰欧美视频免费观看| 亚洲欧美精品伊人久久| 亚洲国产精品一区二区久| 欧美一区二区三区四区视频| 欧美日韩一级片在线观看| 伊人伊人伊人久久| 久久精品国产第一区二区三区| 亚洲日韩欧美视频| 免播放器亚洲一区| 国内一区二区三区| 欧美在线免费播放| 亚洲图片在线|