0% found this document useful (0 votes)
1K views

Structures Using C by Balagurusamy

Structures using C programs Presentaion slide Easy way to learn C structures Structures within structures
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views

Structures Using C by Balagurusamy

Structures using C programs Presentaion slide Easy way to learn C structures Structures within structures
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 128

Structure

A Structure is a collection of different data items, that are stored under a common name. Syntax: struct structure_name { structure element1; structure element2; . };

Example: struct stud { int sno; char name[10]; int mark; }; struct stud s;

Example
#include<stdio.h> #include<conio.h> struct stud { int regno; char name[10]; int m1; int m2; int m3; }; struct stud s; void main() { float tot,avg;

printf("\nEnter the student regno,name,m1,m2,m3:");


scanf("%d%s%d%d%d",&s.regno,&s.name,&s.m1,&s.m2, &s.m3); tot=s.m1+s.m2+s.m3; avg=tot/3;

printf("\nThe student Details are:");


printf("\n%d\t%s\t%f\t%f",s.regno,s.name,tot,avg);

Output
Enter the student regno,name,m1,m2,m3:100 aaa 87 98 78
The student Details are: 100 aaa 263.000000

87.666664

Structure assignment
It is possible to assign one structure information to another structure of same type using simple assignment statement.

Example
#include<stdio.h> #include<conio.h> void main() { struct x { int a; }x,y; clrscr(); x.a=10; y=x; printf("The value of y.a is%d",y.a); getch(); }

Output
The value of y.a is10

Example
#include<stdio.h> #include<conio.h> struct stud { int regno; char name[10],grade; int m1,m2,m3; float avg,tot; } s[10]; void main() { int i,n; printf("\nEnter the no.of students:"); scanf("%d",&n);

for(i=0;i<n;i++) { printf("\nEnter the student regno,name,m1,m2,m3:"); scanf("%d%s%d%d%d",&s[i].regno,&s[i].name,&s[i].m1, &s[i].m2,&s[i].m3); s[i].tot=s[i].m1+s[i].m2+s[i].m3; s[i].avg=s[i].tot/3; if(s[i].m1<35||s[i].m2<35||s[i].m3<35) s[i].grade='f'; else { if(s[i].avg>=75) s[i].grade='d'; else if(s[i].avg>=60)

s[i].grade='A'; else if(s[i].avg>=50) s[i].grade='B'; else if(s[i].avg>=35) s[i].grade='C'; } } printf("\nSTUDENT MARK LIST\n"); printf("\nREGNO\tNAME\tTOTAL\tAvg\tGRADE"); for(i=0;i<n;i++) printf("\n%d\t%s\t%f\t%f\t%c",s[i].regno,s[i].name,s[i].tot, s[i].avg,s[i].grade); getch(); }

Enter the no.of students:2 Enter the student regno,name,m1,m2,m3:101 aaa 89 98 78 Enter the student regno,name,m1,m2,m3:102 bbb 59 68 76 STUDENT MARK LIST

REGNO NAME TOTAL Avg GRADE 101 aaa 265.000000 88.333336 d 102 bbb 203.000000 67.666664 A

Union
An Union is a collection of different data items, that are stored under a common name. Here same memory is shared by its members. Syntax: union union _name { union element1; union element2; };

Example: union result { int mark; float avg; char grade; }; union result s;

Example
#include<stdio.h> #include<conio.h> union stud { int a; char b[2]; }; void main() { union stud c;

c.a=256; printf("\nc.a value is%d",c.a); printf("\nc.b[0] value is%d",c.b[0]); printf("\nc.b[1] value is%d",c.b[1]); } Output: c.a value is256 c.b[0] value is0 c.b[1] value is1

c.a - 2 Byte

c.b[0] 1 Byte

c.b[0]

1 Byte

256 = 00000010 00000000


Higher bit 00000000 c.b[0] Lower bit 00000010 c.b[1]

#include<stdio.h> #include<conio.h> struct student { int a; int b; char c; }s; union student1 { int a; int b; char c; }s1;

Example

void main() { printf("\nThe size of struct is %d",sizeof(s)); printf("\nThe size of union is %d",sizeof(s1)); getch(); }

Output: The size of struct is 5 The size of union is 2

Structure & Union


2 Byte 2Byte 1Byte

int

int
structure

char

2 Byte

int ,int, char


union

