Your tutor has asked a lab pair to present their week 3 work.
Discuss the good, the bad and the ugly aspects of their code.
Please be gentle in any criticism - we are all learning!
1 1 1 1 6
2 2 2 5 4
int i; while (i < 100) { printf("%d\n", i); i = i + 1; }
int i = 0; int j = 0; while (j = 1 || i < 100) { printf("%d\n", i); i = i + 1; }
int i = 0; int n = 10; while (i < n) { printf("%d\n", i); n = n + i; i = i + 1; }
int i = 0; while (i < 10) printf("%d\n", i); i = i + 1;
numbers
int numbers[20];
and your
program assigns a value to each element in the array, what is the
problem with the statement x = numbers[20];
?
Write a C code fragment to store, in each element of this array, the square of the index of that element, e.g., squares[5] would contain the value 25.
#include <stdio.h>
int main(void) {
printf("%d\n", 13 < 42);
printf("%d\n", 13 < 42 || 42 > 50);
printf("%d\n", 13 < 42 && 42 > 50);
printf("%d\n", 13 && 42);
printf("%d\n", 13 || 42);
return 0;
}
Obviously your partner's code has to be completely rewritten, but
first figure out what it will print and why?
Your tutor may still choose to cover some of the questions time permitting.
./asterisks Please enter an integer: 5 * * * * *
#include <stdio.h>
int main(void) {
int number;
int row, column;
// Obtain input
printf("Enter size: ");
scanf("%d", &number);
row = 1;
while (row <= number) {
column = 1;
while (column <= number) {
printf("*");
column = column + 1;
}
printf("\n");
row = row + 1;
}
return 0;
}
The output if the user types in the number 5 is:
./square Enter size: 5 ***** ***** ***** ***** *****Modify the program so that it prints out a triangle like this:
./triangle Enter number: 5 ----* ---** --*** -**** *****Now modify so it prints the following pattern:
./diagonal Enter an integer: 10 *--------- -*-------- --*------- ---*------ ----*----- -----*---- ------*--- -------*-- --------*- ---------*Now modify so it prints the following pattern:
./bars Enter an integer: 9 -*-*-*-*- -*-*-*-*- -*-*-*-*- -*-*-*-*- -*-*-*-*- -*-*-*-*- -*-*-*-*- -*-*-*-*- -*-*-*-*-
./rectangle Enter rectangle height and length: 3 5 ***** * * *****
./diamond Enter side length: 3 * * * * * * * * ./diamond Enter side length: 6 * * * * * * * * * * * * * * * * * * * *
./read_ints Please enter some integers: 10 -90 100 999 78hello You entered 5 integers ./read_ints Please enter some integers: 1 2 3 4 5 6 7 8 9 10 11 12 hello You entered 12 integers
./multiplication_table Enter multiplication table size: 5 1| 1 2 3 4 5 2| 2 4 6 8 10 3| 3 6 9 12 15 4| 4 8 12 16 20 5| 5 10 15 20 25
./guess_number Random number is between 1 and 100. Enter your guess: 50 Random number is between 1 and 50. Enter your guess: 40 Random number is between 1 and 40. Enter your guess: 37 Yay, you guessed the number 37 correctly! ./guess_number Random number is between 1 and 100. Enter your guess: 80 Random number is between 80 and 100. Enter your guess: 90 Random number is between 80 and 90. Enter your guess: 85 Random number is between 80 and 85. Enter your guess: 83 Random number is between 80 and 83. Enter your guess: 82 Yay, you guessed the number 82 correctly!
3 + 5 * 10 - 12
a > 5 || b < 3
a = b > c && b || d
!a || a && c
Figuring this out can be a bit tedious and prone to errors. The moral? In complex expressions make your intention explicit by using parentheses.
Note: The precedence rules of arithmetic operators in C follow the conventions used in mathematics.
int input_num, i; printf("Enter a number: "); scanf("%d", &input_num); i = input_num; if (i <= 5) { printf("%d\n", i * i); i++; }
int input_num, i; printf("Enter a number: "); scanf("%d", &input_num); i = input_num; while (i <= 5) { printf("%d\n", i * i); i++; }