In C programming You will come up with your own program that must include a number of the topics we talked about this semester as outlined below. You are not restricted to this list, but must utilize at least SIX items from the following list: Strings •2D Arrays •File I/O •Command Line Arguments •Pass by Reference •Structures •Linked Lists (Pointers) •Stack/Queue •Custom Header Files Your program should not be a simple implementation of six of the topics listed above, but should make sense as a semi-real world example. The originality and creativity of your program will be graded. You must also include proper documentation for your program. This should include (but isn\'t necessarily limited to) comments in the code where necessary, author name documented at the top of the program, and documentation on how to use the program, including what topics from the above list are included in the program. You may choose to include this documentation in your program itself as a commented section, or turn in a separate .txt document Solution Answer #include<stdio.h> //here defining the functions what they documented above file //pass by reference void passByReference(int *value) { printf(\"I\'ve received value %d\ \", *value); (*value)++; } //structure declaration struct BooksDetails{ char title[50]; char author[50]; char subject[100]; int  book_id; }; int main() { //structure declaration with variable struct BooksDetails b1;       /* Declare b1 of type BookDetails */ struct BooksDetails b2;       /* Declare b2 of type BooksDetails */ int i, j; // 2 D Arrays declaration int a[3][2] = { { 6, 3 }, { 5, 4 }, { 8, 1 }}; //iteration of Arrays column and row wise for (i = 0; i < 3; i++) { for (j = 0; j < 2; j++) { printf(\"%d \", a[i][j]); } printf(\"\ \"); } //pass by reference int variable = 111; //pass by reference functionality. passByReference(&variable); printf(\"variable %d\ \", variable); return 0; } .