Advanced C Programming | Assignments

Home Embedded Systems C Programming Advanced C Programming | Assignments

Advanced C Programming โ€“ Assignments

Advanced C Programming Assignments and Exercises are a set of problem statements, which will ensure you apply the concept you have learned in your classroom. By solving these assignments, you will go through a systematic problem-solving approach which includes requirement understanding, algorithm design, pseudocode creation, dry run, and final execution. As you move from simple to more complex assignments of each module it will slowly start building your self-confidence. 

C Assignments

Description:

In number theory, a perfect number is a positive integer that is equal to the sum of its proper positive divisors, that is, the sum of its positive divisors excluding the number itself (also known as its aliquot sum). Equivalently, a perfect number is a number that is half the sum of all of its positive divisors (including itself).

 

Example:

The first perfect number is 6, because 1, 2, and 3 are its proper positive divisors, and 1 + 2 + 3 = 6. Equivalently, the number 6 is equal to half the sum of all its positive divisors: ( 1 + 2 + 3 + 6 ) / 2 = 6. The next perfect number is 28 = 1 + 2 + 4 + 7 + 14. This is followed by the perfect numbers 496 and 8128

 

Prerequisites:

  • Loops
  • Arithmetic operators

Objective:

  • To understand the concept of If-else constructs
  • if-else construct

Inputs:

A positive integer say โ€˜Nโ€™. Where N < 220

 

Sample Execution / Output:

Test Case 1: Positive Numbers

 

Test Case 2: Positive Numbers

 

Test Case 3: Negative Number

 

Test Case 4: N > 220

Description:

  • In mathematics, the Fibonacci numbers or Fibonacci sequence are the numbers in the following integer sequence 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 . . . OR 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 . . .
  • By definition, the first two numbers in the Fibonacci sequence are either 1 and 1, or 0 and 1, depending on the chosen starting point of the sequence, and each subsequent number is the sum of the previous two

Prerequisites:

  • Loops
  • Arithmetic operators

Objective:

  • To understand the concept of
  • if-else construct
  • Continuos looping

Inputs:

  • A integer say โ€˜Nโ€™

Sample Execution / Output:

Test Case 1: Positive Numbers

 

Test Case 2: Positive Numbers

 

Test Case 3: Negative Number

 

Test Case 4: Negative Number

Description:

When the program is run, the provided string should be printed on the terminal in X formation.

 

Prerequisites:

  • Loops
  • Arithmetic operators

Objective:

  • To understand the concept of
  • if-else construct
  • Continuos looping

Inputs:

A integer say โ€˜Nโ€™. Where N < 25

 

Sample Execution / Output:

Test Case 1: 

 

Test Case 2:

 

Test Case 3:

 

Description:

AP

In mathematics, an arithmetic progression (AP) or arithmetic sequence is a sequence of numbers such that the difference between the consecutive terms is constant.

For instance, the sequence 5, 7, 9, 11, 13, 15 โ€ฆ is an arithmetic progression with common difference of 2.

GP

In mathematics, a geometric progression, also known as a geometric sequence, is a sequence of numbers where each term after the first is found by multiplying the previous one by a fixed, non-zero number called the common ratio.

For example, the sequence 2, 6, 18, 54, โ€ฆ is a geometric progression with common ratio 3. Similarly 10, 5, 2.5, 1.25, โ€ฆ is a geometric sequence with common ratio 1/2.

HP

In mathematics, a harmonic progression (or harmonic sequence) is a progression formed by taking the reciprocals of an arithmetic progression.

 

Prerequisites:

  • Loops
  • Arithmetic operators
  • Data Types

Objective:

  • To understand the concept of
  • if-else construct
  • Continuous looping
  • Type Casting

Inputs:

Positive integers say โ€˜Aโ€™, โ€˜Rโ€™ and โ€˜Nโ€™
where:

  • A = First number
  • R = Common difference(AP & HP), Common ratio(GP)
  • N = number of terms
  • A, R and N should be < 210

Sample Execution / Output:

Test Case 1: Positive Inputs

 

Test Case 2: Negative Input(s)

 

Test Case 3: Any one value greater than 210

Description:

Suppose, in a week let us assume first day is โ€˜Sundayโ€™, then second day will be โ€˜Mondayโ€™ and so on. If first day is โ€˜Mondayโ€™ then the second day will be โ€˜Tuesdayโ€™ and so on.

 

