Exercise 18 - CBD page 118

Solution index                   Textual C program


#include <stdio.h>

int main(void){

  int k, m, n, i, sum = 0;

  printf("Enter two integers m an n.\n");
  scanf("%d %d", &m, &n);

  printf("Enter an integer k greater than 1.\n");
  scanf("%d", &k);

  for(i=m; i<=n; i++){
    if (i % k == 0){
      sum += i;
    }
  }

  printf("Sum of numbers between %d and %d that are divisible by %d: %d \n", m, n, k, sum);
 
  return 0;
}

This is a solution to exercise 18 on page 118 of C by Dissection. For some given integer input n, m, and k we are asked to add all those integers, i, between n and m for which i % k == 0.
 

  int k, m, n, i, sum = 0;
The variables k, m, n, i and sum are declared.
 

  printf("Enter two integers m an n.\n");
  scanf("%d %d", &m, &n);

  printf("Enter an integer k greater than 1.\n");
  scanf("%d", &k);
The user is first asked to enter values for the variables m and n. Next, the user is asked to enter a k value greater than 1. There is no control nor consequence, however, if k is one or below.
 

  for(i=m; i<=n; i++){
    if (i % k == 0){
      sum += i;
    }
  }
The variable i runs from m to n. If m happens to be larger than n, nothing happens at all. In a normal cases, however, m is supposed to be smaller than n. If i is divisible by k (if i % k equals 0), we accumulate the i value in the variable sum. Notice the % operator, which is called modulus. x % y returns the remainder of the integer division x / y.
 

  printf("Sum of numbers between %d and %d that are divisible by %d: %d \n", m, n, k, sum);
The result is printed in a nice way, using the control string of the printf commmand.
 


Generated: Wednesday, March 29, 2006, 12:33:18
This program dissection page is generated from an XML-in-LAML source file