K & R C Programs Exercise 1-23.

K and R C, Solution to Exercise 1-23: C program that removes the all comments from a C Program. K and R C Program. Exercises provides the solution to all the exercises in the C Programming Language, second addition, by Brian W.Keringhan and Dennis M.Ritchie(Prentice Hall,1988). You can learn and solve K&R C Programs Exercise. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include "stdio.h"
void rcomment(int c);
void in_comment(void);
void echo_quote(int c);
main();
{
int c ,d;
while((c= getchar()) !=EOF)
rcomment(c);
return 0;
}
void rcomment(int c) {
int d;
if(c == '/')
if((d= getchar))=='*')
in_comment();
else if(d== '/') {
putchar(c);
rcomment(d);
} else {
putchar(c);
putchar(d);
}
else if(c=='' || c=='"')
echo_quote(c);

}
void in_comment() {
int c, d;
c = getchar();
d = getchar();
while (c!= '*' || d!!='/') {
c = d;
d = getchar();
}
}
void echo_quote(int c) {
int d;
putchar(c);
while ((d = getchar()) != c) {
putchar(d);
if (d == '\')
putchar(getchar());

}
putchar(d);
}
Read more Similar C Programs
C Basic

K and R C Programs Exercise

You can easily select the code by double clicking on the code area above. To get regular updates on new C programs, you can Follow @c_program
You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link

(c) www.c-program-example.com

K & R C Programs Exercise 1-22.

K and R C, Solution to Exercise 1-22:
 C program that folds the very long lines of input into two or more shorter lines. K and R C Programs Exercises provides the solution to all the exercises in the C Programming Language, second addition, by Brian W.Keringhan and Dennis M.Ritchie(Prentice Hall,1988). You can learn and solve K&R C Programs Exercise. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include "stdio.h"

#define MAXSIZE 1000

char line[MAXSIZE];

int get_line(void);


int
main()
{
int i,strlen;
int location, spaceholder;
const int foldlength=70;

while (( strlen = get_line()) > 0 )
{
if( strlen < foldlength )
{
}
else
{

i = 0;
location = 0;
while(i<strlen)
{
if(line[i] == ' ')
spaceholder = i;

if(location==foldlength)
{
line[spaceholder] = 'n';
location = 0;
}
location++;
i++;
}
}
printf ( "%s", line);
}
return 0;
}


int get_line(void)
{
int c, i;
extern char line[];

for ( i=0;i<MAXSIZE-1 && ( c=getchar()) != EOF && c != 'n'; ++i)
line[i] = c;
if(c == 'n')
{
line[i] = c;
++i;
}
line[i] = '';
return i;

}
Read more Similar C Programs
C Basic

K and R C Programs Exercise

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com

K & R C Programs Exercise 1-21.

K and R C, Solution to Exercise 1-21:
C Program to replace string of blanks by the minimum number of tabs and blanks to achieve the same spacing. K and R C Programs Exercises provides the solution to all the exercises in the C Programming Language, second addition, by Brian W.Keringhan and Dennis M.Ritchie(Prentice Hall,1988). You can learn and solve K&R C Programs Exercise. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include "stdio.h"
#define TABSIZE 6 /*Tab increment size*/
main() {
int c, no_blanks, pos, no_tabs;
no_blanks = 0; /*number of blamks required*/
no_tabs = 0; /* number of tabs required*/

for (pos = 1; (c = getchar()) != EOF; ++pos) {
if (c == ' ') {
if (pos % TABSIZE != 0)
++no_blanks;
else {
no_blanks = 0;
++no_tabs;
}
} else {
for (; no_tabs > 0; --no_tabs)
putchar('t');
if (c == 't')
no_blanks = 0;
else
for (; no_blanks > 0; --no_blanks)
putchar(' ');
putchar(c);
if (c == 'n')
pos = 0;
else if (c == 't')
pos = pos + (TABSIZE - (pos - 1) % TABSIZE);

}
}
}

Read more Similar C Programs
C Basic

K and R C Programs Exercise

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com

K & R C Programs Exercise 1-20.

K and R C, Solution to Exercise 1-20:
C Program to replace the tabs by proper number of blanks. K and R C Programs Exercises provides the solution to all the exercises in the C Programming Language, second addition, by Brian W.Keringhan and Dennis M.Ritchie(Prentice Hall,1988). You can learn and solve K&R C Programs Exercise. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include "stdio.h"
#define TABSIZE 6 /*Tab increment size*/
main()
{
int c, no_blanks,pos;
no_blanks = 0; /*number of blamks required*/
pos = 1; /* position of the character*/
while((c=getchar()) != EOF){
if(c == 't'){
no_blanks = TABSIZE-(pos-1)%TABSIZE;
while(no_blanks>0){

putchar(' ');
++pos;
--no_blanks;
}
else if(c == 'n'){
putchar(c);
pos = 1;
} else {
putchar(c);
++pos;
}
}
}
}

Read more Similar C Programs
C Basic

K and R C Programs Exercise

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com

C Program to generate Graph using grphics.h

C Program to Generate the graph sheet using the grphics.h library. To use graphics.h, we have to install the drivers in to the the system by using the initgraph() function. Here  we derive the graph of input sizes verses time taken for input sizes. x axis represents inputs(0,10000,20000,—-), y axis rep time(0,0.05,0.1,0.15—). Read more about C Programming Language.

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include "stdio.h"
#include "conio.h"
#include "graphics.h"
void main() {
int gd = DETECT, gm;
int y = 0, x = 10, m[20], k[20], n, a[20], i;
float b[20];
initgraph(&gd, &gm, "c:\tc\bgi");
printf("nntGenerating the Graphsnn");
printf("nEnter the no. of inputst");
scanf("%d", &n);
printf("nEnter the input sizes and corresponding time takenn");
for (i = 0; i < n; i++) {
printf("nEnter input sizet");
scanf("%d", &a[i]);
printf("nEnter time takent");
scanf("%f", &b[i]);
}
cleardevice();
//represents y axis
line(10, 0, 10, 400);
//represents x axis
line(10, 400, 600, 400);
while (y <= 400) {
line(0, y, 10, y);
y = y + 20;
}
while (x <= 600) {
line(x, 400, x, 410);
x = x + 20;
}
outtextxy(20, 440, "1unit=20 pixels , origin is (10,400)");
outtextxy(
20,
450,
"x axis represents inputs(0,10000,20000,----), yaxis rep time(0,0.05,0.1,0.15---)");
setcolor(5);
for (i = 0; i < n; i++) {
k[i] = (a[i] * 0.002);
m[i] = (400 - (b[i] * 400));
putpixel(k[i], m[i], 11);
}
for (i = 0; i < n - 1; i++)
line(k[i], m[i], k[i + 1], m[i + 1]);
getch();
}
Read more Similar C Programs
Learn C Programming

Number System

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com

C Program to implement Linear regression algorithm.

Linear Regression  is the predicting the value of one scalar variable(y) using the explanatory another variable(x). Linear regression  is represented by the equation Y = a + bX, where X is the explanatory variable and Y is the scalar variable. The slope of the line is b, and a is the intercept. For linear list square modeling, Linear regression is very helpful. Read more about C Programming Language.

/************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/



#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "string.h"

float mean(float *a, int n);
void deviation(float *a, float mean, int n, float *d, float *S);

void main() {
float a[20], b[20], dx[20], dy[20];
float sy = 0, sx = 0, mean_x = 0, mean_y = 0, sum_xy = 0;
float corr_coff = 0, reg_coff_xy = 0, reg_coff_yx = 0;
char type_coff[7];
int n = 0, i = 0;

clrscr();

printf("Enter the value of n: ");
scanf("%d", &n);
printf("Enter the values of x and y:n");
for (i = 0; i < n; i++)
scanf("%f%f", &a[i], &b[i]);
mean_x = mean(a, n);
mean_y = mean(b, n);
deviation(a, mean_x, n, dx, &sx);
deviation(b, mean_y, n, dy, &sy);

for (i = 0; i < n; i++)
sum_xy = sum_xy + dx[i] * dy[i];
corr_coff = sum_xy / (n * sx * sy);
printf("Enter the type of regression coefficient as 'x on y' or 'y on x': ");
fflush(stdin);
gets(type_coff);

if (strcmp(type_coff, "x on y") == 1) {
reg_coff_xy = corr_coff * (sx / sy);
printf("nThe value of linear regression coefficient is %f",
reg_coff_xy);
} else if (strcmp(type_coff, "y on x") == 1) {
reg_coff_yx = corr_coff * (sy / sx);
printf("nThe value of linear regression coefficient is %f",
reg_coff_yx);
} else
printf("nEnter the correct type of regression coefficient.");
getch();
}

float mean(float *a, int n) {
float sum = 0, i = 0;
for (i = 0; i < n; i++)
sum = sum + a[i];
sum = sum / n;
return (sum);
}

void deviation(float *a, float mean, int n, float *d, float *s) {
float sum = 0, t = 0;
int i = 0;
for (i = 0; i < n; i++) {
d[i] = a[i] - mean;
t = d[i] * d[i];
sum = sum + t;
}
sum = sum / n;
*s = sqrt(sum);
}

Read more Similar C Programs
Learn C Programming

Simple C Programs

You can easily select the code by double clicking on the code area above. To get regular updates on new C programs, you can Follow @c_program You can discuss these programs on our Facebook Page. Start a discussion right now,

our page! Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button) Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com

C Program to Implement Radix Sort — LSD with Counting Sort Explained

Radix Sort is a non-comparison sorting algorithm — it never compares two elements directly. Instead, it sorts by processing individual digits, one digit position at a time from least significant to most significant (LSD approach). This lets it sort integers in O(n) time for a fixed number of digits, breaking the O(n log n) lower bound that applies to comparison-based sorts.

Key Idea — Sort Digit by Digit

Radix Sort uses a stable subroutine (counting sort) on each digit position. Because counting sort is stable, equal digits preserve the relative order established by previous passes. After processing every digit position, the array is fully sorted.

Step-by-Step Example

Sort [170, 45, 75, 90, 2, 802]:

Initial:         [170,  45,  75,  90,   2, 802]

Pass 1 — ones digit (exp=1):
  digits:          0    5    5    0    2    2
  After sort:  [170,  90,   2, 802,  45,  75]

Pass 2 — tens digit (exp=10):
  digits:          7    9    0    0    4    7
  After sort:  [  2, 802,  45, 170,  75,  90]

Pass 3 — hundreds digit (exp=100):
  digits:          0    8    0    1    0    0
  After sort:  [  2,  45,  75,  90, 170, 802]

Sorted: [2, 45, 75, 90, 170, 802] ✓

Notice that after Pass 1, the two numbers ending in 5 (45 and 75) retain their original order — counting sort is stable, which is what makes the whole algorithm work correctly.

How Counting Sort Works (the subroutine)

For each digit pass, counting sort runs in three steps:

  1. Count — count how many numbers have each digit value (0–9)
  2. Cumulate — convert counts to starting positions using prefix sums
  3. Place — iterate the input backwards (to preserve stability) and place each element at its computed position in the output array

C Program — Radix Sort

#include <stdio.h>

#define MAX 100

/* Stable counting sort on the digit at position exp (1, 10, 100, ...) */
void counting_sort(int arr[], int n, int exp) {
    int output[MAX];
    int count[10] = {0};

    /* Step 1: count occurrences of each digit */
    for (int i = 0; i < n; i++)
        count[(arr[i] / exp) % 10]++;

    /* Step 2: cumulative sum — count[i] now holds the end position of digit i */
    for (int i = 1; i < 10; i++)
        count[i] += count[i - 1];

    /* Step 3: place elements (iterate backwards to keep sort stable) */
    for (int i = n - 1; i >= 0; i--) {
        int digit = (arr[i] / exp) % 10;
        output[--count[digit]] = arr[i];
    }

    /* Copy output back into original array */
    for (int i = 0; i < n; i++)
        arr[i] = output[i];
}

void radix_sort(int arr[], int n) {
    /* Find the maximum element to determine number of digit passes */
    int max = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] > max)
            max = arr[i];

    /* Run counting sort for each digit position: 1, 10, 100, ... */
    for (int exp = 1; max / exp > 0; exp *= 10)
        counting_sort(arr, n, exp);
}