Prerequisites:

  • Loops
  • Arithmetic operators
  • Switch Case

Objective:

  • To understand the concept of
    • Switch Case

Inputs:

  • Positive integer say โ€˜Nโ€™. Where 1 <= โ€˜Nโ€™ <= 365.
    Option to set the first day.

Sample Execution / Output:

Description:

Print the Decimal numbers from 0 to 127 in Octal, Hexadecimal and in ASCII representation.

Display as โ€˜Non Printableโ€™ for non-printable characters

 

Prerequisites:

  • Loops

Objective:

  • To understand the concept of
  • Loops and ASCII characters

Inputs:

None

 

Sample Execution / Output:

Test Case 1:

Description:

Print the size of basic data types โ€“ int, char, float, double, void

Print the size of the above data types while using different qualifiers โ€“ short, long, unsigned etc.

 

Prerequisites:

  • Sizeof operators

Objective:

  • To understand the concept of
  • Basic C datatypes and its size

Inputs:

None

 

Sample Execution / Output:

Test Case 1:

Description:

  • Read number n from user.
  • Check the zeroth bit(on LSB end) of the number.
    • if last bit is 1, number is odd.
    • if last bit is zero, number is even.
  • Prompt for continue option.

Prerequisites:

  • If Else
  • Bitwise Operators

Objective:

  • To understand the concept of
  • Bitwise Operators

Inputs:

Integer N

 

Sample Execution / Output:

Test Case 1:

 

Test Case 2:

Description:

  • Read number n from user.
  • Print the 32 bit binary representation of n and -n.
  • And compare both.
  • Prompt for continue option.

Prerequisites:

  • Bitwise Operators

Objective:

  • To understand the concept of
  • 2โ€™s Compliment and Bitwise Operators

Inputs:

Integer N

 

Sample Execution / Output:

Test Case 1:

Description:

The user entered number should identified whether its a odd or a even number. Mention its sign too.

 

Prerequisites:

  • Loops
  • Arithmetic Operators
  • Nested if-else construct

Objective:

  • To understand the concept of
  • Nested if-else

Inputs:

Integer N. Where โ€˜Nโ€™ < 220

 

Sample Execution / Output:

Test Case 1:

Description:

In mathematics, the sieve of Eratosthenes, one of a number of prime number sieves, is a simple, ancient algorithm for finding all prime numbers up to any given limit. It does so by iteratively marking as composite (i.e., not prime) the multiples of each prime, starting with the multiples of 2.

The sieve of Eratosthenes is one of the most efficient ways to find all of the smaller primes. It is named after Eratosthenes of Cyrene, a Greek mathematician.

 

Prerequisites:

  • Loops
  • Arithmetic Operators
  • Arrays

Objective:

  • To understand the concept of
  • If-else constructs
  • Arrays

Inputs:

Integer N. Where โ€˜Nโ€™ < 220

 

Sample Execution / Output:

Test Case 1: A positive number

 

Test Case 2: A negative number

 

Test Case 3: Number greater than 220

Description:

In probability theory and statistics, a median is described as the number separating the higher half of a sample, a population, or a probability distribution, from the lower half. The median of a finite list of numbers can be found by arranging all the numbers from lowest value to highest value and picking the middle one.

 

Example:

For getting the median of input array { 12, 11, 15, 10, 20 }, first sort the array. We get { 10, 11, 12, 15, 20 } after sorting. Median is the middle element of the sorted array which is 12.

 

Prerequisites:

  • Loops
  • Arrays

Objective:

  • To understand the concept of
  • One-dimensional Arrays

Inputs:

  • 2 Integer Array of โ€˜Nโ€™ elements. Where โ€˜Nโ€™ < 10

Requirements:

  • [ ]

Sample Execution / Output:

Test Case 1: Equal sized arrays

 

Test Case 2: Unequal sized arrays

 

Test Case 3: N greater than 10

Description:

c-type library functions check whether c, which must have the value of an unsigned char or EOF, falls into a certain character class according to the current locale.

  • isalnum() โ€“ checks for an alphanumeric character; it is equivalent to (isalpha(c) || isdigit(c)).
  • isalpha() โ€“ checks for an alphabetic character; in the standard โ€œCโ€ locale, it is equivalent to (isupper(c) || islower(c)). In some locales, there may be additional characters for which isalpha() is trueโ€”letters which are neither upper case nor lower case.
  • isascii() โ€“ checks whether c is a 7-bit unsigned char value that fits into the ASCII character set.
  • isblank() โ€“ checks for a blank character; that is, a space or a tab.

