# ANSI C Test Questions

1. Pointer arguments are passed to a function by
a. Value
b. Reference
c. Global variable
d. Static variable

2. To pass an array as a parameter to a function, we pass it by
a. Value
b. Static variable
c. Global variable
d. Reference

3. Portability in C is
a. The ability to run the executable of one system in another
b. The ability to compile successfully the same source code in different systems
c. The fact that both the systems have, possibly incompatible, C compilers

4. The sizes of char, int and float are, respectively
a. 2, 4, and 8 bytes
b. 1, 2, and 4 bytes
c. 1, 2, and 2 bytes
d. 2, 4, and 4 bytes

5. Structures and Unions are equivalent
a. True
b. False

6. A structure and a union, both have the same members. Then
a. The structure occupies less space than the union.
b. The union occupies less space than the structure.
c. Both occupy equal space.

7. The amount of space allocated in bytes for union cmplx {float x,float y,int i}; is
a. 4
b. 2
c. 10
d. 6

8. The maximum positive value that can be stored in a long is
a. 2^32 - 1
b. 2^16 - 1
c. 2^(32-1) - 1
d. 2^(16-1) - 1

9. High precision scientific calculations involving a space expedition are being performed. The preferred data type must probably be
a. long
b. float
c. unsigned
d. double

10. printf("The world\n\0is round"); will display the message
a. The world
b. The world is round
c. The world
is round

11. If you want to read a string of words you can use the function
a. scanf
b. getch
c. gets
d. getchar

12. double is used instead of float because
a. float has less significant digits
b. double has a large mantissa
c. double has a smaller exponent
d. Both a and b

13. if var is a variable then &var is its
a. pointer
b. value
c. type
d. inverse

14. If ptr is a pointer and val is a variable, which of the following is a valid indirection
a. ptr = val;
b. ptr = *val;
c. &ptr = val;
d. ptr = &val;

15. If arr is an array of int then which of the following accesses array index 1
a. printf("%d", 1[arr]);
b. printf("%d", *(arr+=1));
c. printf("%d", arr);
d. all of the above
e. only a and c above

16. The string "hello world" needs how many bytes for storage
a. 11
b. 13
c. 12
d. 10

17. The last byte of the string "Internet is big" is
a. EOL
b. 0
c. 'g'
d. EOF

18. The result of 255 & 16 is
a. 255
b. 0
c. 020
d. 0x8

19. The result of 19%3 is
a. 6
b. 18
c. 0
d. 1

a. a machine code file
b. a file containing source code of library functions
c. a file containing prototype declarations
d. both b and c

21. A register variable is mostly used for
a. loops and counters
b. passing parameters to functions
c. calling interrupt service routines
d. saving registers to stack

22. The first step in generation of executable file from C file is
a. Compiling
c. Pre-processing

23. To access a variable declared in another module of a big program we use storage class
a. auto
b. static
c. register
d. extern

24. When a file is opened, the file descriptor is assigned by
a. the compiler
b. the operating system
c. the user

25. To redirect stdout to a file, the function that may be used is
a. open
b. fopen
c. creat
d. freopen

26. The default value returned by a function having no prototype is assumed by ANSI C to be
a. void
b. char
c. int
d. float

27. In ANSI C, the generic pointer type is
a. pointer to void
b. pointer to char
c. pointer to int
d. pointer to float

28. Macro definitions in C are done by
a. #if
b. #include
c. const
d. #define

29. If a local variable must remember its previous value in a function it must be declared using the class
a. auto
b. extern
c. register
d. static

30. sizeof is a
a. C library function
b. Reserved word
c. Operator
d. Both b and c

31. h is a pointer to pointer to int and points to p, a pointer to int. If p points to a value 4 then *h is
a. the int 4
b. the address of p
c. the address of h
d. the address of value 4

32. To dynamically allocate 100 locations each of type double which of the following is correct
a. calloc(100,8)
b. calloc(8,100)
c. (double *)malloc(100)
d. calloc(800)

33. Which of the following are reserved words
a. static
b. while
c. return
d. all of the above

34. C was originally developed by
a. Ken Thompson and Dennis Ritchie
b. Dennis Ritchie and Brian Kernighan
c. Ken Thompson and Brian Kernighan
d. Niklaus Wirth and Dennis Ritchie

35. Variables can begin with
a. Underscore
b. Digit
c. Hyphen
d. None of the above

36. The value of a-b, assuming a=0x0A and b=012 is
a. 2
b. -2
c. 0
d. none of the above

37. Variables are initialized to zero for storage classes
a. Auto and Static
b. Extern and Static
c. Static and Register
d. Register and Auto

