Professional Documents
Culture Documents
1. What type of errors are checked during compilation 2. The purpose of main function is
(a) logical errors (b) divide by zero error (a) to stop program execution
(c) run - time errors (b) to stop algorithm
(d) syntax errors (c) to start algorithm
(d) to start program execution
3. What is the valid identifier in the following 4. What is range of char data value?
(a) 1fdasgf (b) @hgd12 (a) -64 to 64 (b) -128 to 127
(c) fahs%* (d) q1234 (c) 0 to 255 (d) -127 to 128
5. The minimum number of temporary variable needed 6. What is output of following program ?
to swap the contents of two variable is main( ) {
(a) 3 int x;
(b) 1 x= 4 + 2 % 8;
(c) 0 printf(“%d”,x); }
(d) 2 (a) 6 (b) 4.25 (c) 4 (d) -6
7. When && operator is used with two conditions, 8. Bitwise operators cannot be performed on
conditions need to be satisfied for the expression to be (a) float
true. (b) long int
(a) neither (b) only first (c) int
(c) any one (d) both (d) char
9. In the expression b=6.6/a+(2*a+(3*c)/a*d)/(2/n); 10.What is the output of printf(“%d”,printf(“VSM”));
which operation will be performed first? (a) garbage (b) results in a syntax error
(a) 2*a (b) 2/n (c) 3*c (d) 6.6/a (c) printf VSM and terminates abruptly
(d) VSM3
11. What is output of the following program? 12. Identify the loop construct:
main( ){ (a) if-else
int x=15,y; (b) goto
y=(x >5)? 3 : 4; (c) while
printf(“%d”,y);} (d) switch-case
(a) 2 (b) 4 (c) 3 (d) 1
13. The index or subscript value for an array of size ‘n’ 14. If we don’t initialize a static array, what will be the elements
ranges from set to:
(a) 1 to n-1 (b) 0 to n-1 (a) 0 (b) a floating point number
(c) 1 to n (d) 0 to n (c) an undetermined value (d) character constant
15. A string is an array of 16. int calcum(int a, int b);
(a) integers In the above, int at the beginning indicates
(b) floating point numbers (a) name of function
(c) characters (b) both function arguments are integer
(d) Boolean values (c) return type of function
(d) received type of function
17. When a function is recursively called, all automatic 18. What is wrong with the following program
variables are main() { char m1[9]= “VSM1”;
(a) stored in a stack char m2[9]=“VSM2”; m2=m1;
(b) stored in a list printf(“Message is %s”,m2); }
(c) stored in queue (a) array cannot be initialized as above
(d) stored in an array (b) array is not a left value and so cannot be assigned to
(c) char array cannot be printed directly using printf
(d) program compiles without error, but prints an unpredictable
value
19. Which of the following is not a storage class 20. Which of the following is a correct way of defining a
(a) external symbolic constant pie in C
(b) automatic (a) # define pie = 22/7
(c) register (b) #define pie 22/7
(d) define (c) #define pie= 3.142
(d) # Define pie 22/7
1D 2D 3D 4B 5C 6A 7D 8A 9D 10D 11C 12C 13B 14A
15C 16C 17A 18B 19D 20B
C Programming Language Bits
1. What symbol is used to represent the connector 2. The ANSI C standard recognizes maximum length of a
(a) parallelogram variable up to
(b) rectangle with rounded end (a) 8 characters (b) unlimited characters
(c) circle (d) rectangle (c) 31 characters (d) 15 characters
3. Which of the following is an incorrect variable name. 4. What is the size of long double variable
(a) else (b) name (c) string (d) age (a) 10 bytes (b) 8 bytes (c) 4 bytes (d) 16 bytes
5. Variables are initialized in C, using 6. If a is float variable, a=5/2 will return a value
(a) := (b) > (c) = (d) = = (a) 2.5 (b) 2 (c) 2.0 (d) 3
7. int a=13,b=7,c; 8. In the following, which is bitwise operator?
c=a&b what is the value of c (a) >
(a) 0000 0000 0000 0101 (b) *
(b) 0000 0000 0000 0100 (c) |
(c) 0000 0000 0000 0110 (d) <
(d) 0000 0000 0001 0101
9. If y is of integer type variable then the two 10. What is output of the following program?
expressions. 3*(y-8)/9 and (y-8)/9*3 yield the same value main() {
if int a; float b;
(a) y-8 is an integer multiple of 3 a=1/2;
(b) y is an odd number b=1.0/2.0;
(c) y is an even number printf(“ a=%d b=%f”, a , b); }
(d) y-8 is an integer multiple of 9 (a) a=0.0 b=0. 5 (b) a=0 b=0. 5
(c) a=0.0 b= 5 (d) a=0.5 b=0. 5
11. In switch (expression) statement, the expression 12. The minimum number of times the for loop is executed is
should evaluate to (a) 0 (b) cannot be predicted (c) 1 (d) 2
(a) an integer (b) a void (c) a float
(d) a character
13.The array is declared as float a[5];and the memory 14. Two dimensional array elements are stored
address of a[0] is 4056.What is the address of a[3]. (a) system dependent (b) in row major order
(a) 4056 (b) 4056 (c) 4059 (d) 4068 (c) complier dependent (d) in column major order
15. char x[10]=“VSMRCPM”; 16. How many values a function can return at a time
char *y=“VSMRCPM”; (a) only one
Pick the correct answer (b) depends on the system
(a) The output of puts(x) and puts(y) will be different (c) infinite values
(b) The output of puts(x) and puts(y) will be same (d) 2
(c) The output of puts(y) is implementation dependant
(d) The output of puts(x) and puts(y) compiler dependant
17. When compared to call by value, the call by reference 18. The strcat( ) function is used for
is in execution (a) Concatenation
(a) equal (b) Multiplication
(b) fast (c) Joining
(c) slow (d) Addition
(d) neither slow nor fast
19. Which of the following statement is wrong with 20. Symbolic constants are defined as
respect to a storage class (a) #define s1 s2;
(a) it specifies the defualt initial value (b) #define s1=s2
(b) it specifies the life of a variable (c) #define s1 s2
(c) by defualt a storage class is static (d) #define s1=s2;
(d) if specifies where variable is stored
(c) program (d) paint (c) High level language with some low level features
(d) Low level language
3. What are the smallest individual units in a program 4. Which of the following is an empty data type.
(a) Structures (b) Functions (c) record (d) Tokens (a) Integer (b) float (c) character (d) void
5. Array elements are stored in 6. The operator ++ is called as operator
(a) Sequential memory locations (a) special increment
(b) Scattered memory locations (b) increment
(c) Direct memory locations (c) double addition
(d) Random memory location (d) decrement
7. Which of the following is not a relational operator 8. main ( ) { int m,y;
(a) < = m = 5; y = ++m;
(b) & & printf(”%d %d”,m,y);
(c) != } consider the above code and find the output
(d) > (a) 5,5 (b) 5,6 (c) 6,6 (d) 6,5
9. int C; C=25/2; What is the value of C? 10. Consider scanf(“%2d”, &n); and the input data is 3142
(a) 0.5 (b) 12.500000 then n will be assigned
(c) 12.000000 (d) 12 (a) error (b) 31 (c) 42 (d) 31.42
11. In switch case statement 12. How many while statements are possible in do.... While
(a) more than one default allowed loop?
(b) default case, if used, should be the last case (a) 2 (b) 3
(c) default case, if used, can be placed anywhere (c) any number (d) 1
(d) default case must be present
13. The number of elements in array declaration 14. The following program
(a) does not require to be specified main( ) {
(b) dynamically identifies based on largest index used in static int a[ ] = { 7, 8, 9 };
program printf(“%d”, a[2] = 2[a] + a[2]); }
(c) assume default size as ‘0’ (a) results in segmentation violation error
(d) requires to be specified (b) runtime error (c) will compile successfully
(d) result is buss error
15. Find the output of the following program 16. The purpose of return statement is
main() (a) To return control back to the calling function
{ char name1[4] = ‘V’, ‘S’, ‘M’, ‘R’; (b) To return control and value to calling function
char name2 [5] = ‘V’,‘S’,‘M’,‘R’; (c) To return void
printf (“%s”, name1); (d) To return value to the calling function
printf (“%s”, name2);
}
(a) VSMR VSMR (b) Garbage value VSMR
(c) VSMR garbage value (d) VSMR garbag evalue
VSMR
17. Which of the following statements is correct when an 18. If the character type variable sym is assigned a value
array is passed to a called function ‘Y’ and the string variable str is assigned a value LEARN.
(a) function-name ( array-name [ ] ) What is the value in str after execution of the following
(b) function-name ( array-name , size ) statement strset(str,sym)
(c) not possible (a) LEARNY (b) YYYYY
(d) function-name ( array-name[size]) (c) Y (d) LEARY
19. The storage area for register variables 20. Which of the following is the symbol for preprocessor
(a) cache (a) *
(b) memory (b) #
(c) processor registers (c) <>
(d) virtual memory (d) $
17. What is the output of the following program 18. The function is used to reverse a string
void main(){ (a) strrsa()
int x = 2; sqr(x); (b) strrev()
printf(“%d”, x);} (c) strcmp()
sqr(x) /* sqr function */ (d) strcat()
{ int y; y = x * x; printf (“%d”, y); }
(a) 4 2 (b) 2 2 (c) 2 4 (d) 4 4
19. The storage area for register variables 20. The function sqrt() is part of header file.
(a) processor registers (b) cache (a) iostream.h (b) conio.h
(c) virtual memory (d) memory (c) math.h (d) stdio.h
1. The process of repeating a group of statements in an 2. Every executable C program must contain a
algorithm is known as (a) printf function
(a) sequence (b) iteration (b) scanf, printf and main functions
(c) flow (d) selection (c) main function (d) scanf function
C Programming Language Bits
3. The individual units of a C program is known as 4. The keyword is used to define enumerated data type
(a) records (b) tokens (c) units (d) program (a) array (b) enum (c) typedef (d) struct
5. How many variables of the same type can be initialized 6. Integer division results in
at a time with the same value (a) rounding (b) underflow
(a) Three (b) One (c) Two (c) overflow (d) truncation
(d) any number of variables
7. The operator with lowest priority in the list && , + , | | , 8. int x=1,y=5;
< is x=++x + –y; what is the value of x
(a) + (b) | | (c) && (d) < (a) 8 (b) 7 (c) 5 (d) 6
9. Which of the following shows the correct hierarchy of 10. The statement printf(“%d”,7);
arithmetic operations in C (a) prints 0
(a) ( ), / or *, - or + (b) runtime error
(b) ( ), &&, *,/,+,- (c) prints the value 7
(c) ( ), &&, / , *, +, - (d) results in syntax error
(d) ( ),&&,*or / + or -;
11. The keyword ‘else” can be used with 12. Give the output of the following program:
(a) for statement #include < stdio.h >
(b) if statement main()
(c) switch ( ) statement {
(d) do.. while ( ) statement int i=1;
while (i < 5)
{
printf(“%d”, i);
}
} /* End of Main */
(a) Warning for no return type for main ( )
(b) Print the value of i as 1 (c) Infinite loop
(d) Prints the value of i as 11111
13. Array is used to represent the following 14. Dynamic memory allocation in array results in
(a) A list of data items of different data type (a) allocation of memory at compile time
(b) A list of data items of real data type (b) allocation of memory at file saving time
(c) A list of data items of same data type (c) allocation of memory at runtime
(d) A list of data items of integer data type (d) allocation of memory at debugging time
15. putchar() and getchar() are both 16. How many values a function can return at a time
(a) control statement (a) only one
(b) type declaration statements (b) 2
(c) assignment statements (c) infinite values
(d) input and output statements (d) depends on the system
17. Arrays are passed as arguments to a function by 18. The function strrev( ) the actual string in the array
(a) reference (b) both value and reference (a) will not reverse (b) may not reverse
(c) context (d) value (c) will reverse (d) may reverse
19. register variables are active 20. The function sqrt() is part of header file.
(a) outside the function (a) math.h
(b) throughout the program (b) iostream.h
(c) only in the function where it is defined (c) conio.h
(d) Surrounding of that function. (d) stdio.h
1. The process of removing a bug is known as 2. Every C Program Statement must be terminated with a
C Programming Language Bits
1. What type of errors are checked during compilation 2. The constant ‘\b’ is used for
C Programming Language Bits
(a) divide by zero error (b) logical errors (a) tab (b) vertical blank
(c) run - time errors (d) syntax errors (c) bell (d) backspace
3. Which of the following is a valid numeric constant 4. What is range of char data value?
(a) 20,000 (b) 15 750 (c) $1000 (d) 65432 (a) -128 to 127 (b) -64 to 64 (c) 0 to 255(d)-127to128
11. Which of the following statement is not true about the 12. while(++i <=n);
switch statement what is the value of i when the loop completes, if the initial
(a) Character constants are automatically converted into value of i is 1.
integer (a) n-1
(b) In switch() case statement nested if can be used (b) n+2
(c) The switch() can evaluate relational or logical (c) n+1
expressions (d) n
(d) No two case statements have identical constants in the
same switch
13. C does no automatic array bound checking. This is 14. The following program
(a) Disadvantage of C main( ) {
(b) false static int a[ ] = { 7, 8, 9 };
(c) Neither advantage nor disadvantage printf(“%d”, a[2] = 2[a] + a[2]); }
(d) Advantage of C (a) will compile successfully
(b) results in segmentation violation error
(c) result is buss error (d) runtime error
15. What is the output of the following program? 16. The library function sqrt operates on a double
void main() precession argument and i is an integer variable, which one
{ of the
char name[4] = {‘V’, ‘S’, ‘M’ ‘R’ }; following calls would compute sqrt(i)?
printf (“%s”, name); (a) sqrt((double)i);
} (b) (double) (sqrt(i));
(a) VSMR followed by a garbage value (c) sqrt(i);
(b) VSMR (c) VSMR (d) only garbage value (d) (double) sqrt(i);
17. main() 18. What will be the output of the following program?
{ void main()
printf(“welcome to c programming\n”); {
main(); char x[ ] = {‘s’, ‘a’, NULL };
} printf (“\n %d”, sizeof (x));
output of the program code }
(a) Infinite loop (b) Runtime error (a) 2 (b) 3 (c) 0 (d) 1
(c) welcome to c programming (d) compile time error
19. The variables which are declared outside the program 20. #include is a directive
are called (a) processor (b) complier
(a) global variables (b) formal variables (c) pre-compiler (d) pre-processor
(c) local variables (d) register variable
1D 2D 3D 4A 5C 6C 7B 8C 9B 10C 11D 12C 13A 14A
15A 16A 17A 18B 19A 20D
C Programming Language Bits
17. The parameter passing mechanism for an array is 18. What is the use of the strlen( ) function
(a) Call by value (a) finds the length of the string
(b) Call by value-result (b) string comparison
(c) call by name (c) string concatenation
(d) Call by reference (d) copies one string into another
19. What kind of variable is suitable to count how many 20. How would you declare a constant of 5 called
times a function is called “MYCONST”?
(a) register (a) #define MYCONST 5
(b) extern (b) var int MYCONST=5
(c) auto (c) int myconst = 5;
(d) static (d) constant MYCONST = 5;
1. What symbol is used to represent input/output operations 2. A block is enclosed with pair of
C Programming Language Bits
19. Which of the following statement is wrong with respect 20. The header file to use a library function cos() is
to a storage class (a) dos.h
(a) if specifies where variable is stored (b) stdlib.h
(b) it specifies the default initial value (c) math.h
(c) it specifies the life of a variable (d) conio.h
(d) by default a storage class is static
1B 2A 3A 4C 5B 6D 7D 8C 9B 10D 11B 12B 13B 14C
15D 16A 17B 18B 19D 20C
C Programming Language Bits
5. Pick the operators that associates from right to left 6. What is output of following program ?
(a) % main( )
(b) - {
(c) = int x;
(d) + x= 4 + 2 % 8; printf(“%d”,x);
}
(a) 6 (b) 4 (c) -6 (d) 4.25
7. Among the following operators, whose associatively is 8. int x=1,y=5;
right to left x= ++x + –y; what is the value of x ?
(a) logical operators (b) arithmetic operators (a) 7 (b) 6 (c) 8 (d) 5
(c) conditional expression (d) bitwise operators
9. 10. What could be output of the following function
Main(0 main( )
{ {
int C; int x=2,y=6,z=6;
C=25 / 2; x=y=z;
} What is the value of C printf(“%d”,x);
(a) 12 (b) 12.000000 (c) 0.5 (d) 12.500000 }
(a) 2 (b) 1 (c) 0 (d) 6
11. switch(ch) 12. The minimum number of times the for loop is executed
{ is
case ‘a’: printf(“a”); (a) 1
case ‘b’: printf(“b”); (b) 0
default: printf(“error”); (c) cannot be predicted
} if ch is assigned to the character ‘a’ then the output will (d) 2
be
(a) a b (b) a b error (c) a (d) error
13. What is the difference between the 5’s in the below 14. Under which of the following conditions, the size of the
expressions. array need not be specified?
int num[5]; (a) when it is a formal parameter
num[5]=10; (b) when it is a declaration
(a) Both specify array size (c) when initialization is a part of definition
(b) First is array size, second is particular element (d) when the compiler is smart
(c) First is particular element , second is array size
(d) First is particular element , second is type
15. A character array is terminated internally with 16. The program execution starts from
(a) 0 (b) ; (c) (space) (d) ‘\0’ (a) the function which is last defined
(b) the function other than main( )
(c) the function which is first defined
(d) main( ) function
17. When compared to call by value, the call by reference is 18. The function strrev( ) the actual string in the array
in execution (a) may not reverse (b) will not reverse
(a) fast (b) neither slow nor fast (c) may reverse (d) will reverse
(c) slow (d) equal
19. Automatic variable are active 20.Which of the following is the symbol for preprocessor
(a) outside the function (a) <> (b) $
(b) only in the function where it is defined (c) * (d) #
(c) surroundings of that function
(d) throughout the program
1D 2D 3B 4A 5C 6A 7C 8B 9A 10D 11B 12B 13B 14C
15D 16D 17A 18D 19B 20D
C Programming Language Bits
1. What symbol is used to represent input/output operations 2. The constant ‘\0’ is called as
in a flow chart. (a) nill (b) zero
(a) circles (b) Rectangles (c) full (d) null
(c) Parallelograms (d) Rectangle with rounded end
3. Identify the complete list of C token(s) from the 4. The size of all the below data types is identical except the
following one. Identify the odd one
(a) keywords and constants (a) double
(b) Keywords, constants and operators. (b) long
(c) operators and keywords (c) float
(d) constants and operators (d) unsigned long
5. In the following, which is not valid character constant ? 6. Output of printf(“%f”,3/4) is———
(a) “#” (b) ‘B’ (a) 0.00 (b) gives an error
(c) ‘#’ (d) ‘2’ (c) 0 (d) 0.75
19. Which of the following is not a storage class 20. The function sqrt() is part of header file.
(a) define (a) math.h
(b) register (b) iostream.h
(c) automatic (c) stdio.h
(d) extern (d) conio.h
1. What symbol is used to represent input/output operations 2. The character which is used as a statement terminator in
in a flow chart. a ‘C’ program is
(a) circles (b) Parallelograms (a) : (b) ,
(c) Rectangles (d) Rectangle with rounded end (c) . (d) ;
3. The individual units of a C program is known as 4. To convert a value of one data type to another data type
(a) program (b) units in an expression which of the following is used
(c) tokens (d) records (a) user defined types (b) casting
(c) automatic conversion (d) type define
5. C variable cannot start with 6. The operator ++ is called as operator
(a) an underscore (b) a number (a) increment (b) special increment
(c) an upper case letter (d) a lower case (c) decrement (d) double addition
7. Among the following operators, whose associatively is 8. The symbol for left shift operator is:
right to left (a) <= (b) <<
(a) conditional expression (b) arithmetic operators (c) < (d) <<<
(c) logical operators (d) bitwise operators
9. Which operator has the highest priority 10. for( i = 1;i !=5; i++)
(a) + (b) * { printf(“%d”, i+2);} What is the output ?
(c) ( ) (d) % (a) 3 4 5 6 7 (b) 3 4 5
(c) 3 5 7 9 11 (d) 1 2 3 4 5
11 Which operator also referred as ternary operator. 12. A do-while loop is useful when we want that the
(a) Conditional (b) Addition statements within the loop must be executed.
(c) Exponential (d) Bit wise (a) none of the above (b) at least once
(c) more than once (d) exactly once
13. The amount of storage required for holding elements of 14. An array which contains two subscripts, to represent
the array depends on each element is called as
(a) run-time requirement (b) data type (a) two dimensional (b) multidimensional
(c) size (d) data type and size (c) three dimensional (d) one dimensional
15. main() { 16. The parameters of the called function are called
char name[5]; (a) casual parameters
scanf(“%s”,name); (b) actual parameters
printf(“%s”, name); (c) usual parameters
} if “Program” is the given as input, what will be the o/p (d) formal parameters
of the program;
(a) Progr (b) program
(c) Prog (d) Runtime error
17. output of the following program is 18. Give the output for the following:
main() { main( )
int a , count; {
int funct( int count); char arr[10];
for( count=1;count<=5;++count) int ctr =0;
{ printf(“Enter a Sting:”);.
a=funct1(count); gets(arr);
printf(“%d”, a); while(arr[ctr]!=’\0’)
} {
} ctr + + ;
int funct1(int x) }
{ printf(“%d”,ctr);
int y; }
y= x*x; (a) length of the string only when it is less than 9 characters
return(y); length
} (b) String (c) String length
(a) 1 4 9 16 25 (b) 36 (c) 25 (d) 25 9 16 (d) length of the string only when its length is 10 characters
19. register variables can hold ———– values 20. The header file, to use a library function cos() is
(a) float (b) int (c) complex (d) double (a) stdlib.h (b) math.h (c) conio.h (d) dos.h
1. The process of removing a bug is known as 2. The function getchar( ) is used to read
(a) running (b) executing (a) a boolean value (b) a character
(c) debugging (d) compilation (c) a string (d) a word
3. Which of the following is a valid numeric constant 4. Which of the following is a scalar data type used in ‘C’
(a) 15 750 (b) 65432 (a) double (b) union
(c) $1000 (d) 20,000 (c) structure (d) array
5. Pick the operators that associates from right to left 6. The operator % yields
(a) + (b) % (a) Fractional part (b)remainder after integer division
(c) = (d) - (c) quotient value (d) Percentage value
7. In an expression involving || operator the evaluation 8. If a=15 then b=a <<2 will results
(a) will be stopped if one of its components evaluates to (a) b=3
true (b) b=30
(b) takes place from left to right (c) b=7
(c) takes place from right to left (d) b=60
(d) will be stopped if one of its components evaluates to
false
9. In the expression b=6.6/a+(2*a+(3*c)/a*d)/(2/n); which 10. What is the output of the following program
operation will be performed first? main( )
(a) 6.6/a (b) 2*a { int a=5, i=1; while(i++ <a) { printf(“%d”,a); }
(c) 2/n (d) 3*c (a) 5,4,3,2,1 (b) 5 5 5 5 5
(c) 4,3,2,1 (d) 1 1 1 1 1
11. switch(ch) 12. What would be the final value of x after execution of
{ the following program?
case ‘a’: printf(“a”); void main()
case ‘b’: printf(“b”); { int x = 1;
default: printf(“error”); while (x<=10)
} if ch is assigned to the character ‘a’ then the output will do
be { x++;
(a) a b (b) a b error } while (x< = 5);
(c) a (d) error printf (“\n x = %d”, x); }
(a) x = 6 (b) x = 2 (c) 10 (d) x = 11
13. The number of elements in array declaration 14. Identify the incorrect declaration of arrays from the
(a) dynamically identifies based on largest index used in following
program (a) int a[50];
(b) assume default size as ‘0’ (b) float values[10][20];
(c) requires to be specified (c) double a[50];
(d) does not require to be specified (d) int score[10,15];
15. A string in the ‘C’ language is represented by enclosing 16. ‘void’ means
a sequence of characters in (a) something not known (b) 0
(a) flower brackets { } (b) double quotes “ “ (c) 1 (d) nothing
(c) parenthesis ( ) (d) single quotes ‘ ‘
17. What is the output of 18. The function strrev( ) the actual string in the array
main() { (a) will reverse
int x, change (int); (b) will not reverse
x = 20; (c) may not reverse
change (x); (d) may reverse
printf (“%d”, x);
}
change (int x) {x = 10; printf (“%d”. x); }
(a) 10 30 (b) 20 20 (c) 10 10 (d) 10 20
19. The storage area for register variables 20. Symbolic constants are defined as
(a) memory (b) processor registers (a) #define s1=s2; (b) #define s1 s2
(c) virtual memory (d) cache (c) #define s1 s2; (d) #define s1=s2
1C 2B 3B 4A 5C 6B 7A 8D 9A 10B 11B 12D 13C 14D
15B 16D 17D 18A 19B 20B