Prerequisites:

  • Loops
  • Functions

Objective:

  • To understand the concept of
  • Functions

Inputs:

  • An ASCII character

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

Description:

  • get_nbits
    • If num is 10 and n is 2,
      10 -> 0 0 0 0 1 0 1 0
      Take 2 bits from LSB end of 10 (1 0) and return the corresponding decimal of that.
      So get_nbits(10, 2) function should return 2
  • replace_nbits
      1. Read number num from user.
      2. Read number n from user.
      3. Read number val from user
      4. Fetch n number of bits from LSB end of val and replace in the last n bits of num.
      5. Return new value of num.

    If num is 10 and n is 3 and val is 12
    10 -> 0 0 0 0 1 0 1 0
    โ€”โ€“
    12 -> 0 0 0 0 1 1 0 0
    โ€”โ€“
    The function should return 12 (1 1 0 0)

  • get_nbits_from_pos
      1. Read number num from user.
      2. Read number n from user.
      3. Read number pos from user.
      4. Fetch n number of bits from given position โ€˜posโ€™ (starting from LSB) of num and return the decimal value of it.

    If num is 12, n is 3 and pos is 4
    7 6 5 4 3 2 1 0
    โ€”โ€”โ€”โ€”โ€”โ€“
    12 -> 0 0 0 0 1 1 0 0
    โ€”โ€”โ€”โ€”โ€”โ€“
    The function should return 3 (0 1 1).

  • replace_nbits_from_pos
      1. Read number num from user.
      2. Read number n from user.
      3. Read number pos from user.
      4. Read number val from user.
      5. Fetch n number of bits from LSB of val.
      6. Place those fetched bits from pos positionth bit of num and return new value of num.

    If num is 12, n is 3, pos is 4 and val is 20
    7 6 5 4 3 2 1 0
    20 -> 0 0 0 1 0 1 0 0
    โ€”โ€”โ€”โ€”โ€”โ€“
    10 -> 0 0 0 0 1 1 0 0
    โ€”โ€”โ€”โ€”โ€”โ€“
    return value-> 0 0 0 1 0 0 0 0
    So function should return 16 (1 0 0 0 0).

  • toggle_bits_from_pos
      1. Read number num from user
      2. Read number n from user
      3. Read number pos from user
      4. Invert the n number of bits from pos positionth bit of num.
      5. Return the new value of num

    If num is 10, n is 3, and pos is
    7 6 5 4 3 2 1 0
    โ€”โ€”โ€”โ€”โ€”โ€”-
    10 -> 0 0 0 0 1 0 1 0
    โ€”โ€”โ€”โ€”โ€”โ€”
    return value -> 0 0 1 1 0 0 1 0
    So the function should return 50 (0 0 1 1 0 0 1 0)

  • print_bits
      1. Read number num from user.
      2. Read number n from user.
      3. Do error checking

    -> If n is greater than integer size, assign n value as sizeof integer.
    d. Print n number of bits of num from LSB end.
    If num is 10 and n is 12, then print last 12 bits of binary representation of 10.
    The output should be -> 0 0 0 0 0 0 0 0 1 0 1 0

Prerequisites:

  • Functions
  • Bitwise Operators

Objective:

  • To understand the concept of
  • Bitwise Operators

Inputs:

  • An integer N, No of bits B and Position P

Sample Execution / Output:

Test Case 1: 

Description:

  • Read number n from user.
  • Read number i from user.
  • Read number a from user(0 < a < 31)
  • Do error checking
  • Check a is within limit or not.
  • Read number b from user(a < b < 31)
  • Do error checking
  • Check b is within limit or not.
  • Call set_nbits_from_pos function by passing i, b โ€“ a + 1, b and n as arguments.
  • set_nbits_from_pos(i, b โ€“ a + 1, b, n);
  • Print the new value of i.
  • Prompt for continue option.

Prerequisites:

  • Loops
  • Bitwise Operators
  • Type Modifiers
  • Functions

Objective:

  • To understand the concept of
  •  Functions
  • Bitwise Operators

Inputs:

  • Integers N, I, A, B

Sample Execution / Output:

Test Case 1: 