Preprocessor
It is a program that processes the source program before compilation. It operates under the following directives
File Inclusion Macro substitution Conditional inclusion

File Inclusion
It is used to include some file that contains functions or some definitions. Syntax: #include<filename> (or) #includefilename Eg: #include<stdio.h> #include ex.c

Example
#include<stdio.h> #include<conio.h> #include "addition.txt" void main() { int a,b; printf("\nEnter the numbers:"); scanf("%d%d",&a,&b); printf("The Value is %d",add(a,b)); getch(); }

addition.txt
int add(int a,int b) { return(a+b); }

Output
Enter the numbers:7 4 The Value is 11

Example
#include<stdio.h> #include<conio.h> #include "fact.c" void main() { int a; printf("\nEnter the number:"); scanf("%d",&a); printf("The factorial of %d! is %d",a,rec(a)); getch(); }

fact.c
int rec(int x) { int f; if(x==1) return(1); else f=x*rec(x-1); return(f); }

Output
Enter the number:5 The factorial of 5! is 120

Macro Substitution
It is used to define and use integer, string, or identifier in the source program The three forms of macros are
Simple Macro Argumented Macro Nested Macro

Simple Macro
It is used to define some constants Syntax # define identifier string/integer Eg:
#define pi 3.14 #define CITY chennai

Example
#include<stdio.h> #include<conio.h> #define pi 3.14 #define CITY "chennai" void main() { printf("The Value is %f",2*pi); printf("\nThe Value CITY is %s",CITY); getch(); }

Output: The Value is 6.280000 The Value CITY is chennai

Argumented Macro
It is used to define some complex forms in the source program. Syntax: #define identifier (v1,v2,.) string/integer Eg:

#define cube(n) (n*n*n)

Example
#include<stdio.h> #include<conio.h> #define cube(n) (n*n*n) void main() { printf("The Value of 3 cube is %d",cube(3)); getch(); } Output: The Value of 3 cube is 27

Nested Macro
Here one macro is used by another macro. Eg:

#define a 3 #define sq a*a

Example
#include<stdio.h> #include<conio.h> #define a 3 #define sq a*a void main() { printf("The Value is %d",sq); getch(); } Output: The Value is 9

Conditional Inclusion
It is used to include some conditional statements.

Example
#include<stdio.h> #include<conio.h> #define a 3 #ifdef a #define c a+5 #endif void main() { printf("\nThe value C is %d",c); getch(); } Output: The value C is 8

Pointers
Pointer is a variable that contains the memory address of another variable.

Example: x=5 x
5

Variable Value Address

1002

Example
#include<stdio.h> #include<conio.h> void main() { int x=5; printf("\n The Address of x = %u",&x); printf("\n The Value of x = %d",x); } Output The Address of x = 8714 The Value of x = 5

Pointer Declaration
Syntax data-type *pointer-name; data-type - Type of the data to which the pointer points. pointer-name - Name of the pointer Example:

int *a;

Accessing Variable through Pointer If a pointer is declared and assigned to a variable, then the variable can be accessed through the pointer. Example: int *a; x=5; a=&x;

Example
#include<stdio.h> #include<conio.h> void main() { int x=5; int *a; a=&x; printf("\n The Value of x = %d",x); printf("\n The Address of x = %u",&x); printf("\n The Value of a = %d",a); printf("\n The Value of x = %d",*a); }

Output
The Value of x = 5 The Address of x = 8758 The Value of a = 8758 The Value of x = 5

Example:
#include<stdio.h> #include<conio.h> void main() { int y=10; int *a; a=&y; printf("\n The Value of y = %d",y); printf("\n The Address of y = %u",&y); printf("\n The Value of a = %d",a); printf("\n The Address of a = %u",&a); }

a 5001 8000

y 10 5001

Variable Value

Address

Output
The Value of y = 10 The Address of y = 5001 The Value of a = 5001 The Address of a = 8000

Null Pointer
A pointer is said to be null pointer if zero is assigned to the pointer. Example int *a,*b; a=b=0;

Pointer to Pointer
Here one pointer stores the address of another pointer variable. Example: int x=10,*a,**b; a=&x; b=&a;

b 8000 9000

a 5001 8000

x 10 5001

Variable Value

Address

Example #include<stdio.h> #include<conio.h> void main() { int a=10; int *b,**c; b=&a; c=&b; printf("\n The Value of a = %d",a); printf("\n The Address of a = %u",&a); printf("\n The Value of b = %d",b); printf("\n The Address of b = %u",&b); printf("\n The Value of c = %d",c); printf("\n The Address of c = %u",&c); }