void print_array(int arr[], int n) {
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

int main(void) {
    int n;
    printf("Enter number of elements: ");
    scanf("%d", &n);

    int arr[n];
    printf("Enter %d elements: ", n);
    for (int i = 0; i < n; i++)
        scanf("%d", &arr[i]);

    printf("Before sorting: ");
    print_array(arr, n);

    radix_sort(arr, n);

    printf("After sorting:  ");
    print_array(arr, n);

    return 0;
}

Code Explanation

  • (arr[i] / exp) % 10 — extracts the digit at the current position. exp=1 gives the ones digit, exp=10 gives the tens digit, and so on.
  • Cumulative sum — after count[i] += count[i-1], count[d] holds the index just past where the last element with digit d should be placed.
  • Backwards iteration — iterating i from n-1 to 0 in Step 3 preserves the relative order of elements with the same digit (stability). If you iterate forwards, equal-digit elements end up reversed.
  • Outer loop stops when max / exp == 0 — no more digit positions to process beyond the most significant digit of the maximum value.

Sample Output

Enter number of elements: 6
Enter 6 elements: 170 45 75 90 2 802
Before sorting: 170 45 75 90 2 802
After sorting:  2 45 75 90 170 802

Time and Space Complexity

Case Time Explanation
Best O(n × d) d passes of counting sort, each O(n + 10)
Average O(n × d) Same — no branching based on values
Worst O(n × d) Same structure regardless of input
Space O(n + k) Output array (n) + digit count array (k=10)

Where d = number of digits in the maximum value (e.g. d=3 for numbers up to 999). For a fixed range of integers, d is a constant, making this effectively O(n).

Radix Sort vs Comparison-Based Sorts

Algorithm Average Worst Space Comparison-based Stable
Radix Sort O(n·d) O(n·d) O(n+k) No Yes
Quick Sort O(n log n) O(n²) O(log n) Yes No
Merge Sort O(n log n) O(n log n) O(n) Yes Yes
Heap Sort O(n log n) O(n log n) O(1) Yes No
Counting Sort O(n+k) O(n+k) O(k) No Yes

When to Use Radix Sort

  • Sorting large arrays of integers or fixed-length strings where d is small
  • When you need a stable sort with better than O(n log n) performance
  • Sorting IP addresses, phone numbers, dates, or fixed-length codes
  • Not suitable for: floating-point numbers, variable-length strings, or when extra O(n) memory is not available

Related Sorting Programs in C


As an Amazon Associate we earn from qualifying purchases.

Further Reading

The definitive reference for C — The C Programming Language by Brian Kernighan and Dennis Ritchie. Covers every concept on this site: pointers, arrays, structs, file I/O, and the standard library. Worth having on your desk.

K & R C Programs Exercise 1-19

K and R C, Solution to Exercise 1-19:
Write a function reverse(str) that reverses the character string str. Use it to write program that reverse thes its input a line at a time. K and R C Programs Exercises provides the solution to all the exercises in the C Programming Language, second addition, by Brian W.Keringhan and Dennis M.Ritchie(Prentice Hall,1988). You can learn and solve K&R C Programs Exercise. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include "stdio.h"

#define MAXINLINE 1000 /* maximum input line size */

int get_lines(char line[], int maxline);
void reverse(char str[]);

/* print longest input line */
main() {

char line[MAXINLINE]; /* current input line */

while ((get_lines(line, MAXINLINE)) > 0) {

reverse(line);
printf("%s", line);

}

}

/* getline: read a line into s, return length */
int get_lines(char str[], int line) {
int c, i, j;

for (i = 0, j = 0; (c = getchar()) != EOF && c != 'n'; ++i) {
if (i < line - 1) {
str[j++] = c;
}
}
if (c == 'n') {
if (i <= line - 1) {
str[j++] = c;
}
++i;
}
str[j] = '';
return i;
}

/*reverse the string str*/
void reverse(char str[]) {
int i, j;
char temp;
i = 0;
while (str[i] != '')
++i;
--i;
if (str[i] != 'n')

--i;
j = 0;
while (j < i) {
temp = str[j];
str[j] = str[i];
str[i] = temp;
--i;
++j;
}
}

Read more Similar C Programs
C Basic

K and R C Programs Exercise

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com

K & R C Exercise 1-18

K and R C, Solution to Exercise 1-18:
Remove trailing blanks and tabs from each line of input, and to delete entirely blank lines. K and R C Programs Exercises provides the solution to all the exercises in the C Programming Language, second addition, by Brian W.Keringhan and Dennis M.Ritchie(Prentice Hall,1988). You can learn and solve K&R C Programs Exercise. Read more about C Programming Language .

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/

#include "stdio.h"

#define MAXLINE 1000

int get_lines(char line[], int maxline);
int char remove(char str[]);

main()
{

char line[MAXINLINE];/* current input line */

while((get_lines(line,MAXINLINE))>0)
if(remove(line)> 0)
printf("%s", line);
return 0;

}
/*
remove trailing blanks and tabs from character string str
*/
int remove(char str[])
{
int i=0;
while(str[i] !='n')
++i;

--i;

while(i>=0 && (str[i]==' ' || str[i]=='t'))
--i;
if(i>=0)
{
++i;
s[i]='n';
++i;
s[i]='';

}
return i;
}
/* getline: read a line into str, return length */
int get_lines(char str[], int line)
{
int c, i, j;

for(i = 0, j = 0; (c = getchar())!=EOF && c != 'n'; ++i)
{
if(i < line - 1)
{
str[j++] = c;
}
}
if(c == 'n')
{
if(i <= line - 1)
{
str[j++] = c;
}
++i;
}
str[j] = '';
return i;
}

Read more Similar C Programs
C Basic

K and R C Programs Exercise

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link

(c) www.c-program-example.com

C Program To Implement Interpolation Search

Interpolation search is an algorithm used for searching a given value in an ordered indexed array. Interpolation search is sometimes called as extrapolation search. For uni formally distributed data items Interpolation search is the best method. for example: library books directory. Read more about C Programming Language.

/***********************************************************
* You can use all the programs on www.c-program-example.com
* for personal and learning purposes. For permissions to use the
* programs for commercial purposes,
* contact [email protected]
* To find more C programs, do visit www.c-program-example.com
* and browse!
*
* Happy Coding
***********************************************************/


#include "stdio.h"
#include "stdlib.h"

#define MAX 200

int interpolation_search(int a[], int bottom, int top, int item) {

int mid;
while (bottom <= top) {
mid = bottom + (top - bottom)
* ((item - a[bottom]) / (a[top] - a[bottom]));
if (item == a[mid])
return mid + 1;
if (item < a[mid])
top = mid - 1;
else
bottom = mid + 1;
}
return -1;
}

int main() {
int arr[MAX];
int i, num;
int item, pos;

printf("nEnter total elements (num< %d) : ", MAX);
scanf("%d", &num);

printf("Enter %d Elements : ", num);
for (i = 0; i < num; i++)
scanf("%d", &arr[i]);

printf("nELEMENTS AREn: ");
for (i = 0; i < num; i++)
printf("%dt", arr[i]);

printf("nSearch For : ");
scanf("%d", &item);
pos = interpolation_search(&arr[0], 0, num, item);
if (pos == -1)
printf("nElement %d not foundn", item);
else
printf("nElement %d found at position %dn", item, pos);

return 0;
}
Read more Similar C Programs
C Basic

Search Algorithms.

You can easily select the code by double clicking on the code area above.

To get regular updates on new C programs, you can Follow @c_program

You can discuss these programs on our Facebook Page. Start a discussion right now,

our page!

Share this program with your Facebook friends now! by liking it

(you can send this program to your friend using this button)

Like to get updates right inside your feed reader? Grab our feed!

To browse more C Programs visit this link
(c) www.c-program-example.com