Description:

  • Read a number num from user.
  • Read a number n from user.
  • Select the option among
    • Circular right shift
    • Circular left shift
  • Pass num and n to the corresponding functions.
  • Shift num, n times (either left or right, depends on function).
  • While shifting the shifted bits should get replaced at the alternate end.
    • For right shifting, the shifted bits should come at left most side.
    • For left shifting, the shifted bits should come at right most side.
  • Return the new number from the function.
  • Print the new number.
    Example:
    If num is 12, and n is 3, in circular_right_shift fuction
    12 -> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
    new number -> 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Prerequisites:

  • Loops
  • Bitwise Operators
  • Type Modifiers
  • Functions

Objective:

  • To understand the concept of
  •  Functions
  • Bitwise Operators

Inputs:

  • Integers N, S

Sample Execution / Output:

Test Case 1: 

Description:

  • In mathematics, the Fibonacci numbers or Fibonacci sequence are the numbers in the following integer sequence
    1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 . . .
    OR
    0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 . . .
  • By definition, the first two numbers in the Fibonacci sequence are either 1 and 1, or 0 and 1, depending on the chosen starting point of the sequence, and each subsequent number is the sum of the previous two.

Prerequisites:

  • Loops
  • Arithmetic Operators
  • Recursions

Objective:

  • To understand the concept of
  • Recursive Functions

Inputs:

  • Integers N

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: Positive Numbers

 

Test Case 3: Negative Number

 

Test Case 4: Negative Number

Description:
  • Read number n from user.
  • Validate the given number
  • Call main function from main for calculating factorial.
  • Prompt for continue option.

Prerequisites:

  • Storage Classes
  • Recursions

Objective:

  • To understand the concept of
  • Recursion and static keyword

Inputs:

  • Integers N

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

 

Test Case 3:

Description:

  • Read_int function should exactly behave like scanf(โ€œ%dโ€, &i)
  • Implement read_int fuction without using scanf function.

Prerequisites:

  • Functions
  • Pointers

Objective:

  • To understand the concept of
  • Functions and Pointers

Inputs:

  • An integer

Sample Execution / Output:

Test Case 1: 

Description:

  • Read the choice from user.
  • float or double
  • Read the fractional number from user.
  • Print the bits of the entered number.

Prerequisites:

  • Loops
  • Bitwise Operators
  • Type Casting
  • Functions
  • Pointers

Objective:

  • To understand the concept of
  • Type Casting
  •  Functions
  • Type casting on Pointers
  • IEEE Standard representation

Inputs:

  • A real number

Sample Execution / Output:

Test Case 1: 

Description:

In recreational mathematics, a magic square is an arrangement of distinct numbers (i.e. each number is used once), usually integers, in a square grid, where the numbers in each row, and in each column, and the numbers in the main and secondary diagonals, all add up to the same number

A magic square has the same number of rows as it has columns, and in conventional math notation, โ€œnโ€ stands for the number of rows (and columns) it has.

Thus, a magic square always contains n2 numbers, and its size (the number of rows [and columns] it has) is described as being โ€œof order nโ€.

Example: if n = 3, the magic square

6

81
375
492
  • Read an odd number n from user.
    • Do error checking.
    • Check the number is odd or not.
  • If not, continue step a.
  • Create an n X n matrix.
  • Insert 1 to (n * n) numbers into matrix.
  • Arrange the numbers in such a way that, adding the numbers in any direction, either row wise column wise or diagonal wise, should result in same answer.

Prerequisites:

  • Loops
  • Arrays
  • Pointers

Objective:

  • To understand the concept of
  • 2D Arrays
  • Pointers on 2d arrays

Inputs:

  • An integer N

Sample Execution / Output:

Test Case 1: 

Description:

  • Read number a from user.
  • Read number b from user.
  • Call a swap function by passing address of both a & b.
  • After swap function, a and b values should get swapped.
  • Prompt for continue option.

Prerequisites:

  • Functions
  • Pointers

Objective:

  • To understand the concept of
  • 2โ€™s Compliment and Bitwise Operators

Inputs:

  • 2 Integers N1 and N2

Sample Execution / Output:

Test Case 1: 

