C Programming Arrays: Basics & Examples
C Programming Arrays: Basics & Examples
ARRAY
An array in C is a collection of items stored at contiguous
memory locations and elements can be accessed randomly
using indices of an array. They are used to store similar type
(homogeneous) of elements as the data type must be the same
for all elements. They can be used to store collection of
primitive data types such as int, float, double, char, etc of any
particular type.
A Indices 0 1 2 3
Array elements 10 20 30 40
avg = (float)sum/n;
printf("\nSum=%d",sum);
printf("\nAverage=%f",avg); }
OUTPUT
Enter the size of Array: 5
Enter the number:10
Enter the number:20
Enter the number:30
Enter the number:40
Enter the number:50
Sum=150
Average=30.0
5. Write a program to read and display even numbers in
an array of size n.
#include<stdio.h>
void main()
{
int n,A[20],i;
printf("Enter the size of Array:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nEnter the number:");
scanf("%d",&A[i]);
}
printf(“\nEven Numbers are\t”);
for(i=0;i<n;i++)
{
if(A[i]%2 == 0)
printf("%d\t",A[i]);
}
}
OUTPUT
Enter the size of Array: 5
Enter the number:10
Enter the number:15
Enter the number:20
Enter the number:25
Enter the number:30
Even Numbers are 10 20 30
{
int n,A[20],i,flag,j;
printf("Enter the size of Array:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nEnter the number:");
scanf("%d",&A[i]);
}
printf(“\nPrime Numbers are\t”);
for(i=0;i<n;i++)
{
flag=0;
for(j=2;j<=sqrt(A[i]);j++)
{
if(A[i]%j == 0)
{
flag=1;
break;
}
}
if(flag == 0)
{
printf("%d\t",A[i]);
}
}
}
OUTPUT
Enter the size of Array: 5
Enter the number:5
Enter the number:6
Enter the number:7
Enter the number:8
Enter the number:9
Prime Numbers are 5 7
7. Write a program to find largest element in an array of
size n.
#include<stdio.h>
void main()
{
int n,A[20],i,large;
printf("Enter the size of Array:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\nEnter the number");
scanf("%d",&A[i]);
}
large=A[0];
for(i=1;i<n;i++)
{
if(large < A[i])
large = A[i]
}
printf("\nLarge =%d",large);
}
OUTPUT
Enter the size of Array: 5
Enter the number:20
Enter the number:30
Enter the number:25
Enter the number:15
Enter the number:50
Large=50
if(pos == -1)
{
printf("\nElement not found");
}
else
{
prinf("\nElement found at index
%d",pos);
}
}
OUTPUT
Enter the size of Array: 5
Enter the number:10
Enter the number:20
Enter the number:30
Enter the number:40
Enter the number:50
Enter the element to search:40
Element found at index 3
BUBBLE SORT
A sorting algorithm is an algorithm that puts elements of a list
in a certain order. The bubble sort makes multiple passes
through a list. It compares adjacent items and exchanges those
that are out of order. Each pass through the list places the next
9 6 5 2
6 9 5 2
6 5 9 2
6 5 2 9
Pass 2
6 5 2 9
5 6 2 9
5 2 6 9
Pass 3
5 2 6 9
2 5 6 9
{
temp=A[j];
A[j]=A[j+1];
A[j+1]=temp;
}
}
}
printf("\nAfter Sorting \t");
for(i=0;i<n;i++)
{
printf("%d\t",A[i]);
}
}
STRINGS
Strings are defined as an array of characters. The difference
between a character array and a string is the string is
terminated with a special character ‘\0’.
Index 0 1 2 3 4 5
Declaration of Strings
Declaring a string is as simple as declaring a one dimensional
array. Below is the basic syntax for declaring a string.
char str[20];
In the above syntax str is any name given to the string variable
and 20 is used define the length of the string, i.e. the number of
characters strings will store(including null character). Please
keep in mind that there is an extra terminating character
which is the Null character (‘\0’) used to indicate termination
of string which differs strings from normal character arrays.
Initializing a String
A string can be initialized in different ways.
1. char str[] = "Programming";
2. char str[50] = "Programming";
3. char str[] = {'P','r','o','g','r','a','m','m','i','n','g','\0'};
4. char str[12] = {'P','r','o','g','r','a','m','m','i','n','g','\0'};
#include <stdio.h>
void main()
{
char str[20];
printf("Enter the String: ");
scanf("%s", str);
printf("\nString: %s\n", str);
}
Output
Enter the String : Hello World
String: Hello
Issue with scanf(): There is a whitespace after Hello. So it
read the input till Hello and store it in str.
Solution: use % [^\n] instead of %s.
#include <stdio.h>
void main()
{
char str[20];
printf("Enter the String:");
scanf("%[^\n]", str);
printf("\nString: %s\n", str);
}
Output
#include <stdio.h>
void main()
{
char str[20];
printf("Enter the String:");
gets( str);
puts(str);
}
Output
Enter the String: Hello world Hello world
Function Working
strlen() vs sizeof()
strlen returns the length of the string stored in array, however
sizeof returns the total allocated size assigned to the array.
#include<stdio.h>
#include<string.h>
void main()
{
len value will give the length of the string which is 11. But
size value will be 12 including the end of character.
Output
Value=132
strcat
It concatenates two strings and returns the concatenated
string.
Syntax:
strcat(string1,string2)
concatenate string1 with string2.
#include <stdio.h>
#include <string.h>
void main()
{
char s1[10] = "Hello";
char s2[10] = "World";
strcat(s1,s2);
strcpy
It copies the string str2 into string str1, including the end
character (terminator char ‘\0’).
Syntax: strcpy(string1,string2)
copy the content of string2 to string1
#include <stdio.h>
#include <string.h>
void main()
{
char s1[30];
char s2[30] = "Hello World";
strcpy(s1,s2);
printf("String s1: %s", s1);
}
Output:
String s1 : Hello World
Program to copy a string to another without using string
handling function
#include<stdio.h>
void main()
{
char a[50], b[50];
int i=0;
printf(“Enter string1:”);
gets(a);
for(i=0;a[i]!=‘\0’;i++)
{
b[i]=a[i];
}
b[i]=‘\0’;
}
strcmp
It compares the two strings and returns an integer value. If
both the strings are same (equal) then this function would
return 0 otherwise it may return a negative or positive value
based on the comparison.
strcmp(string1,string2)
Compares the content of string1 and string2
•If string1 < string2 OR string1 is a substring of string2 then it
would result in a negative value.
•If string1 > string2 then it would return positive value.
•If string1 == string2 then you would get 0(zero) when you
use this function for compare strings.
#include <stdio.h>
#include <string.h>
void main()
{
printf("\nPalindrome");
}
else
{
printf("\nNot Palindrome");
}
}
Output
Enter the string: noon
Palindrome
count=0;
for(i=0;i<strlen(str);i++)
{
switch(str[i]) {
case 'A':
case 'a':
case 'E':
case 'e':
case 'i':
case 'I':
case 'O':
case 'o':
case 'U':
case 'u':
count++;
break;
}
}
printf("\nCount of vowels=%d",count);
}
Output
Enter the string:hello
Count of vowels=2
{
for(j=0;j<n;j++)
{
printf("%d\t",A[i][j]);
}
printf("\n");
}
}
OUTPUT
Enter the order of matrix: 2 2
Enter the element: 10
Enter the element: 20
Enter the element: 30
Enter the element: 40
Matrix
10 20
30 40
int m,n,A[20][20],i,j;
printf("Enter the order of matrix:");
scanf("%d%d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("Enter the element:");
scanf("%d",&A[i][j]);
}
}
printf(“\nTranspose of Matrix\n”);
for(j=0;j<n;j++)
{
for(i=0;i<m;i++)
{
printf("%d\t",A[j][i]);
}
printf("\n");
}
}
OUTPUT
}
for(i=0;i<m;i++)
{
sum = sum + A[i][i];
}
printf("\nSum=%d",sum);
}
OUTPUT
Enter the order of matrix: 2 2
Enter the element: 10
Enter the element: 20
Enter the element: 30
Enter the element: 40
Sum=50
4. Write a program to multiply two matrices
n 6487628 10
p 6487616 6487628 10
Address of Value of n
variable n
NULL Pointer
A pointer that is not assigned any value but NULL is known as
the NULL pointer. If you don't have any address to be specified
in the pointer at the time of declaration, you can assign NULL
value. It will provide a better approach.
int *p=NULL;
OPERATIONS ON POINTERS
∙ Address of a variable can be assigned to a pointer variable.
∙ One pointer variable can be assigned to another pointer
variable provided both points to the items of same datatype.
∙ A NULL value can be assigned to a pointer variable.
∙ An integer quantity can be added to or subtracted from a
pointer variable. The result will be a pointer.
∙ When we increment a pointer, its value is increased by the
length of its data type. ∙ One pointer variable can be subtracted
from another pointer variable provided both points to the
elements of the same array. The result will be an integer value.
∙ Two pointer variables can be compared provided both points
to the items of same datatype.
∙ A pointer variable can be compared with NULL values.
OUTPUT
Enter the size of array:5
10 15 20 25 30
Array Content
10 15 20 25 30
for(j=0;j<n-i-1;j++)
{
if(*(p+j) > *(p+j+1))
{
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
printf("Array Content\n");
for(i=0;i<n;i++)
{
printf("%d\t",*(p+i));
}
}
OUTPUT
Enter the size of array:5
16 7 14 2 5
Array Content
2 5 7 14 16
POINTER TO POINTER
A pointer points to an address of another pointer. Such pointers
are known as pointer to pointer or double pointers.
Example
#include<stdio.h>
void main()
{
int a=10;
int *p,**q;
p=&a;
q=&p;
printf("\nValue of a is %d \n",a);
printf("\nValue of *p is %d \n",*p);
printf("\nValue of **q is %d \n ",**q);
}
OUTPUT
Value of a is 10
Value of *p is 10
Value of **q is 10
PASS BY REFERENCE
In C programming, it is also possible to pass addresses as
arguments to functions. To accept these addresses in the
function definition, we can use pointers. In this method,
the address of the actual parameters is passed to formal
parameters. So any change in formal parameters will be
reflected in the actual parameters. Consider the program to
swap two numbers using pass by reference method,
#include<stdio.h>
int swap(int *a,int *b)
{
int temp=*a;
*a= *b;
*b=temp;
}
void main()
{
int x,y;
printf("\nEnter the numbers:");
scanf("%d%d",&x,&y);
printf("\nBefore swapping :
x=%d\ty=%d\n",x,y);
swap(&x,&y);
printf("\nAfter swapping : x=%d\ty=%d",x,y);
}
OUTPUT
Enter the numbers:10 20
Before swapping: x=10 y=20
After swapping: x=20 y=10
Differences between pass by value and pass by reference