/* A dynamically-allocated 1-D array */ #include <stdio.h> int main (void) { double* array; /* declare a pointer only */ int i, size; /* ask user for size of array */ printf ("How large do you want your array? "); scanf ("%d", &size); /* allocate the array in the heap */ array = (double *) calloc (size, sizeof(double)); /* printing the array for verification surprise! a dynamic array is automatically initialized with zeros! */ for (i = 0; i < size; ++i) printf ("%6.2lf", array[i]); /* freeing the memory allocation */ free (array); return (0); }
Array : Dynamic
Array : Search
/* THE BASIC SEARCH ALGORITHM FOR A 1-D ARRAY */ #include <stdio.h> int search (int arraytosearch[], int valuetosearch, int size) { int i, found; /* initialize found at -1, if value not found, stays at -1 */ found = -1; /* search until found or until end of array */ i = 0; while (found<0 && i<size) { if (arraytosearch[i] == valuetosearch) found = i; /* I have found it! */ else i = i + 1; } return (found); } int main (void) { int x[] = {12,67,56,60,88,34,123}; int value = 60; int pos, i; pos = search (x, value, 7); if (pos >= 0) printf ("%d was found at position %d.\n", value, pos); else printf ("%d was not found in the array.\n", value); return (0); }Legend: preprocessor directives | variable declarations | main program | helper functions | user-defined structures | comments
60 was found at position 3.
Array : Adding Two Arrays
/* Problem: Add the corresponding values from two arrays of the same size. */ #include <stdio.h> /* the function that adds the two arrays a1 and a2. it "returns" a3 back */ void addarrays (int a1[], int a2[], int a3[], int n) { int i; /* do the adding of every corresponding cells */ for (i=0; i<n; ++i) a3[i] = a1[i] + a2[i]; } int main (void) { int x[] = {1,2,3,4}, i; int y[] = {10,20,30,40}; int z[4]; /* call the function */ addarrays (x, y, z, 4); /* print a report */ for (i=0; i<4; ++i) printf ("%3d", x[i]); printf ("\n + \n"); for (i=0; i<4; ++i) printf ("%3d", y[i]); printf ("\n-------------\n"); for (i=0; i<4; ++i) printf ("%3d", z[i]); return (0); }
Array : Filling Partially
/* Problem: This program partially fills an array from a file until the end of file (EOF). We get the actual number of data read */ #include <stdio.h> int array_from_file (double a[], int size) { int i; FILE* in; in = fopen ("data_array.dat", "r"); i=0; /* the first cell */ /* filling the array cell by cell */ /* until it is full or until the EOF */ while (i < 100 && fscanf (in, "%lf", &a[i]) != EOF) { i=i+1; } fclose (in); /* the actual number of values in the array */ return (i); } int main (void) { double array[100]; int actual_size, i; actual_size = array_from_file (array, 100); for (i=0; i < actual_size; ++i) printf ("%3.1lf ", array[i]); printf ("\nThe array contains %d values ", actual_size); printf ("for a capacity of 100 cells.\n"); return (0); }
Array : With Pointer
/* Problem: This programs fills an array with a value submitted by the user. */ #include <stdio.h> /* array parameter can be expressed as a pointer */ /* *list is the same thing as list[] */ void fill_array (int *list, int n, int in_value) { int i; for (i=0; i<n; ++i) list[i] = in_value; } int main (void) { int x[100]; int i; /* &x[0] is the address of the x[0] */ /* which is the same thing as x */ fill_array (&x[0], 100, 5); /* printing the array for verification */ for (i=0; i<100; ++i) printf ("%d ", x[i]); return (0); }
Array : Filling from a file
#include <stdio.h> int main (void) { int numbers[10], i; FILE *input; input = fopen("numbers.txt", "r"); /* reading file - filling array */ for (i=0; i<10; ++i) fscanf(input, "%d", &numbers[i]); /* printing the content of array */ printf("The numbers read are: "); for (i=0; i<10; ++i) printf("%4d", numbers[i]); printf ("\n"); fclose (input); return (0); }
Array : Meand & Standard Deviations
/* This program computes the meand and standard deviations of the values inside an array */ #include <stdio.h> #include <math.h> #define MAX 5 int main (void) { double mean, sd, sum, sumsq; double x[] = {10.0, 15.0, 20.0, 10.0, 30.0}; int i; sum = 0; sumsq = 0; /* computing the sum and sum of squares */ for (i=0; i<MAX; ++i) { sum = sum + x[i]; sumsq = sumsq + x[i] * x[i]; } /* computing mean and standard deviation */ mean = sum / MAX; sd = sqrt(sumsq / MAX - mean * mean); /* printing report */ printf ("The mean is %lf. \n", mean); printf ("The standard deviation is %lf. \n", sd); return (0); }
Array: using a function
/* Problem: This program asks the user for a value and fills all 100 cells of an array with that value */ #include <stdio.h> /* no size in array parameter */ /* just a pointer to array in main */ void fill_array (int list[], int n, int in_value) { int i; for (i=0; i<n; ++i) list[i] = in_value; } int main (void) { int x[100], i, value; /* initializing the array with a user value */ /* the 2nd argument must be the size of the array */ printf ("Enter a value: "); scanf ("%d", &value); fill_array (x, 100, value); /* printing the array for verification */ for (i=0; i<100; ++i) printf ("%d ", x[i]); return (0); }
Array : Initializing & Printing an Array
/* Problem: This program initializes an array with all cells filled with 0.0 */ #include <stdio.h> int main (void) { double x[100]; int i; /* initializing the array with 0.0 */ for (i=0; i<100; ++i) x[i] = 0.0; /* printing the array for verification */ for (i=0; i<100; ++i) printf ("%5.1lf", x[i]); return (0); }
Switch Case
Switch Case Example for Simple Arithmetic Operations
|
Source Code
#include <stdio.h>
void main()
{
int opcode;
int a, b;
int result;
printf("Program for Addition, Subtraction, Multiplication and Division\n");
printf("Enter Your Choice: 1 - Add, 2 - Sub, 3 - Mul, 4 - Div: ");
scanf("%d", &opcode);
printf("Enter First Number:");
scanf("%d", &a);
printf("Enter Second Number:");
scanf("%d", &b);
switch(opcode)
{
case 1:
result = a + b;
printf("%d + %d = %d", a, b, result);
break;
case 2:
result = a - b;
printf("%d - %d = %d", a, b, result);
break;
case 3:
result = a * b;
printf("%d * %d = %d", a, b, result);
break;
case 4:
result = a / b;
printf("%d / %d = %d\n%d %% %d = %d", a, b, result, a, b, a % b);
break;
}
}
Output
Program for Addition, Subtraction, Multiplication and Division
Enter Your Choice: 1 - Add, 2 - Sub, 3 - Mul, 4 - Div: 1
Enter First Number: 5
Enter Second Number: 3
5 + 3 = 8
Program for Addition, Subtraction, Multiplication and DivisionEnter Your Choice: 1 - Add, 2 - Sub, 3 - Mul, 4 - Div: 2
Enter First Number: 5
Enter Second Number: 3
5 - 3 = 2
Enter Your Choice: 1 - Add, 2 - Sub, 3 - Mul, 4 - Div: 3
Enter First Number: 5
Enter Second Number: 3
5 * 3 = 15
Program for Addition, Subtraction, Multiplication and Division
Enter Your Choice: 1 - Add, 2 - Sub, 3 - Mul, 4 - Div: 4
Enter First Number: 5
Enter Second Number: 3
Enter Your Choice: 1 - Add, 2 - Sub, 3 - Mul, 4 - Div: 4
Enter First Number: 5
Enter Second Number: 3
5 / 3 = 1
5 % 3 = 2
5 % 3 = 2
Break and Continue statements
Use of break and continue statements
|
continue statement is used to continue the loop but skip the execution of the remaining statements in the loop.
These statements are used in any loop statements (for,do while, while) and switch case statements.
The sample code given below has infinite for loop. if i >= 60, then break statement will get executed and loop will get terminated. if (i % 2) is false meaning odd number, then the continue statement will skip the remainder of the statement. In this case, eventcount will not get incremented.
Source Code
void main()
{
int evencount = 0, i = 0;
for(i = 0; ; i++)
{
if(i >= 60)
break; // Terminate the for loop
if((i % 2) != 0)
continue; // Will skip the reminder of the for loop
evencount++;
}
printf(“Total Even Numbers Between 0 – 60 is: %d”, evencount);
}
Output
Total Even Numbers Between 0 – 60 is: 31
Build Pattern
Build Pattern of * and numbers using loops
|
Source Code
#include <stdio.h>
int main()
{
int i,j,n;
printf("Enter a number: ");
scanf("%d", &n);
printf("\n");
for(i = n; i > 1; i--)
{
for(j = 1; j <= i; j++)
printf("*");
printf("\n");
}
for(i = 1; i <= n; i++)
{
for(j = 1; j <= i; j++)
printf("*");
printf("\n");
}
printf("\n");
for(i = 1; i < n; i++)
{
for(j = 1; j <= i; j++)
printf("%d",j);
printf("\n");
}
for(int i = n; i >= 0; i--)
{
for(int j = 1; j <= i; j++)
printf("%d",j);
printf("\n");
}
printf("\n");
return 0;
}
Output
Enter a number: 6
******
*****
****
***
**
*
**
***
****
*****
******
1
12
123
1234
12345
123456
12345
1234
123
12
1
Reverse a String
Reverse a String With Out Using String Library Functions
|
Source Code
bool ReverseString(const char *src, char *dst, int len)
{
const char *p = src;
// count the length
int count = 0;
int i = 0, j = 0, k = 0;
while(1)
{
if(p == NULL || *p == '\0' ||
*p == '\t' || *p =='\n' || *p == '\r')
{
count = i;
break;
}
p = p + 1;
i = i + 1;
}
if(count > len)
{
return false; // Insufficient memory in the destination pointer
}
for(j = count - 1; j >= 0; j--)
{
dst[k++] = src[j];
}
dst[k] = '\0';
return true;
}
int main()
{
char src[] = "arif";
char dst[32];
ReverseString(src, dst, 32);
printf("%s\n%s\n", src, dst );
return 0;
}
Output
arif
fira
Check Odd or Even Number
Loops - Read Numbers and Check Odd or Even Number
|
Source Code
#include <stdio.h>
int main()
{
printf("Program to find ODD or Even Number\n");
while(1)
{
int n = 0;
printf("\nEnter a number(-1 for Exit): ");
scanf("%d",&n);
if( n == -1)
break;
if((n % 2) == 0)
{
printf("%d is a EVEN number.\n", n);
}
else
{
printf("%d is a ODD number.\n", n);
}
}
return 0;
}
Output
Program to find ODD or Even Number
Enter a number(-1 for Exit): 1
1 is a ODD number.
Enter a number(-1 for Exit): 2
2 is a EVEN number.
Enter a number(-1 for Exit): 3
3 is a ODD number.
Enter a number(-1 for Exit): 4
4 is a EVEN number.
Enter a number(-1 for Exit): 5
5 is a ODD number.
Enter a number(-1 for Exit): 6
6 is a EVEN number.
Enter a number(-1 for Exit): 7
7 is a ODD number.
Enter a number(-1 for Exit): -1
Press any key to continue . . .
Creating Pyramid
Creating Pyramid using loops
|
I have given here a simple program withg loops to build a pyramid with *. You can replace * with any other character you like.
Source Code
#include <stdio.h>
int main()
{
int i,j,k, n;
printf("Enter number of rows for pyramid: ");
scanf("%d", &n);
printf("\n");
for(i = 1; i <= n; i++)
{
for(j = 0; j < (n - i); j++)
printf(" ");
for(j = 1; j <= i; j++)
printf("*");
for(k = 1; k < i; k++)
printf("*");
printf("\n");
}
printf("\n\n");
return 0;
}
Output
Enter number of rows pyramid: 21
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
*********************
***********************
*************************
***************************
*****************************
*******************************
*********************************
***********************************
*************************************
***************************************
*****************************************
এতে সদস্যতা:
পোস্টগুলি (Atom)