Description:

  • Pass a number โ€˜Nโ€™ from command line.
  • If no numbers are entered through command line, read from user.
  • Read the type of increment from user like menu drive.
    • post increment
    • pre increment
  • Call the corresponding functions
  • Return values of the functions should exactly behave as ++num and num++ operations
  • We should use ++ operator in this program.
  • With the help of bitwise operator we increment the given value.
  • Example: โ€“
    If num is 5,

    i = pre_increment(&num);
    printf(โ€œi = %d\n num = %d\nโ€, i, num);

    should print,
    i = 6, num = 6

    If num is 5,

    i = post_increment(&num);
    printf(โ€œi = %d\n num = %d\nโ€, i, num);

    should print,
    i = 5, num = 6

Prerequisites:

  • Bitwise operators
  • pointers

Objective:

  • To understand the concept of
  • To understand the concept of pre and post increment using bitwise

Inputs:

  • Integer N

Sample Execution / Output:

Test Case 1: 

Description:

  • Ist method
    • Read number n from user.
    • Read n numbers from user.
    • Calculate average of entered numbers and print it on the screen.
  • IInd method
      • Pass the numbers (for which average to be calculated) through command line.
      • Collect them in main
      • Calculate the average of them.

    Hint : Use atoi function to convert string to integers.

  • IIIrd method
      • Pass the numbers (for which average to be calculated) through environment variables.
      • Collect them in main
      • Calculate the average of them.

    Hint :
    Use atoi function to convert string to integers.
    Use strtok to split the strings.

    Example : From shell export a variable which contain numbers.
    export arr=โ€1 2 3 4โ€ณ

    In main program receive this by third argument of main. Extract numbers from string and calculate their average.

Prerequisites:

  • Main Prototypes
  • Arrays and Pointers

Objective:

  • To understand the concept of
    • Arrays and pointers

Inputs:

  • Array on N integers, N

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

 

Test Case 3: 

Description:

  • int getword(char *word)
    • Create a function named getword.
    • Function should read a string from user and store them in the char address.
    • Function should return the length of word.
  • int atoi(const char *s)
    • The function will recieve a string and covert the number stored in the string into exact integer number.
    • Return the number.
  • int itoa(int n, char *s)
    • Convert integer n into a string and store the string in s.
    • Return the length of string from the function.

Prerequisites:

  • Functions
  • Pointers

Objective:

  • To understand the concept of
  • Functions and Pointers

Inputs:

  • String, String and Integer

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

 

Test Case 3: 

 

Test Case 4: 

 

Test Case 5: 

 

Test Case 6: 

Description:

  • Read string1 and string2 from user
  • Provide the Display menu
    • string compare
    • string case compare
  • Call the corresponding function for example :- my_strcmp (string1, string2)
  • Should return integer number which indicates both string are equal or not

Prerequisites:

  • Strings
  • Pointers

Objective:

  • To understand the concept of
  • Strings functions

Inputs:

  • 2 Strings

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

Description:

  • Read string1 and string2 from user.
  • Call my_strtok (string1, string2);
  • Should treat string2 as delimitter in string1 and should return 1st field.
  • If you call again my_strtok (NULL, string2), it should return second field in string1 treating string2 as delimitter.

Prerequisites:

  • Storage Classes
  • Strings
  • Pointers

Objective:

  • To understand the concept of
  • Strings functions

Inputs:

  • 2 Strings

Sample Execution / Output:

Test Case 1: 

Description:

  • Check the memory assigning order of variables for checking whether little endian or big endian machine

    Little Endian:
    โ€”โ€”โ€”โ€”โ€“
    Say int i = 10; gets stored in memory at1000
    1001
    1002
    1003where 1000 contains LSB of i and 1003 contains MSB of i

    char *ptr = &i; the ptr will now contain 1000

    Big Endian:
    โ€”โ€”โ€”โ€“
    Say int i = 10; gets stored in memory at

    1000
    1001
    1002
    1003

    where 1000 contains MSB of i and 1003 contains LSB of i

    char *ptr = &i; the ptr will now contain 1000

    Fetch the values pointed by ptr for knowing whether they stored as little endian or big endian format.

Prerequisites:

  • Pointers

Objective:

  • To understand the concept of
  • Strings functions

Inputs:

  • 2 Strings

Sample Execution / Output:

Test Case 1: 

Description:

  • In probability theory and statistics, variance measures how far a set of numbers is spread out. A variance of zero indicates that all the values are identical. Variance is always non-negative: a small variance indicates that the data points tend to be very close to the mean (expected value) and hence to each other, while a high variance indicates that the data points are very spread out around the mean and from each other