Output
The Value of a = 10 The Address of a = 5001 The Value of b = 5001 The Address of b = 8000 The Value of c = 8000 The Address of c = 9000

Pointers and Functions


Call by Value Call by Reference

Call by value
Actual argument passed to the formal argument. Any changes to the formal argument does not affect the actual argument.

Example
#include <stdio.h> #include<conio.h> void main() { int x,y,swap(int,int); printf("\nEnter value of x:"); scanf("%d",&x); printf("\nEnter value of y:"); scanf("%d",&y);

change(x,y); printf("\n\nValues in the Main()-->x=%d,y=%d",x,y); } int swap(int a,int b) { int c; c=a; a=b; b=c; printf("\nValues in the Function -->x=%d,y=%d",a,b); }

Output
Enter value of x:5 Enter value of y:6 Values in the Function -->x=6,y=5 Values in the Main()-->x=5,y=6

Call by reference
Instead of passing value, the address of the argument will be passed. Any changes to the formal argument will affect the actual argument.

Example
#include <stdio.h> #include<conio.h> void main() { int x,y,change(int*,int*); printf("\nEnter value of x:"); scanf("%d",&x); printf("\nEnter value of y:"); scanf("%d",&y);

change(&x,&y); printf("\n\nValues in the Main()-->x=%d,y=%d",x,y); } int change(int *a,int *b) { int c; c=*a; *a=*b; *b=c; printf("\nValues in the Function -->x=%d,y=%d",*a,*b); }

Output
Enter value of x:5 Enter value of y:6 Values in the Function -->x=6,y=5 Values in the Main()-->x=6,y=5

Pointer to Array
The elements of the array can also be accessed through a pointer. Example int a[3]={2,3,7}; int *b; b=a;

Example: #include<stdio.h> #include<conio.h> void main() { int a[3]={2,3,7}; int *b; b=a; printf("\n The Value of a[0] = %d",a[0]); printf("\n The Address of a[0] = %u",&a[0]); printf("\n The Value of b = %d",b); }

b 8744 9000

a[0] 2 8744

Variable Value

Address

Output
The Value of a[0] = 2 The Address of a[0] = 8744 The Value of b = 8744

Example
#include<stdio.h> #include<conio.h> void main() { int a[5]={2,3,7,9,10}; int i; for(i=0;i<5;i++) { printf("\n The Value of a[%d] = %d",i,a[i]); printf("\n The Address of a[%d] = %u",i,&a[i]); } }

a[0]

a[1]

a[2]

a[3]

a[4]

Array
Value
Address

2
8724

3
8726

7
8728

9
8730

10
8732

Output
The Value of a[0] = 2 The Address of a[0] = 8724 The Value of a[1] = 3 The Address of a[1] = 8726 The Value of a[2] = 7 The Address of a[2] = 8728 The Value of a[3] = 9 The Address of a[3] = 8730 The Value of a[4] = 10 The Address of a[4] = 8732

Example
#include<stdio.h> #include<conio.h> void main() { int a[5]={1,2,3,4,5}; int i,sum=0; int *b; b=a; for(i=0;i<5;i++) { sum=sum + *b; b++; //b=b+1 } printf("\n The Sum is %d",sum); }

Output
The Sum is 15

Pointer and Structures


Syntax: struct structure_name { structure element1; structure element2; . }variable,*ptr;

Example: struct stud { int sno; char name[10]; int mark; }; struct stud *s;

Example
#include<stdio.h> #include<conio.h> struct stud { int regno; char name[10]; int m1; int m2; int m3; }; struct stud s; struct stud *t;

void main() { float tot,avg; t=&s; printf("\nEnter the student regno,name,m1,m2,m3:"); scanf("%d%s%d%d%d",&s.regno,&s.name,&s.m1,&s.m2,& s.m3); tot=s.m1+s.m2+s.m3; avg=tot/3; printf("\nThe student Details are:"); printf("\n%d\t%s\t%f\t%f",s.regno,s.name,tot,avg); printf("\n%d\t%s\t%f\t%f",t->regno,t->name,tot,avg); }

Output
Enter the student regno,name,m1,m2,m3:1 aaa 76 89 76
The student Details are: 1 aaa 241.000000 1 aaa 241.000000

