HOMEWORK 1 SOLUTIONS
Program 1:
#include <stdio.h>
void main()
{
int a1, a2;
/* print prompt and input two numbers */
printf("Please input two numbers> ");
scanf("%d %d", &a1, &a2);
/* 0 is divided by all numbers */
if (a2==0)
printf("TRUE\n");
/* 0 does not divide any number */
else if (a1==0)
printf("FALSE\n");
/* figure out if a1 divides a2 */
else
{
if (a2%a1==0)
printf("TRUE\n");
else
printf("FALSE\n");
}
}
Program 2:
#include <stdio.h>
void main()
{
int distance=1;
double converted_d;
while (distance!=0)
{
printf("Please input a distance> ");
scanf("%d", &distance);
/* distance given in miles */
if (distance>0)
{
converted_d=8.0*(double)distance/5.0;
printf("%5d miles are %9.3f
kilom\n", distance, converted_d);
}
/* distance given in kilometers */
else if (distance<0)
{
converted_d=-5.0*(double)distance/8.0;
printf("%5d kilom are %9.3f miles\n", -distance, converted_d);
}
}
}
Program 3:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main()
{
int secretNumber;
int guess, lowerBound=0, upperBound=100, Nguess=0;
srand( (unsigned)time(NULL) );
secretNumber = (int)( 101.0 * (double)rand() / ((double)RAND_MAX+1.0) );
do
{
Nguess++; /* increase #guesses by one */
printf("Make a guess between %03d and %03d >",
lowerBound, upperBound);
scanf("%d", &guess);
/* guess out of bounds */
if ((guess<lowerBound) || (guess>upperBound))
{
printf("%03d is not in the interval [%03d,%03d]\n",
guess, lowerBound, upperBound);
Nguess--; /* invalid
guesses do not count */
}
/* guess is lower than secret number */
else if (guess<secretNumber)
{
lowerBound=guess+1;
printf("The secret number is HIGHER than %03d\n", guess);
}
/* guess is higher than secret number */
else if (guess>secretNumber)
{
upperBound=guess-1;
printf("The secret number is LOWER than %03d\n", guess);
}
}
while (guess!=secretNumber);
/* guess is correct */
printf("Correct! The secret number is %03d. Number of guesses: %03d\n",
secretNumber, Nguess);
}