Example:

x(input)D = X โ€“ MeanD2
9-11121
 12-864
 15-525
18-24
2000
2224
2339
24416
26636
3111121
Sum = 200 Sum=400
   
Mean = (sum of x) / size
where : size = Number of items in the input
Formula to calulate the variance:
sigma = (sum of D2) / size

Prerequisites:

  • Functions
  • Pointers
  • Static Arrays

Objective:

  • To understand the concept of
  • Functions and Pointers
  • Static Functions

Inputs:

  • Array of N Integers, N

Sample Execution / Output:

Test Case 1: 

Description:

  • Run a loop for printing the float elements in sorted order.
  • Read the float elements from user and store them into an array.

Prerequisites:

  • Functions
  • Arrays
  • Pointers

Objective:

  • To understand the concept of
  • Functions, Arrays, and Pointers

Inputs:

  • Array on N floats, N

Sample Execution / Output:

Test Case 1: 

Description:

  • Read the N name from the user
  • Sort it in alphabetical order

Prerequisites:

  • Functions
  • Static / Dynamic Arrays
  • Pointers

Objective:

  • To understand the concept of
  • Functions, Arrays, and Pointers

Inputs:

  • Array on N names, and Pointers

Sample Execution / Output:

Test Case 1: 

Description:

  • Input string:
    Pointers are sharp knives.
  • Output String:
    Pointers are sharp knives.

Prerequisites:

  • Functions
  • Pointers
  • Dynamic Arrays

Objective:

  • To understand the concept of
  • Functions, Arrays, and Pointers

Inputs:

  • String with multiple spaces between words

Sample Execution / Output:

Test Case 1: 

Description:

  • char *my_strstr(const char *haystack, const char *needle);
    • The my_strstr() function finds the first occurrence of the substring needle in the string haystack.
    • The terminating null bytes (โ€˜\0โ€™) are not compared.
  • Return Value:
    • These functions return a pointer to the beginning of the substring, or NULL if the substring is not found.

Prerequisites:

  • Functions
  • Pointers
  • Arrays

Objective:

  • To understand the concept of
  • Functions, Arrays, and Pointers

Inputs:

  • String (Haystack) and Substring (needle)

Sample Execution / Output:

Test Case 1: 

Description:

  • Read a string from user.
  • Without modifying that string, print it in reverse order.
  • Implement in both recursive and non-recursive methods.

Prerequisites:

  • Recursion

Objective:

  • To understand the concept of
  • Recursion

Inputs:

  • String

Sample Execution / Output:

Test Case 1: 

Description:

  • Read two strings s1 and s2 from user.
  • Remove the characters in s1 that matches with s2.
  • Input string:
    • string 1: Dennis Ritchie
    • string 2: Linux
  • Output String:
    • After squeeze s1: Des Rtche

Prerequisites:

  • Functions
  • Pointers
  • Arrays

Objective:

  • To understand the concept of
  •  Functions
  • Pointers & strings
  • Arrays

Inputs:

  • String 1 and String 2

Sample Execution / Output:

Test Case 1: 

Description:

  • Enter the number of elements to store in the array through the command line
  • Read the type of data to store
  • Enter the elements into the array.
  • Pass them to calc mean function
  • Should return mean value.

Prerequisites:

  • Functions
  • Void Pointers
  • Arrays

Objective:

  • To understand the concept of
  •  Functions
  • Void Pointers
  • Arrays

Inputs:

  • Array of N elements, No of elements N, Size Option T,

Sample Execution / Output:

Test Case 1: 

Description:

  • Read characters from user till EOF
  • If EOF received, print the character count, word count, and line count.

Prerequisites:

  • Non formated function like getchar()

Objective:

  • To understand the concept of
  • Standard output

Inputs:

  • A string with Ctrl-D

Sample Execution / Output:

Test Case 1: 

Description:

  • Take two file names through command line
  • Do error checking.
    • Check command line args
    • Check file open status
  • Open first file in read mode
  • Open second file in write mode
  • Copy first file contents into second file.

Prerequisites:

  • file operation functions like fopen, fgets etc

Objective:

  • To understand the concept of
  • File handling in C

Inputs:

  • Source File and a Destination File

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

