Course Materials

Mockup Midterm Solutions 1

Question 1

Output:

k: 21
b: 0
k: 21
a: 1
k: 21
b: 0
k: 21
a: 0
k: 21
b: 0
z: 23

Question 2

void moveZeros(int arr[], int size) {
    int left = 0;
    int right = size - 1;

    while (left < right) {
        if (arr[left] != 0) {
            left++;
        } else if (arr[right] == 0) {
            right--;
        } else {
            int temp = arr[left];
            arr[left] = arr[right];
            arr[right] = temp;
            left++;
            right--;
        }
    }
}

Question 3

int isEvenPal(char arr[], int size) {
    if (size % 2 != 0) {
        return 0; 
    }
    int freq[26] = {0}; 
    for (int i = 0; i < size; i++) {
        char ch = arr[i];
        if (ch >= 'A' && ch <= 'Z') {
            ch = ch + 32; 
        }
        if (ch >= 'a' && ch <= 'z') {
            freq[ch - 'a']++;
        }
    }
    for (int i = 0; i < 26; i++) {
        if (freq[i] % 2 != 0) {
            return 0; 
        }
    }
    return 1;
}
bool isEvenPal(char arr[], int size) {
    if (size % 2 != 0) {
        return false; 
    }
    int freq[26] = {0}; 
    for (int i = 0; i < size; i++) {
        char ch = arr[i];
        if (ch >= 'A' && ch <= 'Z') {
            ch = ch + 32; 
        }
        if (ch >= 'a' && ch <= 'z') {
            freq[ch - 'a']++;
        }
    }
    for (int i = 0; i < 26; i++) {
        if (freq[i] % 2 != 0) {
            return false; 
        }
    }
    return true;
}

Question 4

int checkSumCondition(int arr[], int size) {
    int evenSum = 0;
    int oddSum = 0;

    for (int i = 0; i < size; i++) {
        if (i % 2 == 0) {
            evenSum += arr[i];
        } else {
            oddSum += arr[i];
        }
    }

    if (evenSum >= 2 * oddSum) {
        return 1;
    } else {
        return 0;
    }
}
bool checkSumCondition(int arr[], int size) {
    int evenSum = 0;
    int oddSum = 0;

    for (int i = 0; i < size; i++) {
        if (i % 2 == 0) {
            evenSum += arr[i];
        } else {
            oddSum += arr[i];
        }
    }

    if (evenSum >= 2 * oddSum) {
        return true;
    } else {
        return false;
    }
}

Question 5

int main() {
    int arr[100];
    int size;
    // Assume arr and size are already initialized with input data.

    int mod2[100], mod3[100], mod2_3[100];
    int size2 = 0, size3 = 0, size2_3 = 0;

    for (int i = 0; i < size; i++) {
        if (arr[i] % 2 == 0) {
            mod2[size2++] = arr[i];
        }
        if (arr[i] % 3 == 0) {
            mod3[size3++] = arr[i];
        }
        if (arr[i] % 2 == 0 && arr[i] % 3 == 0) {
            mod2_3[size2_3++] = arr[i];
        }
    }

    return 0;
}

Question 6

Part A

switch (grade) {
    case 'A':
        printf("Excellent\n");
        break;
    case 'B':
        printf("Good\n");
        break;
    case 'C':
        printf("Average\n");
        break;
    case 'D':
    case 'F':
        printf("Poor\n");
        break;
    default:
        printf("Invalid grade\n");
}
switch (grade) {
    case 'A':
        cout << "Excellent\n";
        break;
    case 'B':
        cout << "Good\n";
        break;
    case 'C':
        cout << "Average\n";
        break;
    case 'D':
    case 'F':
        cout << "Poor\n";
        break;
    default:
        cout << "Invalid grade\n";
}

Part B

if (day == 1 || day == 7) {
    printf("Weekend\n");
} else if (day >= 2 && day <= 6) {
    printf("Weekday\n");
} else {
    printf("Invalid day\n");
}
if (day == 1 || day == 7) {
    cout << "Weekend\n";
} else if (day >= 2 && day <= 6) {
    cout << "Weekday\n";
} else {
    cout << "Invalid day\n";
}