Very basic questions about the C language, an Information Class (computer, Information Engineering, electronic engineering, communication engineering) graduates should reach the level. It is not difficult to answer questions. All of them can be answered quickly. Of course, a certain amount of knowledge is required.
For most people, we expect that you may get an incorrect answer 3) 4) 15). Therefore, if you get a wrong answer within 3, we think you are great.
Within five wrong answers, we think you are not bad (you may still have 9th wrong answers)
If you have more than six questions that cannot be answered correctly, basically we cannot say anything ....
Conventions:
1) in the following test questions, all the necessary header files have been correctly included
2) Data Type
Char 1 byte
Int two bytes 2 bytes (16-bit system, think integer is 2 bytes)
Long int, four bytes, 4 bytes
Float four bytes 4 byet
Double, eight bytes, 8 bytes
Long double 10 bytes 10 bytes
Pointer two bytes 2 byte (note that the address bus is only 16 bits)
Question 1st: measure the test taker's knowledge about the volatile keyword.
# Include <setjmp. h>
Static jmp_buf Buf;
Main ()
{
Volatile int B;
B = 3;
If (setjmp (BUF )! = 0)
{
Printf ("% d", B );
Exit (0 );
}
B = 5;
Longjmp (BUF, 1 );
}
Excuse me, the output of this program is
(A) 3
(B) 5
(C) 0
(D) None of the above
Question 2nd: Test type conversion
Main ()
{
Struct Node
{
Int;
Int B;
Int C;
};
Struct node S = {3, 5, 6 };
Struct node * PT = & S;
Printf ("% d", * (int *) pt );
}
The output of this program is:
(A) 3
(B) 5
(C) 6
(D) 7
3rd question: Examine recursive calls
Int Foo (int x, int N)
{
Int val;
Val = 1;
If (n> 0)
{
If (N % 2 = 1) val = Val * X;
Val = Val * Foo (x * X, n/2 );
}
Return val;
}
What functions (Operations) Does this code perform on X and N )?
(A) x ^ n (n power of X)
(B) x * n (the product of x and N)
(C) n ^ x (x power of N)
(D) None of the above
Question 4th: Examine pointers. This question is only suitable for those who are very careful and have a deep understanding of pointers and arrays.
Main ()
{
Int A [5] = {1, 2, 3, 4, 5 };
Int * PTR = (int *) (& A + 1 );
Printf ("% d", * (a + 1), * (ptr-1 ));
}
The output of this program is:
(A) 2 2
(B) 2 1
(C) 2 5
(D) None of the above
Question 5th: multi-dimensional arrays and pointers
Void Foo (INT [] [3]);
Main ()
{
Int A [3] [3] = {1, 2, 3}, {4, 5, 6}, {7, 8, 9 }};
Foo ();
Printf ("% d", a [2] [1]);
}
Void Foo (int B [] [3])
{
+ + B;
B [1] [1] = 9;
}
The output of this program is:
(A) 8
(B) 9
(C) 7
(D) None of the above
6th question: comma-separated expressions
Main ()
{
Int A, B, C, D;
A = 3;
B = 5;
C = A, B;
D = (A, B );
Printf ("c = % d", C );
Printf ("d = % d", d );
}
The output of this program is:
(A) C = 3 D = 3
(B) C = 5 d = 3
(C) C = 3 D = 5
(D) C = 5 d = 5
Question 7th: pointer Array
Main ()
{
Int A [] [3] = {1, 2, 3, 4, 5, 6 };
INT (* PTR) [3] =;
Printf ("% d", (* PTR) [1], (* PTR) [2]);
++ PTR;
Printf ("% d", (* PTR) [1], (* PTR) [2]);
}
The output of this program is:
(A) 2 3 5 6
(B) 2 3 4 5
(C) 4 5 0 0
(D) None of the above
Question 8th: measure the test taker's knowledge about function pointers.
Int * F1 (void)
{
Int x = 10;
Return (& X );
}
Int * F2 (void)
{
Int * PTR;
* PTR = 10;
Return PTR;
}
Int * F3 (void)
{
Int * PTR;
PTR = (int *) malloc (sizeof (INT ));
Return PTR;
}
Which of the above three functions is most likely to cause pointer problems?
(A) Only F3
(B) Only F1 and F3
(C) Only F1 and F2
(D) F1, F2, F3
9th question: test self-added operations (++)
Main ()
{
Int I = 3;
Int J;
J = sizeof (++ I );
Printf ("I = % d J = % d", I, j );
}
The output of this program is:
(A) I = 4 J = 2
(B) I = 3 J = 2
(C) I = 3 J = 4
(D) I = 3 J = 6
Question 10th: test form parameters, actual parameters, pointers, and Arrays
Void F1 (int *, INT );
Void F2 (int *, INT );
Void (* P [2]) (int *, INT );
Main ()
{
Int;
Int B;
P [0] = F1;
P [1] = F2;
A = 3;
B = 5;
P [0] (& A, B );
Printf ("% d/T", a, B );
P [1] (& A, B );
Printf ("% d/T", a, B );
}
Void F1 (int * P, int q)
{
Int TMP;
TMP = * P;
* P = Q;
Q = TMP;
}
Void F2 (int * P, int q)
{
Int TMP;
TMP = * P;
* P = Q;
Q = TMP;
}
The output of this program is:
(A) 5 5 5 5
(B) 3 5 3 5
(C) 5 3 5 3
(D) 3 3 3 3
11th question: test the auto-increment operation (--)
Void E (INT );
Main ()
{
Int;
A = 3;
E ();
}
Void E (int n)
{
If (n> 0)
{
E (-- N );
Printf ("% d", N );
E (-- N );
}
}
The output of this program is:
(A) 0 1 2 0
(B) 0 1 2 1
(C) 1 2 0 1
(D) 0 2 1 1
12th question: test the typedef type definition and function pointer
Typedef int (* test) (float *, float *);
Test TMP;
The TMP type is
(A) pointer to the function. This function uses two pointers pointing to float as parameters (arguments)
Pointer to function of having two arguments that is pointer to float
(B) Integer
(C) pointer to a function. The function uses two pointers pointing to float as parameters (arguments) and the return value type of the function is integer.
Pointer to function having two argument that is pointer to float and return int
(D) None of the above
Question 13th: Differences and relationships between arrays and pointers
Main ()
{
Char P;
Char Buf [10] = {1, 2, 4, 5, 6, 9, 8 };
P = (BUF + 1) [5];
Printf ("% d", P );
}
The output of this program is:
(A) 5
(B) 6
(C) 9
(D) None of the above
Question 14th: Examine the pointer Array
Void F (char **);
Main ()
{
Char * argv [] = {"AB", "cd", "Ef", "GH", "IJ", "Kl "};
F (argv );
}
Void F (char ** P)
{
Char * t;
T = (p + = sizeof (INT) [-1];
Printf ("% s", t );
}
The output of this program is:
(A) AB
(B) CD
(C) EF
(D) GH
Question 15th: This question examines the variable length parameter of C. Just like printf () in the standard function library, this topic is generally not discussed in Chinese university classes, and it will not be excitable,
# Include <stdarg. h>
Int ripple (INT ,...);
Main ()
{
Int num;
Num = ripple (3, 5, 7 );
Printf ("% d", num );
}
Int ripple (int n ,...)
{
Int I, J;
Int K;
Va_list P;
K = 0;
J = 1;
Va_start (p, N );
For (; j <n; ++ J)
{
I = va_arg (p, INT );
For (; I; I & = i-1)
++ K;
}
Return K;
}
The output of this program is:
(A) 7
(B) 6
(C) 5
(D) 3
Question 16th: measure the test taker's knowledge about static variables.
Int counter (int I)
{
Static int COUNT = 0;
Count = count + I;
Return (count );
}
Main ()
{
Int I, J;
For (I = 0; I <= 5; I ++)
J = counter (I );
}
The value of J is as follows:
(A) 10
(B) 15
(C) 6
(D) 7