Description:
  • Take an existing filename from user through command line
  • Do error checking.
    • If user passed any filename through command line or not.
    • If passed, check the fopen success or not.
  • Read Characters from file till EOF.
  • If EOF reached, print the word count.

Prerequisites:

  • file operation functions like fopen, fgets etc

Objective:

  • To understand the concept of
  • File handling in C

Inputs:

  • Source File

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

Description:

  • Receive file names through command line.
  • Do error checking.
    • cmd line args
    • fopen status
  • if cmd line args are ./a.out
    • then print stdin buffer contents into stdout buffer.
  • If cmd line args are ./a.out file1 file2
    • then print file1 and file2 contents to stdout.
  • If cmd line args are ./a.out file1 file2 file3
    • then print file1 and file2 contents into file3.
  • Use a common function for doing file copy.

Prerequisites:

  • file operation functions like fopen, fgets etc

Objective:

  • To understand the concept of
  • File handling in C

Inputs:

  • Source File, Destination File

Sample Execution / Output:

Test Case 1: 

 

Test Case 2: 

 

Test Case 3: 

Description:

  • Treat address of x and address of x + 1as characters address.
  • Both addresses difference will be sizeof x

Prerequisites:

  • Macros
  • Pointers

Objective:

  • To understand the concept of
  • Macros in preprocessing

Inputs:

  • None

Sample Execution / Output:

Test Case 1: 

Description:

  • Implement swap concept with the help of macro
  • The type of arguments to swap will be passed as t
  • swap (int, x, y) where x and y are of types int.

Prerequisites:

  • Macros

Objective:

  • To understand the concept of
  • Macros in preprocessing

Inputs:

  • Integers N1 and N2

Sample Execution / Output:

Test Case 1: 

Description:

  • Allocate 8 consecutive bytes in memory
  • Provide a display menu
    • Add element
    • Remove element
    • Display element
    • Exit from the program
  • It should allow to add elements of different data types which data type size is less than or equal to 8

Prerequisites:

  • Pointers
  • Dynamic memory allocation

Objective:

  • To understand the concept of
  • Dynamic memory allocation

Inputs:

  • Integers N1 and N2

Sample Execution / Output:

Test Case 1: 

Description:

  • Enter the length of array from command line.
  • Read the type of data to search
  • Initialise the array of mentioned type with variables read from user.
  • Read the key element to search
  • Sort the element in ascending order.
  • Return the position of element in the array.

Prerequisites:

  • Void pointer concepts
  • Function pointer concepts
  • Functions and arrays

Objective:

  • To understand the concept of
  • Function and void pointers

Inputs:

  • Array on N elements, N, Data type T, Element to be searched K

Sample Execution / Output:

Test Case 1: 

Description:

  • int my_scanf (const char *format, โ€ฆ);
    • The scanf() function reads input from stdin (the standard input stream).

    Return value

    • Upon successful return, these function return the number of input item successfully matched and assigned

Prerequisites:

  • Variadic Functions
  • Pointers

Objective:

  • To understand the concept of
  • Variadic Function

Inputs:

  • As passed to standard scanf() function

Sample Execution / Output:

Test Case 1: 

Description:

  • Tower of hanoi consists of three rods, and a number of disks of different sizes which can slide onto any rod. The puzzle starts with the disks in a neat stack in ascending order of size on one rod, the smallest at the top, thus making a conical shape.
  • The objective of the puzzle is to move the entire stack to another rod, obeying the following simple rules :
    • Only one disk can be moved at a time.
    • Each move consists of taking the upper disk from one of the stacks and placing it on top of another stack (i.e) a disk can only be moved if it is the uppermost disk on a stack.
    • No disk may be placed on top of a smaller disk.

Prerequisites:

  • Recursions

Objective:

  • To understand the concept of
  • Recursions

Inputs:

  • Number of disks N

Sample Execution / Output:

Test Case 1: 

Description:

  • Suppose k = 3 (say taking 3 distinct characters ).
    • Let 3 distinct characters be a , b, c.
  • Suppose โ€˜nโ€™ is the string length to be formed using โ€˜kโ€™ distinct words.
    • Let n be 6
  • The string should be formed in such a way that there should not be any consecutive repetitions of the strings.

Prerequisites:

  • Strings
  • Pointers
  • Arrays

Objective:

  • To understand the concept of
  • String manupulations

Inputs:

  • No of character C, Length of the string N and C disctint characters

Sample Execution / Output:

Test Case 1: