C Language or C Programming Viva Questions

1- What is C language?

C is a mid-level and procedural programming language. The Procedural programming language is also known as the structured programming language is a technique in which large programs are broken down into smaller modules, and each module uses structured code. This technique minimizes error and misinterpretation.

2- Why is C known as a mother language?

C is known as a mother language because most of the compilers and JVMs are written in C language. Most of the languages which are developed after C language has borrowed heavily from it like C++, Python, Rust, javascript, etc. It introduces new core concepts like arrays, functions, file handling which are used in these languages.

3- Why is C called a mid-level programming language?

C is called a mid-level programming language because it binds the low level and high -level programming language. We can use C language as a System programming to develop the operating system as well as an Application programming to generate menu driven customer driven billing system.

4- Who is the founder of C language?

Dennis Ritchie.

5- When was C language developed?

C language was developed in 1972 at bell laboratories of AT&T.

6- What are the features of the C language?

The main features of C language are given below:

7- What is the use of printf() and scanf() functions?

printf(): The printf() function is used to print the integer, character, float and string values on to the screen.

Following are the format specifier:

scanf(): The scanf() function is used to take input from the user.

8- What is the difference between the local variable and global variable in C?

Following are the differences between a local variable and global variable:

Basis for comparisonLocal variableGlobal variable
DeclarationA variable which is declared inside function or block is known as a local variable.A variable which is declared outside function or block is known as a global variable.
ScopeThe scope of a variable is available within a function in which they are declared.The scope of a variable is available throughout the program.
AccessVariables can be accessed only by those statements inside a function in which they are declared.Any statement in the entire program can access variables.
LifeLife of a variable is created when the function block is entered and destroyed on its exit.Life of a variable exists until the program is executing.
StorageVariables are stored in a stack unless specified.The compiler decides the storage location of a variable.

9- What is the use of a static variable in C?

Following are the uses of a static variable:

10- What is the use of the function in C?

Uses of C function are:

11- What is the difference between call by value and call by reference in C?

Following are the differences between a call by value and call by reference are:

Call by valueCall by reference
DescriptionWhen a copy of the value is passed to the function, then the original value is not modified.When a copy of the value is passed to the function, then the original value is modified.
Memory locationActual arguments and formal arguments are created in separate memory locations.Actual arguments and formal arguments are created in the same memory location.
SafetyIn this case, actual arguments remain safe as they cannot be modified.In this case, actual arguments are not reliable, as they are modified.
ArgumentsThe copies of the actual arguments are passed to the formal arguments.The addresses of actual arguments are passed to their respective formal arguments.

Example of call by value:

  1. #include <stdio.h>  
  2. void change(int,int);  
  3. int main()  
  4. {  
  5.     int a=10,b=20;  
  6.     change(a,b); //calling a function by passing the values of variables.  
  7.     printf(“Value of a is: %d”,a);  
  8.     printf(“\n”);  
  9.     printf(“Value of b is: %d”,b);  
  10.     return 0;  
  11. }  
  12. void change(int x,int y)  
  13. {  
  14.     x=13;  
  15.     y=17;  
  16. }  

Output:

Value of a is: 10
Value of b is: 20

Example of call by reference:

  1. #include <stdio.h>  
  2. void change(int*,int*);  
  3. int main()  
  4. {  
  5.     int a=10,b=20;  
  6.     change(&a,&b); // calling a function by passing references of variables.  
  7.     printf(“Value of a is: %d”,a);  
  8.     printf(“\n”);  
  9.     printf(“Value of b is: %d”,b);  
  10.     return 0;  
  11. }  
  12. void change(int *x,int *y)  
  13. {  
  14.     *x=13;  
  15.     *y=17;  
  16. }  

Output:

Value of a is: 13
Value of b is: 17

12- What is recursion in C?

When a function calls itself, and this process is known as recursion. The function that calls itself is known as a recursive function.

Recursive function comes in two phases:

  1. Winding phase
  2. Unwinding phase

Winding phase: When the recursive function calls itself, and this phase ends when the condition is reached.

Unwinding phase: Unwinding phase starts when the condition is reached, and the control returns to the original call.

Example of recursion

  1. #include <stdio.h>  
  2. int calculate_fact(int);  
  3. int main()  
  4. {  
  5.  int n=5,f;  
  6.  f=calculate_fact(n); // calling a function  
  7.  printf(“factorial of a number is %d”,f);  
  8.   return 0;  
  9. }  
  10. int calculate_fact(int a)  
  11. {  
  12.   if(a==1)  
  13.   {  
  14.       return 1;  
  15.   }  
  16.   else  
  17.   return a*calculate_fact(a-1); //calling a function recursively.  
  18.    }  

Output:

factorial of a number is 120

13- What is an array in C?

An Array is a group of similar types of elements. It has a contiguous memory location. It makes the code optimized, easy to traverse and easy to sort. The size and type of arrays cannot be changed after its declaration.

Arrays are of two types:

Syntax:

  1. data_type array_name[size];  

Syntax:

  1. data_type array_name[size];  

Example of an array:

  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.    int arr[5]={1,2,3,4,5}; //an array consists of five integer values.  
  5.    for(int i=0;i<5;i++)  
  6.    {  
  7.        printf(“%d “,arr[i]);  
  8.    }  
  9.     return 0;  
  10. }  

Output:

1 2 3 4 5

14- What is a pointer in C?

A pointer is a variable that refers to the address of a value. It makes the code optimized and makes the performance fast. Whenever a variable is declared inside a program, then the system allocates some memory to a variable. The memory contains some address number. The variables that hold this address number is known as the pointer variable.

For example:

  1. Data_type *p;  

The above syntax tells that p is a pointer variable that holds the address number of a given data type value.

Example of pointer

  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.    int *p; //pointer of type integer.  
  5.    int a=5;  
  6.    p=&a;  
  7.    printf(“Address value of ‘a’ variable is %u”,p);  
  8.     return 0;  
  9. }  

Output:

Address value of 'a' variable is 428781252

15- What is the usage of the pointer in C?

16- What is a NULL pointer in C?

A pointer that doesn’t refer to any address of value but NULL is known as a NULL pointer. When we assign a ‘0’ value to a pointer of any type, then it becomes a Null pointer.

17- What is a far pointer in C?

A pointer which can access all the 16 segments (whole residence memory) of RAM is known as far pointer. A far pointer is a 32-bit pointer that obtains information outside the memory in a given section.

18- What is dangling pointer in C?

Let’s see this through an example.

  1. #include<stdio.h>  
  2. void main()  
  3. {  
  4.         int *ptr = malloc(constant value); //allocating a memory space.  
  5.         free(ptr); //ptr becomes a dangling pointer.  
  6. }  

In the above example, initially memory is allocated to the pointer variable ptr, and then the memory is deallocated from the pointer variable. Now, pointer variable, i.e., ptr becomes a dangling pointer.

How to overcome the problem of a dangling pointer

The problem of a dangling pointer can be overcome by assigning a NULL value to the dangling pointer. Let’s understand this through an example:

  1. #include<stdio.h>  
  2.       void main()  
  3.       {  
  4.               int *ptr = malloc(constant value); //allocating a memory space.  
  5.               free(ptr); //ptr becomes a dangling pointer.  
  6.               ptr=NULL; //Now, ptr is no longer a dangling pointer.  
  7.       }  

In the above example, after deallocating the memory from a pointer variable, ptr is assigned to a NULL value. This means that ptr does not point to any memory location. Therefore, it is no longer a dangling pointer.

19- What is pointer to pointer in C?

In case of a pointer to pointer concept, one pointer refers to the address of another pointer. The pointer to pointer is a chain of pointers. Generally, the pointer contains the address of a variable. The pointer to pointer contains the address of a first pointer. Let’s understand this concept through an example:

  1. #include <stdio.h>  
  2.  int main()  
  3. {  
  4.     int a=10;  
  5.     int *ptr,**pptr; // *ptr is a pointer and **pptr is a double pointer.  
  6.     ptr=&a;  
  7.     pptr=&ptr;  
  8.     printf(“value of a is:%d”,a);  
  9.     printf(“\n”);  
  10.     printf(“value of *ptr is : %d”,*ptr);  
  11.     printf(“\n”);  
  12.     printf(“value of **pptr is : %d”,**pptr);  
  13.     return 0;  
  14. }  

In the above example, pptr is a double pointer pointing to the address of the ptr variable and ptr points to the address of ‘a’ variable.

20- What is static memory allocation?

  1. For example:  
  2. int a[10];  

The above example creates an array of integer type, and the size of an array is fixed, i.e., 10.

21- What is dynamic memory allocation?

  1. For example  
  2. int *p= malloc(sizeof(int)*10);  

The above example allocates the memory at runtime.

22- What functions are used for dynamic memory allocation in C language?

  1. malloc()
  2. Syntax

    1. ptr = (cast-type*) malloc(byte-size) // allocating the memory using malloc() function.  

  3. calloc()
  4. Syntax

    1. ptr = (cast-type*)calloc(n, element-size);// allocating the memory using calloc() function.  

  5. realloc()
  6. Syntax

    1. ptr = realloc(ptr, newsize); // updating the memory size using realloc() function.  

    In the above syntax, ptr is allocated to a new size.

  7. free():The free() function releases the memory allocated by either calloc() or malloc() function.
  8. Syntax

    1. free(ptr); // memory is released using free() function.  

    The above syntax releases the memory from a pointer variable ptr.

23- What is the difference between malloc() and calloc()?

calloc()malloc()
DescriptionThe malloc() function allocates a single block of requested memory.The calloc() function allocates multiple blocks of requested memory.
InitializationIt initializes the content of the memory to zero.It does not initialize the content of memory, so it carries the garbage value.
Number of argumentsIt consists of two arguments.It consists of only one argument.
Return valueIt returns a pointer pointing to the allocated memory.It returns a pointer pointing to the allocated memory.

24- What is the structure?

Syntax of structure

  1. struct structure_name  
  2. {  
  3.   Member_variable1;  
  4.  Member_variable2  
  5. .  
  6. .  
  7. }[structure variables];  

Let’s see a simple example.

  1. #include <stdio.h>  
  2. struct student  
  3. {  
  4.     char name[10];       // structure members declaration.  
  5.     int age;  
  6. }s1;      //structure variable  
  7. int main()  
  8. {  
  9.     printf(“Enter the name”);  
  10.     scanf(“%s”,s1.name);  
  11.     printf(“\n”);  
  12.     printf(“Enter the age”);  
  13.     scanf(“%d”,&s1.age);  
  14.     printf(“\n”);  
  15.     printf(“Name and age of a student: %s,%d”,s1.name,s1.age);  
  16.     return 0;  
  17. }  

Output:

Enter the name shikha
Enter the age 26
Name and age of a student: shikha,26  

25- What is a union?

Syntax of union

  1. union union_name  
  2. {  
  3. Member_variable1;  
  4. Member_variable2;  
  5. .  
  6. .  
  7. Member_variable n;  
  8. }[union variables];  

Let’s see a simple example

  1. #include<stdio.h>  
  2. union data  
  3. {  
  4.     int a;      //union members declaration.  
  5.     float b;  
  6.     char ch;  
  7. };  
  8. int main()  
  9. {  
  10.   union data d;       //union variable.  
  11.   d.a=3;  
  12.   d.b=5.6;  
  13.   d.ch=‘a’;  
  14.   printf(“value of a is %d”,d.a);  
  15.   printf(“\n”);  
  16.   printf(“value of b is %f”,d.b);  
  17.   printf(“\n”);  
  18.   printf(“value of ch is %c”,d.ch);  
  19.   return 0;  
  20. }  