38. The output resulting from i=10; printf("%d --- %d",i,i++); is
a. 10 --- 11
b. 10 --- 10
c. 11 --- 10
d. 11 --- 11

39. For char c=127; printf("%d",++c); the output is
a. 128
b. 127
c. 0
d. -128

40. For int a=30*1000+2768; printf("%d",a); the output is
a. 0
b. 1
c. -1
d. None of the above

41. For int a=244; if(a=400) printf("50th Independence Day");
a. The output is 50th Independence Day
b. There will be no output because a is not 400

42. if('X' < 'x'); printf("50th Independence Day");
a. The output is 50th Independence Day
b. There will be no output

43. Which is the odd one out
a. a++
b. a+=1
c. a=+1
d. a=a+1

44. for(;;)
a. is an illegal statement
b. is legal but the result is unpredictable
c. is illegal in ANSI C but legal in Turbo C
d. is legal and the result is predictable

45. Which of the following is not a C keyword
a. switch
b. case
c. choice
d. break

46. int i; char c; then which of the following is lossless
a. i=c;c=i;
b. c=i;i=c;

47. if p and q are two pointers then which of the following is illegal
a. p=q
b. p-q
c. p+q
d. p=q+1

48. Values assigned to enum constants cannot be the same i.e. enum colors {BLUE=1,RED=1,GREEN=1,CYAN=2,MAGENTA=2,YELLOW=2} is invalid
a. True
b. False

49. In int (*a) a. a is a pointer
b. a is an integer
c. a is an array
d. a is a function

50. a[i][j] is same as
a. a+i+j
b. &((a+i)+j)
c. *(*(a+i)+j)
d. None of the above

51. If p is a pointer, which of the following is invalid
a. p[-2]
b. p-2
c. p*2
d. p=0

52. In functions using C calling convention, stack cleanup is done by
a. Called function
b. Calling function
c. Operating system

53. In functions using Pascal calling convention, stack cleanup is done by
a. Called function
b. Calling function
c. Operating system

54. Which of the following is not true
a. Variable declarations allocate storage for variables
b. Variable definitions allocate storage for variables

55. Which of the following is not recursion
a. f1 calling f2 and f2 calling f1
b. f1 calling itself
c. main calling main
d. all of the above are recursion

56. Select the odd one
a. a+a+a+a
b. a<<2
c. a*4
d. a>>4

57. What is the size in bytes of the value 23L + 32U
a. 2
b. 4
c. 8
d. none of the above

58. Operator * when used with pointers is called the
a. indirection operator
b. referencing operator

59. For declaration int (*a); and assuming a=100, the output for printf("%p",a+1); is
a. 102
b. 104
c. 120
d. 110

60. Which of the following is invalid
a. int a = { {11, 12}, {21, 22} };
b. int a[] = { {11, 12}, {21, 22} };
c. int a[] = { {11, 12}, {21, 22} };
d. both b and c above

61. For char *s = "SNAIL"; (*(s+5))?printf("SNAIL"):printf("HARE"); the output is
a. SNAIL
b. HARE

62. If s is a struct and p a pointer to it, so that p=&s then which of the following is the correct way to read a field fieldname in the struct
a. p.fieldname
b. (*p).fieldname
c. s->fieldname
d. all of the above

63. If we have an executable program prog.exe, and text file f1 then typing prog < f1 at DOS prompt means
a. The screen is temporarily redundant
b. The keyboard is temporarily redundant
c. Both screen and keyboard are temporarily redundant
d. The command is illegal

64. Which of the following are standard files in C
a. stdprn
b. stdout, stdin and stderr
c. stdaux
d. all of the above

65. Which of the following is not a valid function in C
a. cscanf
b. sscanf
c. fscanf
d. pscanf

66. With which of the following file I/O type is the buffer management transparent
a. high level
b. low level

67. To which of the following file I/O level do fwrite and fread belong
a. high level
b. low level

68. The statement #define NULL 0 is in the header file
a. conio.h
b. stdio.h
c. file.h
d. limits.h

69. Given enum days = {mon,tue,wed,thu,fri,sat,sun}
The output of printf("%d",mon+sun); is
a. 7
b. 6
c. 8
d. none of the above

70. In C convention, the order of passing multiple parameters to a function occurs from
a. left to right with first parameter on top of stack
b. right to left with first parameter on top of stack
c. left to right with last parameter on top of stack
d. right to left with last parameter on top of stack

71. Consider the following piece of code if(i = 10 > 5); printf("%d",i);
The output is
a. 0
b. 1
c. Garbage value
d. None of the above