80.333336 80.333336

Command Line Argument


It allows the user to pass some information to the program while running the program.

Example
#include<stdio.h> #include<conio.h> void main(int argc,char argv[]) { printf("\n The Argument is %s",argv[0]); getch(); }

Output
C:\tc>a The Argument is C:\TC\A.EXE

String Palindrome
#include<stdio.h> #include<conio.h> #include<string.h> void main() { char s1[15],s2[15]; printf("\nenter the string:"); scanf("%s",s1); strcpy(s2,s1); strrev(s1);

if(strcmp(s1,s2)==0) printf("\n The string is palindrome"); else printf("\n The string is not a palindrome"); getch(); }
Output:

enter the string: aba The string is palindrome

Developing a C Program
The Program development life cycle is considered as a sequence of events by the programmer to develop the program. The Program development life cycle contains the following phase
Program Design Program Coding Program Testing

Program Design
Analysing the problem Algorithm development Selection of conditional and control structure etc,.

Program Coding
Documentation Statement construction Input and output format etc,.

Program Testing
It is the process of executing the program with sample data

#include<stdio.h> #include<conio.h> #define p 3.14 void main() { #ifdef p printf("\nPentium"); #else printf("\n Celeron"); #endif printf("\nthe value is %f",2*p); getch(); }
Output: Pentium the value is 6.280000

Example

Example
#include<stdio.h> #include<conio.h> struct stud { int regno; char name[10]; int m1; int m2; int m3; }; struct stud s; void main() { float tot,avg; int i;

printf("\nEnter the student regno,name,m1,m2,m3:"); for(i=0;i<2;i++) { scanf("%d%s%d%d%d",&s.regno,&s.name,&s.m1,&s.m 2,&s.m3); tot=s.m1+s.m2+s.m3; avg=tot/3; } for(i=0;i<2;i++) printf("%d\t%s\t%f\t%f",s.regno,s.name,tot,avg); }

Enter the student regno,name,m1,m2,m3:100 aaa 78 67 98 101 bbb 80 90 75 101bbb 245.000000 81.666664 101bbb 245.000000 81.666664

#include <string.h> #include <stdio.h> int main(void) { char string[15]; char *ptr, c = 'r'; strcpy(string, "This is a string"); ptr = strchr(string, c); if (ptr) printf("The character %c is at position: %d\n", c, ptrstring); else printf("The character was not found\n"); return 0; }

#include<stdio.h> #include<conio.h> #include<string.h> void main() { char a[]="Dept"; int i=0; clrscr(); while(a[i]!='\0') { printf("\nThe character is %c",a[i]); i++; } getch(); }

Example

The character is The character is The character is The character is

D e p t

Structure

Lab Exercise
C Programs

#include <stdio.h> #include<conio.h> void main() { int a,b,c; int add(int,int); printf("\nEnter two number:"); scanf("%d%d",&a,&b); c=add(a,b); printf("\nSum is:%d",c); } int add(int x,int y) { int z; z=x+y; return(z); }

Function-with arg & return

Output
Enter two number:6 7
Sum is:13

Example
#include <stdio.h> #include<conio.h> void main() { int x,y,change(int*,int*); printf("\nEnter value of x:"); scanf("%d",&x); printf("\nEnter value of y:"); scanf("%d",&y);

change(&x,&y); printf("\n\nValues in the Main()-->x=%d,y=%d",x,y); } int change(int *a,int *b) { int c; c=*a; *a=*b; *b=c; printf("\nValues in the Function -->x=%d,y=%d",*a,*b); }

Output
Enter value of x:5 Enter value of y:6 Values in the Function -->x=6,y=5 Values in the Main()-->x=6,y=5

Factorial-Recursive Fn
#include<stdio.h> #include<conio.h> void main() { int a; int rec(int); printf("\nEnter the number:"); scanf("%d",&a); printf("The factorial of %d! is %d",a,rec(a)); }

int rec(int x) { int f; if(x==1) return(1); else f=x*rec(x-1); return(f); }

Output: Enter the number:5 The factorial of 5! is 120

Example: Working of 3!

Matrix Multiplication
#include<stdio.h> #include<conio.h> void main() { int i,j,k,r1,r2,c1,c2; int a[5][5],b[5][5],c[5][5]; clrscr(); step1: printf("\n Enter the size of matrix A \n"); scanf("%d%d",&r1,&c1); printf("\n Enter the size of matrix B \n"); scanf("%d%d",&r2,&c2); if(c1==r2) goto step2; else goto step1;