Output:

value of a is 1085485921
value of b is 5.600022
value of ch is a

In the above example, the value of a and b gets corrupted, and only variable ch shows the actual output. This is because all the members of a union share the common memory space. Hence, the variable ch whose value is currently updated.

26- What is an auto keyword in C?

In C, every local variable of a function is known as an automatic (auto) variable. Variables which are declared inside the function block are known as a local variable. The local variables are also known as an auto variable. It is optional to use an auto keyword before the data type of a variable. If no value is stored in the local variable, then it consists of a garbage value.

27- What is the purpose of sprintf() function?

The sprintf() stands for “string print.” The sprintf() function does not print the output on the console screen. It transfers the data to the buffer. It returns the total number of characters present in the string.

Syntax

  1. int sprintf ( char * str, const char * format, … );  

Let’s see a simple example

  1.  #include<stdio.h>  
  2. int main()  
  3. {  
  4.  char a[20];  
  5.  int n=sprintf(a,“javaToint”);  
  6.  printf(“value of n is %d”,n);  
  7.  return 0;}  

Output:

value of n is 9

28- Can we compile a program without main() function?

Yes, we can compile, but it can’t be executed.

But, if we use #define, we can compile and run a C program without using the main() function. For example:

  1. #include<stdio.h>    
  2. #define start main    
  3. void start() {    
  4.    printf(“Hello”);    
  5. }    

29- What is a token?

The Token is an identifier. It can be constant, keyword, string literal, etc. A token is the smallest individual unit in a program. C has the following tokens:

  1. Identifiers: Identifiers refer to the name of the variables.
  2. Keywords: Keywords are the predefined words that are explained by the compiler.
  3. Constants: Constants are the fixed values that cannot be changed during the execution of a program.
  4. Operators: An operator is a symbol that performs the particular operation.
  5. Special characters: All the characters except alphabets and digits are treated as special characters.

30- What is command line argument?

The argument passed to the main() function while executing the program is known as command line argument. For example:

  1. main(int count, char *args[]){  
  2. //code to  be executed  
  3. }  

31- What is the acronym for ANSI?

The ANSI stands for ” American National Standard Institute.” It is an organization that maintains the broad range of disciplines including photographic film, computer languages, data encoding, mechanical parts, safety and more.

32- What is the difference between getch() and getche()?

The getch() function reads a single character from the keyboard. It doesn’t use any buffer, so entered data will not be displayed on the output screen.

The getche() function reads a single character from the keyword, but data is displayed on the output screen. Press Alt+f5 to see the entered character.

Let’s see a simple example

  1. #include<stdio.h>  
  2. #include<conio.h>  
  3. int main()  
  4. {  
  5.       
  6.  char ch;  
  7.  printf(“Enter a character “);  
  8.  ch=getch(); // taking an user input without printing the value.  
  9.  printf(“\nvalue of ch is %c”,ch);  
  10.  printf(“\nEnter a character again “);  
  11.  ch=getche(); // taking an user input and then displaying it on the screen.  
  12.   printf(“\nvalue of ch is %c”,ch);  
  13.  return 0;  
  14. }  

Output:

Enter a character
value of ch is a
Enter a character again a
value of ch is a

In the above example, the value entered through a getch() function is not displayed on the screen while the value entered through a getche() function is displayed on the screen.

33- What is the newline escape sequence?

The new line escape sequence is represented by “\n”. It inserts a new line on the output screen.

34- Who is the main contributor in designing the C language after Dennis Ritchie?

Brain Kernighan.

35- What is the difference between near, far and huge pointers?

A virtual address is composed of the selector and offset.

A near pointer doesn’t have explicit selector whereas far, and huge pointers have explicit selector. When you perform pointer arithmetic on the far pointer, the selector is not modified, but in case of a huge pointer, it can be modified.

