Skip to content

10.24 Tutorial2

intro-to-computer-science-gtiit-tutorial-02-2024.pdf

Introduction to Computer Science

Tutorial 2: Variables, Arithmetic Operators, printf()​, scanf()

1. Linux Processes

Exercise 1. Using CTRL+z​, &​, and CTRL+c​, do the following: get 3 background processes running in a terminal at the same time and show that they are running with the command jobs​, then terminate all 3 of them. Choose sufficient amounts of time for the commands to last enough (e.g., more than 30 seconds). You should see the output of jobs showing the three processes as "running."

The command of killing sleep: killall sleep

2. C Programs with scanf()​ and printf()

Exercise 2. Write a C program that asks the user for 3 integer values, then prints their average (using the +​ and / operators).

#include <stdio.h>
int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    printf("The average between %c, %d and %d is %f\n",a,b,c (a + b +c)/3.0);
    // or you can: printf("%f\n", ((float)(a + b +c)/3)); which means convert the int to float
    // and %c is same effect with %d because a number is also a character.
    return 0;
}

Exercise 3. Write a C program that asks the user for 2 integer values, representing the length and width of a rectangle, then prints the perimeter and area of the rectangle.

#include <stdio.h>
int main() {
    int length, width;
    printf("Please enter the length and width of a rectangle:");
    scanf("%d %d", &length, &width);
    printf("The area of rectangle is %d\n", length*width);
    printf("The perimeter of rectangle is %d\n", (length+width)*2); 
    return 0;
}

3. C Programs with Conditions

Exercise 4. Write a C program that does the following:

  • Declare two int​ variables a​ and b
  • Ask the user for two values for these variables a​ and b
  • Then, if a​ is equal to b, print "a and b are equal"
  • Else, if a​ is strictly greater than b, print "a is greater"
  • Else, print "b is greater"
  • Finally, print the absolute value of the difference between a​ and b

Hint: If x​ is an arithmetic expression, the expression abs(x) gives its absolute value.

#include <stdio.h>
#include <stdlib.h>
int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    if (a==b) {
           printf("%d is equal to %d\n",a ,b);}
    else if (a<b) {
           printf("%d is less than %d\n",a ,b);}
    else {
           printf("%d is bigger than %d\n",a ,b);}
    printf("The difference is: %d\n", abs(a-b));
    return 0;
}
#include <stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    if (a % 5 == 0) {
           printf("%d is divisible by 5\n",a);}
    else {
           printf("%d is not divisible by 5\n",a);}
    return 0;
}

4. Manual Execution

"Manual execution" works as follows. A C program is given (typically without boilerplate like #include <...>​, main(){...}), and you have to create a table that shows the execution of the program. Each row starts with the statement being evaluated. Each variable has its own column, indicating new values when updated. There is also a "condition" column that indicates TRUE/FALSE if the statement is a condition.

The point of the exercise is not only to correctly perform the assignments and arithmetic operations but also to follow the program's execution with respect to conditional structures (if​, if-else).

Example:

image

int a = 1;
if (a < 4)
    a = a + 4;
else
    a = a - 1;
if (a > 4)
    a = a + 1;
else
    a = a - 1;

Exercise 5. For each of the following C programs, write the table of manual execution. The table should contain a "statement" column, then a column for every variable in the program, and a "condition" column.

1.1

int a = 35;
int b = 7;
a = a % 10;
b = a + b;
if (a + b > 10) {
    a = 0;
} else {
    b = 0;
}
a b condition
int a = 35 35
int b = 7 7
a = a % 10 5
b = a + b 12
a + b > 10 True
a = 0 0 12

1.2

int i = 2;
if (i > 0) {
    i = i + 2;
}
if (i > 3) {
    i = i - 3;
}
i condition
int i = 2 2
i > 0 True
i = i + 2 4
i > 3 True
i = i - 3 1

1.3

int b = 7;
int c = 0;
if (b > 9) {
    c = 1;
} else if (b > 5) {
    c = 2;
} else {
    c = 3;
}
b c condition
int b = 7 7
int c = 0 0
b > 9 False
b > 5 True
c = 2 2

5. Simplifying Programs with "if-else" Statements

Exercise 6. Simplify the following programs by using else statements wherever relevant.

Program 1 (badif01.c)

Raw:

main() {
    int x;
    scanf("%d", &x);
    if (x > 0)
        printf("x is positive");
    if (x < 0)
        printf("x is negative");
    if (x == 0)
        printf("x is zero");
}

Modified:

main() {
    int x;
    scanf("%d", &x);
    if (x > 0)
        printf("x is positive");
    else if (x < 0)
        printf("x is negative");
    else
        printf("x is zero");
}

Program 2 (badif02.c)

Raw:

main() {
    int bill_y, wallet_y, wallet_usd;
    int d_to_y = 7;

    scanf("%d", &bill_y);
    scanf("%d", &wallet_y);
    scanf("%d", &wallet_usd);

    if (wallet_y >= bill_y)
        printf("Pay in yuans.");
    if (wallet_y < bill_y) {
        if (wallet_usd * d_to_y >= bill_y)
            printf("Pay in dollars.");
        if (wallet_usd * d_to_y >= bill_y)
            printf("Cannot pay.");
    }
}

Modified:

main() {
    int bill_y, wallet_y, wallet_usd;
    int d_to_y = 7;

    scanf("%d, %d, %d", &bill_y, &wallet_y, &wallet_usd);
    if (wallet_y >= bill_y)
        printf("Pay in yuans.");
    else (wallet_y < bill_y) {
        if (wallet_usd * d_to_y >= bill_y)
            printf("Pay in dollars.");
        else (wallet_usd * d_to_y >= bill_y)
            printf("Cannot pay.");
    }
}