step2: printf("\n Enter the elements of matrix A \n"); for(i=0;i<r1;i++) { for(j=0;j<c1;j++) { scanf("%d",&a[i][j]); } } printf("\n Enter the elements of matrix B \n"); for(i=0;i<r2;i++) { for(j=0;j<c2;j++) { scanf("\t%d",&b[i][j]); } }

for(i=0;i<r1;i++) { for(j=0;j<c2;j++) { c[i][j]=0; for(k=0;k<c1;k++) { c[i][j]=c[i][j]+a[i][k]*b[k][j]; } } } for(i=0;i<r1;i++) { for(j=0;j<c2;j++) printf("%d\t",c[i][j]); printf("\n"); } getch(); }

Enter the size of matrix A:2 2 Enter the size of matrix B:2 2 Enter the elements of matrix A 4 4 4 4 Enter the elements of matrix B 4 4 4 4 The resultant matrix is 32 32 32 32

Output

Lab Ex:9,Finding area, circumference of circle


#include<stdio.h> #include <conio.h> void main ( ) { int r; float area,c; clrscr( ); printf(" \nEnter the value of r:"); scanf("%d",&r);

area=3.14*r*r; c=2*3.14*r; printf(" \nThe area is :%f",area); printf(" \nThe circumference is :%f",c); getch( ); }
Output: Enter the value of r:7 The area is :153.860001 The circumference is :43.959999

Lab Ex:9,Conversion of Celsius to Fahrenheit


#include<stdio.h> #include <conio.h> void main ( ) { float c,f; clrscr( ); printf(" \nEnter the value of c:"); scanf("%f",&c); f=(c*1.8)+32; printf(" \nThe Fahrenheit is :%f",f); getch( ); }

Enter the value of c:35 The fahrenheit is :95.000000

Lab Ex:11,Arithmetic operations


#include<stdio.h> #include<conio.h> void main() { int a,b,c,d,e,f; clrscr(); printf("\nEnter the values of A and B:"); scanf("%d%d",&a,&b); c=a+b; d=a-b; e=a*b; f=a/b;

printf("\nThe values of A + B:%d",c); printf("\nThe values of A - B:%d",d); printf("\nThe values of A * B:%d",e); printf("\nThe values of A / B:%d",f); getch(); }

Output
Enter the values of A and B:6 3

The values of A + B:9 The values of A - B:3 The values of A * B:18 The values of A / B:2

Lab.Ex13,Largest among 3 nos


#include<stdio.h> #include <conio.h> void main ( ) { int a,b,c; clrscr( ); printf(" \nEnter the value of a:"); scanf("%d",&a); printf(" \nEnter the value of b:"); scanf("%d",&b); printf(" \nEnter the value of c:"); scanf("%d",&c);

if((a>b)&&(a>c)) { printf(" \nA is Big"); } else { if(b>c) printf(" \nB is Big"); else printf(" \nC is Big"); } getch( ); }

Output
Enter the value of a:5
Enter the value of b:7 Enter the value of c:3 B is Big

String Palindrome
#include<stdio.h> #include<conio.h> #include<string.h> void main() { int len,i,j; char str[15]; clrscr(); printf("\n Enter the string:"); scanf("%s",str); len=strlen(str);

for(i=0,j=len-1;i<len/2;i++,j--) { if(str[i]!=str[j]) { printf("\nThe String is not a palindrome"); getch(); exit(0); } } printf("\nThe String is a palindrome"); getch(); }
Output: Enter the string:abcba The String is a palindrome

Lab.Ex:14,Quadratic Equation
#include<stdio.h> #include <conio.h> #include<math.h> void main ( ) { int a,b,c,d,r1,r2; clrscr( ); printf(" \nEnter the value of a:"); scanf("%d",&a); printf(" \nEnter the value of b:"); scanf("%d",&b); printf(" \nEnter the value of c:"); scanf("%d",&c); d=b*b-4*a*c;

if(d>=0) { r1=(-b+sqrt(d))/(2*a); r2=(-b-sqrt(d))/(2*a); printf(" \nThe roots are %d,%d",r1,r2); } else { printf(" \nThe roots are imaginary"); } getch( ); }

Output
Enter the value of a:1 Enter the value of b:4 Enter the value of c:4 The roots are -2,-2

You might also like