These are the non-standard keywords and implementation specific. These are irrelevant in a modern platform.

36- What is the maximum length of an identifier?

It is 32 characters ideally but implementation specific.

37- What is typecasting?

The typecasting is a process of converting one data type into another is known as typecasting. If we want to store the floating type value to an int type, then we will convert the data type into another data type explicitly.

Syntax

  1. (type_name) expression;  

38- What are the functions to open and close the file in C language?

The fopen() function is used to open file whereas fclose() is used to close file.

39- Can we access the array using a pointer in C language?

Yes, by holding the base address of array into a pointer, we can access the array using a pointer.

40- What is an infinite loop?

A loop running continuously for an indefinite number of times is called the infinite loop.

Infinite For Loop:

  1. for(;;){  
  2. //code to be executed  
  3. }  

Infinite While Loop:

  1. while(1){  
  2. //code to be executed  
  3. }  

Infinite Do-While Loop:

  1. do{  
  2. //code to be executed  
  3. }while(1);  

41- Write a program to print “hello world” without using a semicolon?

  1. #include<stdio.h>      
  2. void main(){      
  3.  if(printf(“hello world”)){} // It prints the ?hello world? on the screen.  
  4. }     

42- Write a program to swap two numbers without using the third variable?

  1. #include<stdio.h>      
  2. #include<conio.h>      
  3. main()      
  4. {      
  5. int a=10, b=20;    //declaration of variables.  
  6. clrscr();        //It clears the screen.  
  7. printf(“Before swap a=%d b=%d”,a,b);        
  8.       
  9. a=a+b;//a=30 (10+20)       
  10. b=a-b;//b=10 (30-20)      
  11. a=a-b;//a=20 (30-10)      
  12.       
  13. printf(“\nAfter swap a=%d b=%d”,a,b);      
  14. getch();      
  15. }  

43- Write a program to print Fibonacci series without using recursion?

  1. #include<stdio.h>    
  2. #include<conio.h>    
  3. void main()    
  4. {    
  5.  int n1=0,n2=1,n3,i,number;    
  6.  clrscr();    
  7.  printf(“Enter the number of elements:”);    
  8.  scanf(“%d”,&number);    
  9.  printf(“\n%d %d”,n1,n2);//printing 0 and 1    
  10.     
  11.  for(i=2;i<number;++i)//loop starts from 2 because 0 and 1 are already printed    
  12.  {    
  13.   n3=n1+n2;    
  14.   printf(” %d”,n3);    
  15.   n1=n2;    
  16.   n2=n3;    
  17.  }    
  18. getch();    
  19. }    

44- Write a program to print Fibonacci series using recursion?

  1. #include<stdio.h>      
  2. #include<conio.h>      
  3. void printFibonacci(int n) // function to calculate the fibonacci series of a given number.  
  4. {      
  5. static int n1=0,n2=1,n3;    // declaration of static variables.  
  6.     if(n>0){      
  7.          n3 = n1 + n2;      
  8.          n1 = n2;      
  9.         n2 = n3;      
  10.          printf(“%d “,n3);      
  11.          printFibonacci(n-1);    //calling the function recursively.  
  12.     }      
  13. }      
  14. void main(){      
  15.     int n;      
  16.     clrscr();      
  17.     printf(“Enter the number of elements: “);      
  18.     scanf(“%d”,&n);      
  19.     printf(“Fibonacci Series: “);      
  20.     printf(“%d %d “,0,1);      
  21.     printFibonacci(n-2);//n-2 because 2 numbers are already printed      
  22.     getch();      
  23. }      

