Upload
ravi-varma
View
55
Download
3
Embed Size (px)
Citation preview
Department of CSE & IT
Instructions for Computer Programming Lab
Pre-lab activities:
Prepare observation note book which contains the following :o Procedure/algorithm/program to solve the problems discussed in the
theory class o Solutions to the exercises given in the previous lab session
Refer the topics covered in theory class
In-lab activities:
Note down errors observed while executing program and remedy for that. Note down corrections made to the code during the lab session Answer to vivo-voce Get the observation corrected Note down inferences on the topic covered by the programs executed
Post-lab activities: Solve the given exercises Devise possible enhancements that can be made to the solved problem to
simplify the logic
Executed programs should be recorded in the lab record and corrected within one week after completion of the experiment.
After completion of every module, a test will be conducted, and assessment results will have weight in the final internal marks.
General Instructions: Student should sign in the log register before accessing the system. Student is only responsible for any damage caused to the equipment in the
laboratory during his session. Usage of pen drives is not allowed in the lab. If a problem is observed in any hardware equipment, please report to the lab
staff immediately; do no attempt to fix the problem yourself. Systems must be shut down properly before leaving the lab. Please be considerate of those around you, especially in terms of noise level.
While labs are a natural place for conversations regarding programming, kindly keep the volume turned down
C Programming Lab Manual 1
Department of CSE & IT
JAWAHARLAL NEHRU TECHNOLOGICAL UNIVERSITY KAKINADAC PROGRAMMING LAB Syllabus effective from 2010-11
Exercise lSolving problems such as temperature conversion, student grading, income tax calculation, etc., which expose students to use basic C operators
Exercise 22’s complement of a number is obtained by scanning it from right to left and complementing all the bits after the first appearance of a 1. Thus 2’s complement of 11100 is 00100. Write a C program to find the 2’s complement of a binary number.
Exercise 3a) Write a C program to find the sum of individual digits of a positive integer.b) A Fibonacci sequence is defined as follows: the first and second terms in the sequence are 0 and 1. Subsequent terms are found by adding the preceding two terms in the sequence. Write a C program to generate the first n terms of the sequence.c) Write a C program to generate all the prime numbers between 1 and n, where n is a value supplied by the user.d) Write a program which checks a given integer is Fibonacci number or not.
Exercise 4a) Write a C program to calculate the following Sum: Sum=1-x2/2! +x4/4!-x6/6!+x8/8!-x10/10!b) Write a C program to find the roots of a quadratic equation.
Exercise 5a) The total distance travelled by vehicle in ‘t’ seconds is given by distance = ut+1/2at 2 where ‘u’ and ‘a’ are the initial velocity (m/sec.) and acceleration (m/sec2). Write C program to find the distance travelled at regular intervals of time given the values of ‘u’ and ‘a’. The program should provide the flexibility to the user to select his own time intervals and repeat the calculations for different values of ‘u’ and ‘a’.b) Write a C program, which takes two integer operands and one operator form the user, performs the operation and then prints the result. (Consider the operators +,- ,*, /, % and use Switch Statement)
Exercise 6a) Simple programming examples to manipulate strings.b) Verifying a string for its palindrome property
Exercise 7Write a C program that uses functions to perform the following operations:i. To insert a sub-string in to given main string from a given position.ii. To delete n Characters from a given position in a given string.iii. To replace a character of string either from beginning or ending or at a specified location
Exercise 8Write a C program that uses functions to perform the following operations using Structure:i) Reading a complex number ii) Writing a complex numberiii) Addition of two complex numbers iv) Multiplication of two complex numbers
Exercise 9
C Programming Lab Manual 2
Department of CSE & IT
a) Addition of Two Matrices b) Calculating transpose of a matrix in-place manner.c) Matrix multiplication by checking compatibility
Exercise 10a) Write C programs that use both recursive and non-recursive functions for the followingi) To find the factorial of a given integer.ii) To find the GCD (greatest common divisor) of two given integers.iii) To solve Towers of Hanoi problem.
Exercise 11a) Write a C functions to find both the largest and smallest number of an array of integers.b) Write a C function that uses functions to perform the following:i) that displays the position/ index in the string S where the string T begins, or –1 if S doesn’t contain T.ii) to count the lines, words and characters in a given text.
Exercise 12a) Write a C function to generate Pascal’s triangle.b) Write a C function to construct a pyramid of numbers.
Exercise 13Write a C function to read in two numbers, x and n, and then compute the sum ofthis geometric progression: 1+x+x2+x3+………….+xn
Write a C function to read in two numbers, x and n(no. of terms), and then compute sin(x) and cos(x).
Exercise 14a. Pointer based function to exchange value of two integers using passing by address.b. Program which explains the use of dynamic arrays.c. Program to enlighten dangling memory problem (Creating a 2-D array dynamically using pointer to pointers approach.
Exercise 15Examples which explores the use of structures, union and other user defined variables
Exercise 16a) Write a C program which copies one file to another.b) Write a C program to reverse the first n characters in a file. (Note: The file name and n are specified on the command line)
***
C Programming Lab Manual 3
Department of CSE & IT
Exercise 1
1. Temperature conversion
a) Centigrade to Fahrenheit
Input: temp in 0c
Output: temp in F
Step 1: Start
Step 2: read temperature in centigrade
Step 3: fc 9/5 +32
Step 4: print result
Step 5: end
b) Fahrenheit to centigrade
Input: temp in F
Output: temp in 0c
Step 1: Start
Step 2: read temperature in Fahrenheit
Step 3: cf-32 5/9
Step 4: print result
Step 5: end
2. Student Grading
Input: marks in 6 subjects
Output: grade
Step 1: Start
Step 2: read marks in six subjects
Step 3: compute total
Step 4: compute average
Step 5: check if average > 75
Step 6: print grade as A
Step 7: else if average is <75 and >60
Step 8: print grade as B
Step 9: else if average is <60 and >35
Step 10: print grade as C
Step 11: else print result as fail
Step 12: end
C Programming Lab Manual 4
Department of CSE & IT
3. Income tax ( no tax upto 1.6 lakh, 10% upto 5 lakh, 20% for 5 to 8 lakh, 30% for
above 8 lakh)
Input : annual income (ai) , non taxable amount (nta) = 1,60,000-00
Output: tax amount
Step 1: start
Step 2: read annual income or monthly income
Step 3: check if ai < nta
Step 4: print tax is 0
Step 5: else if annual income is in between nta and 5 lakh
Step 6: tax (ai – nta) * 10/100
Step 7: else if annual income > 5 lakh and less than 8 lakh
Step 8: tax(5 lakh-nta)*10/100 + (ai-5 lakh)*20/100
Step 9: else if annual income > 5 lakh and less than 8 lakh
Step 10: tax(5 lakh-nta)*10/100 + (3 lakh)*20/100 + (ai- 8 lakh)*30/100
Step 11: print tax
Step 12: end
Exercise 2
2’s complement of a given binary number
Input: char st[20]; integer i, j
Output:
Step 1: Start
Step 2: read binary no as string in to st
Step 3: repeat steps 4, 5 and 6 until i from (string length of st -1) to 0
Step 4: check if st[i] equal to ‘1’
Step 5: j i
Step 6: break
Step 7: repeat steps 8 to 11 until j from j-1 to 0
Step 8: check if st[j] equal to ‘1’
Step 9: st[j] ’0’
Step 10: else
Step 11: st[i] ’1’
Step 12: print result string st
Step 13: Stop
C Programming Lab Manual 5
Department of CSE & IT
Exercise 3
a) Program to find sum of individual digits of a positive integer
Algorithm: /* Sum_of_Digits */
Input: integer n
Output: sum of individual digits of ‘n’
Step 1: Start
Step 2: read n, s 0
Step 3: if n < 0 goto step 2
Step 4: repeat steps 5, 6 and 7 until n >0
Step 5: r n mod10
Step 6: sum sum + r
Step 7: n n/10
Step 8: print sum
Step 9: stop
b) Program to print fibonacci sequence up to given n terms.
Algorithm: /* Fibonacci_serieas */
Input: - integer n
Output: Fibonacci series upto n terms
Step 1: Start
Step 2: read n, f1 0 and f2 1
Step 3: print f1 and f2
Step 4: repeat steps 5 to 9 until n>0
Step 5: new_term f1 + f2
Step 6: print new_term
Step 7: f1 f2
Step 8: f2 new_term
Step 9: n n-1
Step 10: Stop
c) Program to print all prime numbers from 1 to given range n.
Input: integer n
Output: prime numbers upto given range n
Step 1: Start
Step 2: read n
Step 3: repeat steps 4 to 10 for i : 0 to n
C Programming Lab Manual 6
Department of CSE & IT
Step 4: flag 0
Step 5: repeat steps 6 to 8 for j: 2 to i/2
Step 6: if i mod j equals to 0
Step 7: flag 1
Step 8: break;
Step 9: if flag equal to 0
Step 10: print i
Step 11: Stop
d) Write a program which checks a given integer is Fibonacci number or not .
Input: any integer number
Output:
Step 1: Start
Ste 2: read n
Step 3: read n, f1 0 and f2 1 ntf1+f2, flag 0
Step 4: repeat steps 5 to 7 until nt < n
Step 5: check if nt equal to n
Step 6: flag1, break
Step 7: else f1f2, f2nt, ntf1+f2
Step 8: check if flag equal to 1
Step 9: print ‘given no is Fibonacci number’
Step 10: else print ‘not Fibonacci number’
Step 11: end
Exercise 4
a) To Calculate the following sum, Sum = 1-x2/2!+ x4/4!- x6/6!+ x8/8!- x10/10!
Input: integer x
Output: sum of the series
Step 1: Start
Step 2: read x, sum 1, s 1, i 2, j 0
Step 3: repeat steps 4 to 9 for i: form 2 to 10 in steps of 2
Step 4: p 1, f 1
Step 5: repeat steps 6 and 7 for j: from 1 to i
Step 6: p p * x
C Programming Lab Manual 7
Department of CSE & IT
Step 7: f f * j
Step 8: s s * (-1)
Step 9: sum sum + s * (p / f)
Step 10: print sum
Step 11: Stop
b) To find roots of quadratic equation
Input: integer a, b, c
Output: Roots of quadratic equation root1 and root 2
Step 1: Start
Step 2: read a, b, c
Step 3: d b * b-(4 * a * c)
Step 4: if d>0 perform steps 5, 6 and 7 else go to step 8
Step 5: root1 (-b+sqrt(d))/(2*a)
Step 6: root2 (-b-sqrt(d))/(2*a)
Step 7: print root1, root2
Step 8: check if d = 0 do steps 9 & 10 else goto step 11
Step 9: root1root2 -b/(2*a)
Step 10: print root1, root2
Step 11: print ‘roots are imaginary’
Step 12: Stop
Exercise 5
a) The total distance traveled by vehicle in ‘t’ seconds is given by d=ut+0.5at2. Write a C
program to find the distance traveled in regular intervals of time for different values of
u & t.
Input: integer u, a, interval, no_of_intervals
Output: Distance traveled at regular intervals
Step 1: Start
Step 2: ch ’y’
Step 3: repeat steps 4 to 10 until ch != ’n’
Step 4: read u, a, interval, no_of_intervals
Step 5: t 0
Step 6: repeat steps 7, 8 and 9 for i: from 1 to no_of_intervals
C Programming Lab Manual 8
Department of CSE & IT
Step 7: t t + interval
Step 8: d u* t+ 0.5* a * t * t
Step 9: print ‘distance traveled= d’
Step 10: read ch (i.e., y [yes] or n [no])
Step 11: Stop
b) Write a c program, which takes two integer operands and one operator from the
user, performs the operation and then prints the result.
Input: integer a, b & operator
Output: Result based on operator
Step 1: Start
Step 2: read two integers a, b and the operator
Step 3: if operator is ’+’ goto step 8
Step 4: if operator is ’-’ goto step 9
Step 5: if operator is ’*’ goto step10
Step 6: if operator is ’/’ goto step 11
Step 7: if operator is ’%’ goto step 12
Step 8: print result of a+b
Step 9: print result of a-b
Step 10: print result of a*b
Step 11: print result of a/b
Step 12: print result of a%b
Step 13: Stop
Exercise 6
a) Simple programming examples to manipulate strings.
/* strlen, strcpy, strrev, strcat*/
Input : st1, st2
Output:
Step 1: Start
Step 2: read st1, st2, ch
Step 3: switch ch
Step 4: if ch equal to 1
Step 5: repeat step 6 until st1[i] not equal to NULL
Step 6: increment count
C Programming Lab Manual 9
Department of CSE & IT
Step 7: print ‘count’
Else if ch is equal to 2
Step 8: repeat step 9 until st1[i] not equal to NULL
Step 9: rs st1[i]
Step 10: print ‘rs’
Else if ch is equal to 3
Step 11: repeat step 12 & 13 until j from string length to 0
Step 12: re[i]st1[j]
Step 13: i+1, j-1
Step 14: print ‘rs’
Else if ch is equal to 4
Step 15: repeat step 16 until st2[i] not equal to NULL
Step 16: st1[strlen(st1)+i)st2[i]
Step 17: print ‘st1’
Step 18: Stop
b) Write a C program to check whether the given string is palindrome or not.
Input: char st[20], chk0
Output:
Step 1: Start
Step 2: read string st
Step 3: repeat step 4 until st[i] not equal to null
Step 4: len len + 1
Step 4: repeat steps 5, 6 for i: form 0 to len/2
Step 5: check if st[i] st[len-i]
Step 6: chk1
Step 7: check if chk equal to 0
Step 8: print ‘given string is palindrome’
else
Step 9: print ‘given string is not palindrome’
Step 10: end
Exercise 7
C Programming Lab Manual 10
Department of CSE & IT
Write a c program that uses functions to perform the following operations
i) To insert a sub-string into given main string form a given position
ii) To delete n char form a given position in a given string
iii) To replace a character of string either from beginning or ending or at a specified location
Input: char choice, st1[20], st2[20] ; integer l1, l2
Output: modified string
Step 1: Start
Step 2: read choice
Step 3: switch choice
Step 4: case 1
read st1, st2, pos
l1call sub-routine st_len(st1)
l2 call sub-routine st_len(st2)
call sub-routine insert_string(st1, st2, l1, l2)
Step 5: case 2
read st1, pos, n
l1 call sub-routine stlen(st1)
call sub-routine del_n_chars(st1, pos, n)
Step 6: case 3
read st1, chat_to_replace , char_to_replaceby
call sub-routine replace_char(st1, ch_re, ch_re_by)
Step 7: Stop
Algorithm for sub routine st_len(char st[])
Step 1: begin
Step 2: len0
Step 3: repeat step 4 until st[i] not equal to null
Step 4: len len + 1
Step 5: return len
Step 6: end
Algorithm for sub routine insert_string(char st1[], char st2[], int l1, int l2)
Step 1: begin
Step 2: repeat step 3 for i: form l1+l2-1 to pos
C Programming Lab Manual 11
Department of CSE & IT
Step 3: st1[i]st1[i-l2]
Step 4: repeat step 5 for i: from 0 to l2
Step 5: st1[i+pos-1] st2[i]
Step 6: st1[l1+l2] ‘\0’
Step 7: print result string st1
Step 8: end
Algorithm for sub routine del_n_chars(char st1[], int pos, int n)
Step 1: begin
Step 2: repeat step 3 for i from pos-1 to null
Step 3: st1[i]st1[i+n]
Step 4: st[i] ‘\0’
Step 5: print result string st1
Step 6: end
Algorithm for sub routine replace_char(char st1[], char ch_re, char ch_re_by)
Step 1: begin
Step 2: switch choice 1. From begin 2. From end 3. From location
Step 3: case 1
Loop until st1[i] not equal to NULL
check if st1[i] equal to ch_re
st1[i]ch_re_by
Step 4: case 2
Loop until st1[i] from strlen of st1 to 0
check if st1[i] equal to ch_re
st1[i]ch_re_by
Step 5: case 3
read pos
Loop until st1[i] from pos to strlen of st1
check if st1[i] equal to ch_re
st1[i]ch_re_by
Step 6: print st1
Step 7: end
Exercise 8
C Programming Lab Manual 12
Department of CSE & IT
Write a C Program that uses functions to perform the following operations using
Structure:
i) Reading a complex number
ii) Writing a complex number
iii) Addition of two complex numbers
iv) Multiplication of two complex numbers
Input: struct complex_number {float real, float img}
Output: result of chosen operation
Step 1: Start
Step 1: declare struct complex z1 with members as real, and imag
Step 5: for reading call sub-routine read_com(z1) and read_com(z2)
Step 6: for writing a complex number call sub-routine write_com(z1)
Step 7: addition of two complex numbers call sub-routine add_com()
Step 8: multiplication of two complex numbers call sub-routine mul_com()
Step 9: print result
Step 10: Stop
Algorithm for sub routine read_com()
Step 1: begin
Step 2: read z1.real
Step 3: read z1.imag
Step 4: end
Algorithm for sub routine write_com()
Step 1: begin
Step 2: print z1.real ‘+i’ z1.imag
Step 3: end
Algorithm for sub routine add_com()
Step 1: begin
Step 2: z3.realz1.real + z2.real
Step 3: z3.imag z1.imag + z2.imag
Step 4: end
Algorithm for sub routine mul_com()
Step 1: begin
Step 2: z3.real (z1.real*z2.real) – (z1.imag*z2.imag)
C Programming Lab Manual 13
Department of CSE & IT
Step 3: z3.imag (z1.real * z2.imag) + (z1.imag * z2.real)
Step 4: end
Exercise 9
a) Addition of Two Matrices
Input: integer r1, c1, r2, c2, a[10][10], b[10][10]
Output:
Step 1: Start
Step 2: read order of matrix a into r1, c1
Step 3: read order of matrix b into r2, c2
Step 4: call sub-routine mat_read (a,r1,c1)
Step 5: call sub-routine mat_read (b,r1,c1)
Step 6: check if r1 r2 and c1 c2
Step7: print ‘addition not possible’ go to step 10
Step8: else call sub-routine mat_add(a, b, d, r1, c1)
Step9: call sub-routine mat_print(d,r1,c1)
Step 10: Stop
Algorithm for sub routine mat_read(int rm[], int r, int c)
Step 1: begin
Step 2: repeat steps 3, 4 for i: from 1to r
Step 3: repeat step 4 for j: from 1 to c
Step 4: read rm[i][j]
Step 5: end
Algorithm for sub routine mat_add(int a[][], int b[][], int d[][], int r1, int c1)
Step 1: begin
Step 2: repeat steps 3, 4 for i: from 1 to r1
Step 3: repeat step 4 for j: form 1 to c1
Step 4: d[i][j]a[i][j] + b[i][j]
Step 5: end
Algorithm for sub routine mat_print(int pm[][], int r1, int c1)
Step 1: begin
Step 2: repeat steps 3 to 5 for i: from 1 to r
Step 3: repeat step 4 for j: form 1 to c
C Programming Lab Manual 14
Department of CSE & IT
Step 4: print pm[i][j]
Step 5: print ‘ ‘
Step 6: end
b) Calculating transpose of a matrix in-place manner.
Input: integer r1, c1, a[10][10]
Output:
Step 1: Start
Step 2: read order of matrix a into r1, c1
Step 3: call sub-routine mat_read (a,r1,c1)
Step 4: call sub-routine mat_tran(a, b, d, r1, c1)
Step 5: call sub-routine mat_print(d,r1,c1)
Step 6: Stop
Algorithm for sub routine mat_read(int rm[], int r, int c)
Step 1: begin
Step 2: repeat steps 3, 4 for i: from 1to r
Step 3: repeat step 4 for j: from 1 to c
Step 4: read rm[i][j]
Step 5: end
Algorithm for sub routine mat_tran(int a[][], int r1,int c1)
Step 1: begin
Step 2: repeat steps 3 to 5 for i: from 1 to r1
Step 3: repeat steps 4 & 5 for j: from 1 to c2
Step 4: check if i<j
Step 5: swap a[i][j] with a[j][i]
Step 6: end
Algorithm for sub routine mat_print(int pm[][], int r1, int c1)
Step 1: begin
Step 2: repeat steps 3 to 5 for i: from 1 to r
Step 3: repeat step 4 for j: form 1 to c
Step 4: print pm[i][j]
Step 5: print ‘ ‘
Step 6: end
C Programming Lab Manual 15
Department of CSE & IT
c) Matrix multiplication by checking compatibility
Input: integer r1, c1, r2, c2, a[10][10], b[10][10]
Output:
Step 1: Start
Step 2: read order of matrix a into r1, c1
Step 3: read order of matrix b into r2, c2
Step 4: call sub-routine mat_read (a,r1,c1)
Step 5: call sub-routine mat_read (b,r1,c1)
Step 6: check if c1 r2
Step 7: print ‘multiplication not possible’ goto step 11
Step 8: else
Step 9: call sub-routine mat_multi(a, b, c, r1, c1, r2, c2)
Step 10: call sub-routine mat_print(c,r1,c2)
Step 11: Stop
Algorithm for sub routine mat_read(int rm[], int r, int c)
Step 1: begin
Step 2: repeat steps 3, 4 for i: from 1to r
Step 3: repeat step 4 for j: from 1 to c
Step 4: read rm[i][j]
Step 5: end
Algorithm for sub routine mat_multi(int a[][],int b[][],int c[][], int r1,int c1,int r2,int c2)
Step 1: begin
Step 2: repeat steps 3 to 6 for i: from 1 to r1
Step 3: repeat steps 4 to 6 for j: from 1 to c2
Step 4: c[i][j]0
Step 5: repeat step 6 for k: from 1 to c1
Step 6: c[i][j] c[i][j] + a[i][k] * b[k][j]
Step 7: end
Algorithm for sub routine mat_print(int pm[][], int r1, int c1)
Step 1: begin
Step 2: repeat steps 3 to 5 for i: from 1 to r
Step 3: repeat step 4 for j: form 1 to c
Step 4: print pm[i][j]
Step 5: print ‘ ‘
C Programming Lab Manual 16
Department of CSE & IT
Step 6: end
Exercise 10
a) To find factorial of given number using both recursive and non-recursive functions.
Algorithm: /* factorial_recursive & non-recursive */
Input: integer n
Output: factorial of given number
Step 1: Start
Step 2: read n
Step 3: factorial call sub-routine fact(n)
Step 4: print factorial
Step 5: factorial call sub-routine fact_rec(n)
Step 6: print factorial
Step 7: Stop
Algorithm for sub-routine fact(int n)
Step 1: begin
Step 2: f 1, i 1
Step 3: repeat step 4 for i: from 1 to n
Step 4: f f * i
Step 5: return f
Step 6: end
Algorithm for sub routine fact_rec(int n)
Step 1: begin
Step 2: f 1
Step 3: if n equal to 0 go to step 4 else go to step 5
Step 4: return 1
Step 5: f n* fact_rec(n-1)
Step 6: return f
Step 7: end
b) To find GCD of given two numbers using both recursive and non-recursive functions.
Algorithm: /* GCD_recursive & non-recursive */
Input: integer a, b
Output: GCD of a, b
C Programming Lab Manual 17
Department of CSE & IT
Step 1: Start
Step 2: read a, b
Step 3: call sub routine gcd_non_rec(a, b)
Step 4: print GCD
Step 5: call sub routine gcd_rec (a, b)
Step 6: print GCD
Step 7: Stop
Algorithm for Sub Routine gcd_non_rec(int a, int b)
Step 1: begin
Step 2: check if a < b then
Step 3: swap a,b values
Step 4: repeat steps 5 to 9 until b not equals 0
Step 5: ca mod b
Step 6: if c equals to 0
Step 7: return b
Step 8: ab
Step 9: bc
Step 10: end
Algorithm for Sub Routine gcd_rec(int a, int b)
Step 1: begin
Step 2: check if b equal to 0
Step 3: return a
Step 4: else
Step 5: call sub-routine gcd_rec(b, a mod b)
Step 6: end
c) Towers of Hanoi problem using both recursive and non-recursive functions.
Algorithm: /* Towers of Hanoi_recursive */
Input: integer n
Output:
Step 1: Start
Step 2: read n
Step 3: call sub-routine toh(n)
Step 4: Stop
C Programming Lab Manual 18
Department of CSE & IT
Algorithm for sub routine toh(int n)
Step 1: begin
Step 2: check if n equals to 1 return
Step 3: Move disk from source to dest
Step 4: else
Step 5: call sub routine toh(n-1, source , aux, dest)
Step 6: Move disk from source to dest
Step 7: call sub routine toh (n-1, aux, dest, source)
Step 8: end
Exercise 11
a) Write a C functions to find both the largest and smallest number of an array of integers.Input: integer n
Output: largest = max, smallest = small
Step 1: Start
Step 2: read n
Step 3: repeat step 4 for i : 0 to n
Step 4: read a[i]
Step 5: maxa[0], smalla[0]
Step 6: repeat steps 7 to 10 for i: from 1 to n
Step 7: check if a[i] > max
Step 8: max a[i]
Step 9: check if a[i] < small
Step 10: small a[i]
Step 11: print max and small
Step 12: Stop
b) Write a C function that uses functions to perform the following:i) displays the position/ index in the string S where the string T begins, or –1 if S doesn’t
contain T.
Input: char st1[20], st2[20]; integer len, res
Output:
Step 1: Start
Step 2: read string st1 and st2, res -1
C Programming Lab Manual 19
Department of CSE & IT
Step 3: len call sub-routine st_len(st2)
Step 4: res call sub-routine st_chk_index(st1, st2, len)
Step 5: check if res equal to -1
Step 6: print ‘String not found’
else
Step 7: print ‘String found at position’
Step 8: Stop
Algorithm for sub routine st_len(char st[])
Step 1: begin
Step 2: len0
Step 3: repeat step 4 until st[i] not equal to null
Step 4: len len + 1
Step 5: return len
Step 6: end
Algorithm for sub routine st_chk_index(char st1[], char st2[], int len)
Step 1: begin
Step 2: repeat steps 3 to 9 for i from 0 to length of st1
Step 3: check if st1[i] equal to st2[0]
Step 4: n 0
Step 5: repeat steps 6, 7 for j form 0 to length of st2
Step 6: check if st[i+j] equal to st2[j]
Step 7: n n+1
Step 8: check if n equal to len
Step 9: return(i+1)
Step 10: return -1
Step 11: end
ii) to count the lines, words and characters in a given text.
Input: chat st[100]
Output:
Step 1: Start
Step 2: c 0, w 1, ln 0, i0
Step 3: repeat steps 4, 5 until escape
Step 4: read st[i]
C Programming Lab Manual 20
Department of CSE & IT
Step 5: i+1
Step 6: repeat steps 7 to 13 until i from 0 to length of string st
Step 7: check if st[i] >=65 and st[i] <=90 or st[i] >=97 and st[i]<=122
Step 8: c+ 1
Step 9 else
Step 10: check if st[i] equal to 32 and st[i+1] 32
Step 11: w+ 1
Step 12: check if st[i] equal to 13
Step 13: ln+1
Step 14: print result no_of_char = c, no_of_lines = ln, no_of_words = w + ln-1
Step 15: Stop
Exercise 12
a) Write a C function to generate Pascal’s Triangle.
Input: integer n
Output:
Step 1: Start
Step 2: read n (no of rows), bin1
Step 3: repeat steps 4 to 11for i: from 0 to n
Step 4: repeat step 5 until k 0 to 20-i*3
Step 5: print space
Step 6: repeat steps 7 to 11 for j: from 0 to i
Step 7: check if i equal to 0 or j equal to 0
Step 8: bin1
Step 9: else
Step 10: bin (bin*(i-j+1))/j
Step 11: print bin
Step 12: Stop
b) Write a C function to construct a pyramid of numbers.
Input: integer n
Output:
Step 1: Start
Step 2: read n, static x1
C Programming Lab Manual 21
Department of CSE & IT
Step 3: repeat steps 4 to 8 until i < n
Step 4: repeat step 5 for k: 0 to 20-i*3
Step 5: print space
Step 6: repeat steps 7,8 for j: from 0 to i
Step 7: print x
Step 8: x x + 1
Step 9: Stop
Exercise 13
a) Write a C function to read in two numbers, x and n, and then compute the sum ofthis geometric progression: 1+x+x2+x3+………….+xn
Input: integer x, n
Output:
Step 1: Start
Step 2: read x and n, p0
Step 3: check if n less than 0
Step 4: print error message and goto step 2
Step 5: else
Step 6: sum1
Step 7: repeat step 8 to 10 for i: from 1 to n
Step 8: repeat step 9 for j: from 1 to i
Step 9: p p*x
Step 10: sum sum + p
Step 11: print x, n, sum
Step 12: Stop
b) Write a C function to read in two numbers, x and n(no. of terms), and then compute
sin(x) and cos(x).
sin(x) = x - x3/3! + x5/5! – x7/7! + . . . .
Step 1: Start
Step 2: read n, x
Step 3: sum x, pt x
Step 4: repeat steps 5 to 8 until i < n
Step 5: nt pt * (x*x) / (2*i)(2*i+1)
C Programming Lab Manual 22
Department of CSE & IT
Step 6: sum + sign * nt
Step 7: pt nt
Step 8: sign *= -1
Step 9: print sum of sin series
Step 10: Stop
cos(x) = 1 – x2/2! + x4/4! – x6/6! + . . . .
Step 1: Start
Step 2: read n, x
Step 3: sum1, pt1
Step 4: repeat steps 5 to 8 until i < n
Step 5: nt pt * (x*x) / (2*i-1)(2*i)
Step 6: sum + sign * nt
Step 7: pt nt
Step 8: sign *= -1
Step 9: print sum of cos series
Step 10: Stop
Exercise 14
a. Pointer based function to exchange value of two integers using passing by address.Step 1: Start
Step 2: read a,b
Step 3: print ‘ a, b values ’ i.e., before swaping
Step 4: call sub-routine swap(&a, &b)
Step 5: print ‘ a,b values’ i.e., after swaping
Step 6: Stop
Algorithm for swap(int *a, int *b)
Step 1: Begin
Step 2: temp *a, *a *b, *b temp
Step 3: end
b. Program which explains the use of dynamic arrays.Step 1: Start
Step 2: read n (no of elements), int *ar
C Programming Lab Manual 23
Department of CSE & IT
Step 3: ar malloc(sizeof (int ) * n)
Step 4: repeat step 5 until i < n
Step 5: read array element
Step 6: repeat step 6 until i < n
Step 7: print array element
Step 8: free memory
Step 9: Stop
c. Program to enlighten dangling memory problem (Creating a 2-D array dynamically using pointer to pointers approach.
Step 1: Start
Step 2: read n (no of elements), int **ar, x, y
Step 3: ar malloc( x * sizeof (int ))
Step 4: repeat step 5 until i < x
Step 5: ar[i] malloc (y * sizeof(int*))
Step 6: loop: for i from 0 to x
loop: for j from 0 to y
Step 7: read array element
Step 8: loop: for i from 0 to x
loop: for j from 0 to y
Step 9: print array element
Step 10: free memory
Step 11: Stop
Exercise 15
Examples which explores the use of structures, union and other user defined variablesa) Write a c program to store student details like regd no, name, marks in 3 subjects for n number of students.Input:
Output:
Step 1: Start
Step 2: declare structure student
Step 3: loop; for i from 0 to n
Step 4: read rno, name, marks in 3 sub’s
Step 5: loop: for i from 0 to n
Step 6: print student details
C Programming Lab Manual 24
Department of CSE & IT
Step 7: Stop
b) write a C program explores the use of union.
Input:
Output:
Step 1: Start
Step 2: declare union
Step 3: read an union element
Step 4: print union element
Step 5: Stop
Exercise 16
a) Write a program which copies one file to another
Step 1: Start
Step 2: declare File pointers *fp1, *fp2
Step 3: read filename for source
Step 4: fp1fopen(source,”w”)
Step 5: check if fp1 equal to NULL
Step 6: print file not opened, go to step 26
Step 7: else
Step 8: repeat steps 9, 10 char != 27 (ASCII value 27 for ESC key)
Step 9: read char
Step 10: fputc(ch, fp1)
Step 11: close file pointer(fp1)
Step 12: read filename for destination
Step 13: fp1fopen(source, “r”)
Step 14: check if fp1 equal to NULL
Step 15: print file not found, go to step 26
Step 16: else
Step 17: fp2fopen(destination,”w”)
Step 18: check if fp2 equal to NULL
Step 19: print file not open go to step 26
Step 20: else
Step 21: repeat steps 15, 16 until fp1!= EOF
C Programming Lab Manual 25
Department of CSE & IT
Step 22: ch fgetc(fp1)
Step 23: fputc(ch, fp2)
Step 24: close file pointer fp1
Step 25: close file pointer fp2
Step 26: Stop
b) Write a C program to reverse first n chars in a file.
Step 1: Start (no of arguments, arguments values)
Step 2: declare file pointer *fp
Step 3: fp fopen (argv[1],”r+”)
Step 4: Check if fp equal to NULL
Step 5: print file not found
Step 6: else
Step 7: nargv[2]
Step 8: repeat step 9 for i: from 0 to n
Step 9: st[i]fgetc(fp)
Step 10: st[i]null
Step 11: strrev(st)
Step 12: rewind(fp);
Step 13: fwrite(st,1,n,fp)
Step 14: close file pointer fp
Step 15: Stop
Appendix A - Assignment Problems
Task Sheet-I 1) Write a program to illustrate bitwise operators.
2) Write a program to print all the alphabets and their equivalent ASCII values.
3) Write a program to calculate the sum of squares of first n natural numbers using while
loop.
4) Write a program to print the multiplication table in the following format.
C Programming Lab Manual 26
Department of CSE & IT
1 2 3 4 5
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
5 5 10 15 20 25
5) Write a program to calculate sum of squares of cubes of first n natural numbers.
6) Write a program to reverse the given number.
7) Write a program to calculate mn value using do-while loop.
8) Write a program to check whether the given number is a palindrome or not.
9) Write a program to check whether the given number is an Armstrong number or not.
10) Write a program to check whether the given number is a perfect number or not.
Task Sheet-II
1) Write a program to print the elements of an array in reverse order.
2) Write a program to add all the elements of a two dimensional array.
3) Write a program to find the transpose of a given matrix.
4) Write a program to find the smallest and largest element in a two dimensional array.
5) Write a program to copy string to another without using string handling functions.
6) Write a program to check whether a given string is a palindrome or not.
7) Write a function to find the largest element in an array.
8) Write a recursive function power (base, exponent) that when invoked returns base
exponent.
9) Program to sort the characters in a given string.
10) Write a function to convert all the upper case letters to lower case and lower case
letters to upper case in a given string.
Task Sheet-III
1) Write a program to calculate length of the string using pointers.
2) Write a function to swap two variables using pointers.
3) Program to illustrate pointer arithmetic.
4) Write a function to calculate sum of two numbers using pointers to functions.
5) Write a program to perform matrix multiplication using pointers.
C Programming Lab Manual 27
Department of CSE & IT
6) Write a program to find the largest in an array using pointers.
7) Program to arrange the given numbers in ascending order.
8) Write a C program using pointer for string comparison.
9) Program to reverse the string using pointers.
10 The names of employees of an organization are stored in three arrays, namely, first
name, second name, and last name. Write a program using pointers to concatenate the
three parts into one string to be called name.
Task Sheet-IV
1) Write a C program to compute the monthly pay of 100 employees using each employee’s
name, basic-pay. The DA is computed as 52% of the basic pay. Gross-salary (Basic-
pay+DA).Print the employees name and gross salary.
2) Write a program to calculate and print student wise total for 50 students and 3 subjects.
The structure should contain 3 subjects and total.
3) Write a program to calculate and print student wise total for 50 students and 3 subjects
using pointers. The structure should contain 3 subjects.
4) Program for illustration of user defined data types using typedef.
5) Program for illustration of nested structures.
6) Program to add or delete a record of a particular employee based on his code. The
structure should contain name, designation, code, salary. Program should also provide
the flexibility to update any employees record.
7) A company markets Hardware items. Create a structure “hwitem” that stores the title
of the item, it’s price, an array of three floats so that it can record the sale in rupees of
a particular item for the last three months, category of the item and it’s original
equipment manufacturer. Write a short program that provides facility to read N
number of items information, append new item, and displays all records.
8) Define a structure to represent a data. Use your structures that accept two different
dates in the format mmdd of the same year. And do the following: Write a C program
to display the month names of both dates.
Task Sheet-V
1) Write a C program to read a text file and to count Number of characters, Number of
words and Number of sentences and write in an output file.
C Programming Lab Manual 28
Department of CSE & IT
2) Write a C program to read the text file containing some paragraph. Use fseek() and
read the text after skipping n characters from the beginning of the file.
3) Write a C program to read the text file containing some paragraph. Print the first n
characters from the beginning of the file.
4) Write a program to print the output of the following format in an OUTPUT file.
Number Square Cube
2 4 8
3 9 27
5) Write a C program to read data from a file named INPUT containing numbers.
Write all even numbers to file called EVEN and odd numbers to file called ODD.
6) Program to print the n characters from mth position in the file.
7) Program to print the current position value of the file pointer.
8) Write a C program to open a pre-existing file and add information at the end of file.
Display the contents of the file before and after appending
9) Program to copy one file to another.
10) Write program to read a text file and convert the file contents in capital (upper-
case) and write the contents in an output file.
C Programming Lab Manual 29
Department of CSE & IT
Appendix B - Objective Questions
Predict the output or error(s) for the following:
1. main() { int i=-1,j=-1,k=0,l=2,m; m=i++&&j++&&k++||l++; printf("%d %d %d %d %d",i,j,k,l,m); }
2. main() {
int i=3; switch(i) { default:printf("zero"); case 1: printf("one"); break; case 2:printf("two"); break; case 3: printf("three"); break;
} }
3. main() {
printf("%x",-1<<4); }
4. main() { int c=- -2; printf("c=%d",c); }
5. main() {
int i=10; i=!i>14; printf ("i=%d",i);
} 6. main()
{ char s[ ]="man"; int i; for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]); }
7. main() {
extern int i;
C Programming Lab Manual 30
Department of CSE & IT
i=20; printf("%d",i);
}
8. #define int char main() {
int i=65; printf("sizeof(i)=%d",sizeof(i)); }
9. #define square(x) x*x main() {
int i; i = 64/square(4); printf("%d",i);
}
10. #include <stdio.h> #define a 10 main() {
#define a 50 printf("%d",a);
}
C Programming Lab Manual 31
Department of CSE & IT
Appendix C - Textual References
1. C Programming and Data Structures, P. Padmanabham, Third Edition, BS Publications
2. Data Structures: A pseudo code approach with C, second edition R.F. Gilberg and B.A.
Forouzan
3. Programming in C, P.Dey & M. Ghosh, Oxford Univ.Press.
4. C and Data Structures, E Balaguruswamy, TMH publications.
5. DataStructures Using C – A.S.Tanenbaum, Y. Langsam, and M.J. Augenstein,
PHI/Pearson education.
6. The C Programming Language, B.W. Kernighan, Dennis M.Ritchie, PHI/Pearson
Education
7. C Programming with problem solving, J.A. Jones & K. Harrow, Dreamtech Press
8. Programming in C – Stephen G. Kochan, III Edition, Pearson Eductaion.
9. Data Structures and Program Design in C, R.Kruse, C.L. Tondo, BP Leung, Shashi M,
Second Edition, Pearson Education.
Appendix D - Internet References
1. www.cprogramming.com/tutorial.html
2. www.java2s.com/Tutorial/C/CatalogC.htm
3. http://www.howstuffworks.com/c.htm
4. http://www.cs.cf.ac.uk/Dave/C/
5. www.owlnet.rice.edu/~comp320/2005/notes/tut03-data_structures
6. http://www.iu.hio.no/~mark/CTutorial/CTutorial.html#Pointers
7. http://www.academictutorials.com/data-structure/data-structure-trees.asp
8. www.kelso.scotborders.sch.uk/.../higher.htm
9. http://www.physics.unlv.edu/~pang/cp_c.html
10. http://www.indiastudychannel.com/resources/13019-C-Program-stack-using-linked-
list.aspx
C Programming Lab Manual 32
Department of CSE & IT
Appendix E - Common C Coding Mistakes
Here is a summary of common coding mistakes students have encountered in writing
programs in this class. If you are having problems with your program, you might find a quick
solution here.
Input problems
1. Use the correct conversion specifier for the declared data type in a scanf(). A float
is %f, an int is %d, and a double is %lf (lower case L). If you declare a variable to be
an int, don't try to input it with a %f specifier.
2. Don't use a precision specification in a scanf() conversion specifier. For example,
scanf("%.2f", &payRate) will not work (at least the ".2" part won't). Use
scanf("%f", &payRate) instead. Width specifiers can be used, however.
3. Use the addressing operator (&) for your variables used as targets for input with
scanf()'s, unless the target is already an address (such as the name of an array or a
pointer variable).
4. The scanf() function can't be used with the %s specifier to input a string that contains
white space (like "Electric sander"). Use another function, like gets().
5. When using getchar() or scanf() with a %c (character) conversion specifier, be
aware that the last input operation (like a previous scanf() or getchar()) may have
left characters in the keyboard buffer.
Output problems
1. Do not use the addressing operator (&) for arguments in a call to printf( ).
2. When using puts( ), a newline character ('\n') is automatically appended, so don't use
it for a prompt if you want the user's input on the same line.
Problems with decision structures
C Programming Lab Manual 33
Department of CSE & IT
1. There is no semicolon after the condition:
if (x > 0) /* correct */
...
if (x > 0); /* wrong */
...
2. Use braces ( { } ) around the body of an if or else branch that contains multiple
statements. You don't need them with a single statement in the body.
3. If you have a dual-alternative selection to implement, use the if...else rather than
switch – it's cleaner.
4. There is no condition in the else branch – only in the if branch.
Problems with loops
1. There is no semicolon after the condition in a while:
while (x > 0) /* correct */
...
while (x > 0); /* wrong - infinite loop */
...
2. The loop index (loop control variable) is not updated inside the loop
Problems with strings
1. You can't compare two strings with with a relational or equality operator (like >= or
==). You must use one of the comparison functions from string.h, like strcmp() or
strncmp( ), or write your own function.
2. To assign (copy, duplicate) one string to another, use one of the copy functions from
string.h like strcpy( ) or strncpy( ), not the assignment operator (=).
File handling problems
C Programming Lab Manual 34
Department of CSE & IT
You can fopen() a file more than once in a program, but a fclose() must be executed
between fopen()'s. Review your algorithm to make sure you really need multiple file open
and closes.
C Programming Lab Manual 35