Exercise 4 1. Write a program that simulates coin tossing. For each toss of the coin the program should print Heads or Tails. Let the program toss the coin 100 times, and count the number of times each side of the coin appears. Print the results. The program should call a separate function flip that takes no arguments and returns 0 for tails and 1 for heads. (Use srand() and rand() function.) <example code that generates 10 random integers > #include <stdio.h> #include <stdlib.h> /* RAND.C: This program seeds the random-number generator * with the time, then displays 10 random integers. */ #include <time.h> void main( void ) { int i; /* Seed the random-number generator with current time so that * the numbers will be different every time we run. */ srand( (unsigned)time( NULL ) ); /* Display 10 numbers. */ for( i = 0; i < 10;i++ ) printf( " %6d\n", rand() ); } 2. Write a program that simulates the rolling of two dice. The program should use rand() to roll the first die, and should use rand() again to roll the second die. The sum of the two values should then be calculated. [Note: Since each die can show an integer value from 1 to 6, then the sum of the two values will vary from 2 to 12, with 7 being the most frequent sum and 2 and 12 the least frequent sums.] Your program should roll the two dice 36,000 times and print the number of cases among 36,000 and probability for each sum value. The result of your program should look similar to the following output example (exact number may be different). #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i; int sum; int sum_count[13] = {0}; // all initialized to 0 // put your code here return 0; } Output Example 2 : 1026 (0.028500) 3 : 2023 (0.056194) 4 : 2988 (0.083000) 5 : 4086 (0.113500) 6 : 5018 (0.139389) 7 : 5978 (0.166056) 8 : 4928 (0.136889) 9 : 3992 (0.110889) 10 : 3096 (0.086000) 11 : 1907 (0.052972) 12 : 958 (0.026611) 3. What does following program compute and print? Understand why such output results are obtained. What happens if the parameter b of mystery is negative integer or zero? #include <stdio.h> int count=0; int mystery(int a , int b); int main(void) { int x, y; printf("Enter two integers: "); scanf("%d %d", &x, &y); printf("The result is %d\n",mystery(x ,y)); return 0; } int mystery(int a, int b) { int c; printf("[BEFORE] count=%d , a=%d , b=%d\n",++count,a,b); if (b == 1) c=a; else c=a+mystery(a, b-1); printf("[AFTER] count=%d , a=%d , b=%d\n",--count,a,b); return c; } 4. Write a program that has the input and output as follows : input : N (N<1000) , N integer numbers output : print the N numbers in reverse order #include <stdio.h> Input Example : #define SIZE 10 4 1 5 9 3 int main() { int num[1000]; int N, i; // put your code here return 0; } Output Example : 3 9 5 1 5. Write a program that takes an integer decimal value from a keyboard (standard input) and print a binary number of the value (as standard output). Your output should have16 binary digits. (You may assume that input decimal value can be represented with 16 bit integer number (less than 2^16.) For example, 21 keyboard input should be writen as 0000 0000 0001 0101 output #include <stdio.h> void print_bin(int n) { // put your code here } int main() { int decimal_val; scanf(“%d”,&decimal_val); print_bin(decimal_val); return 0; }