45- Write a program to check prime number in C Programming?

  1. #include<stdio.h>      
  2. #include<conio.h>      
  3. void main()      
  4. {      
  5. int n,i,m=0,flag=0;    //declaration of variables.  
  6. clrscr();    //It clears the screen.  
  7. printf(“Enter the number to check prime:”);      
  8. scanf(“%d”,&n);      
  9. m=n/2;      
  10. for(i=2;i<=m;i++)      
  11. {      
  12. if(n%i==0)      
  13. {      
  14. printf(“Number is not prime”);      
  15. flag=1;      
  16. break;    //break keyword used to terminate from the loop.  
  17. }      
  18. }      
  19. if(flag==0)      
  20. printf(“Number is prime”);      
  21. getch();    //It reads a character from the keyword.  
  22. }  

46- Write a program to check palindrome number in C Programming?

  1. #include<stdio.h>    
  2. #include<conio.h>    
  3. main()    
  4. {    
  5. int n,r,sum=0,temp;    
  6. clrscr();    
  7. printf(“enter the number=”);    
  8. scanf(“%d”,&n);    
  9. temp=n;    
  10. while(n>0)    
  11. {    
  12. r=n%10;    
  13. sum=(sum*10)+r;    
  14. n=n/10;    
  15. }    
  16. if(temp==sum)    
  17. printf(“palindrome number “);    
  18. else    
  19. printf(“not palindrome”);    
  20. getch();    
  21. }    

47- Write a program to print factorial of given number without using recursion?

  1. #include<stdio.h>    
  2. #include<conio.h>    
  3. void main(){    
  4.   int i,fact=1,number;    
  5.   clrscr();    
  6.   printf(“Enter a number: “);    
  7.   scanf(“%d”,&number);    
  8.     
  9.   for(i=1;i<=number;i++){    
  10.       fact=fact*i;    
  11.   }    
  12.   printf(“Factorial of %d is: %d”,number,fact);    
  13.   getch();    
  14. }    

48- Write a program to print factorial of given number using recursion?

  1. #include<stdio.h>      
  2. #include<conio.h>      
  3.  long factorial(int n)    // function to calculate the factorial of a given number.   
  4. {      
  5.   if (n == 0)      
  6.     return 1;      
  7. else      
  8. return(n * factorial(n-1));    //calling the function recursively.  
  9. }      
  10.  void main()      
  11. {      
  12.   int number;    //declaration of variables.  
  13.   long fact;      
  14.  clrscr();      
  15.   printf(“Enter a number: “);      
  16. scanf(“%d”, &number);       
  17.  fact = factorial(number);    //calling a function.  
  18. printf(“Factorial of %d is %ld\n”, number, fact);      
  19.  getch();   //It reads a character from the keyword.   
  20. }  

49- Write a program to check Armstrong number in C?

  1. #include<stdio.h>      
  2. #include<conio.h>      
  3. main()      
  4. {      
  5. int n,r,sum=0,temp;    //declaration of variables.  
  6. clrscr(); //It clears the screen.     
  7. printf(“enter the number=”);      
  8. scanf(“%d”,&n);      
  9. temp=n;      
  10. while(n>0)      
  11. {      
  12. r=n%10;      
  13. sum=sum+(r*r*r);      
  14. n=n/10;      
  15. }      
  16. if(temp==sum)      
  17. printf(“armstrong  number “);      
  18. else      
  19. printf(“not armstrong number”);      
  20. getch();  //It reads a character from the keyword.  
  21. }    

50- Write a program to reverse a given number in C?

  1. #include<stdio.h>      
  2. #include<conio.h>      
  3. main()      
  4. {      
  5. int n, reverse=0, rem;    //declaration of variables.  
  6. clrscr(); // It clears the screen.     
  7. printf(“Enter a number: “);      
  8. scanf(“%d”, &n);      
  9. while(n!=0)      
  10. {      
  11.      rem=n%10;      
  12.      reverse=reverse*10+rem;      
  13.      n/=10;      
  14. }      
  15. printf(“Reversed Number: %d”,reverse);      
  16. getch();  // It reads a character from the keyword.    
  17. }      

YouTube