Download presentation
Presentation is loading. Please wait.
Published byLorenzo Lavine Modified over 9 years ago
1
2007 Pearson Education, Inc. All rights reserved. Structs as Function Arguments and Results Arrays – Pass by referance Struts – the same way as the basic types in C - char, int, float - passed as arguments - returned as results 1
2
2007 Pearson Education, Inc. All rights reserved. typedef struct Person{ int age; char gnd; float weight; } PERSON; 2
3
2007 Pearson Education, Inc. All rights reserved. the use of the members of a struct. int adjustAge( int oldAge ){ if ( oldAge < 39 ) return( ++oldAge ); else return( oldAge ); /*return (oldAge<39) ? ++oldage : oldage;*/ } void main(){ PERSON Jim; : Jim.age = adjustAge( Jim.age ); : } 3
4
2007 Pearson Education, Inc. All rights reserved. typedef struct Book{ int edition; int pages; double weight; char type; int WC; /*weight classification 1 heavy, 0 is not */ } BOOK; Write a function tack an argument double to test the weight of a book and return 1 if the weight greater than 2 and 0 otherwise. The value to be assign to WC member. 4
5
2007 Pearson Education, Inc. All rights reserved. int weightC(double w){ if(w > 2) return 1; else return 0; } void main(){ BOOK myBok; : myBoK.wc = weightC(myBok.weight); : } 5 int weightC(double w){ return (w > 2)? 1 : 0; }
6
2007 Pearson Education, Inc. All rights reserved. ASS Consider the student struct: add a new member name it GL /*Grades Later*/ Write a function tack a double to test the average of the student and return a later match the average to be assign to the new member Test the function 6
7
2007 Pearson Education, Inc. All rights reserved. The whole of a struct is returned by a function PERSON get_details() { PERSON temp; printf("Please enter Age, Gender and Weight (Kg): "); scanf("%d %c%f", &temp.age, &temp.gnd, &temp.weight ); return temp; } void main(){ PERSON Jim, Mary, Sid; : Jim = get_details(); : } 7
8
2007 Pearson Education, Inc. All rights reserved. Write a function allow the user to input the details of a BOOK and return it back typedef struct Book{ int edition; int pages; double weight; char type; } BOOK; 8
9
2007 Pearson Education, Inc. All rights reserved. BOOK GetBook(){ BOOK tmp; printf(“\nEnter the BOOK information:”); printf(“ [edition, pages, weight, and type]”); scanf(“%d%d%f%c”, &tmp.edition, &tmp.pages. &tmp.weight. &tmp.type); retrun tmp; } void main(){ BOOK myBook; : myBook = GetBook(); : } 9
10
2007 Pearson Education, Inc. All rights reserved. ASS Write a function allow the user to input the details of a STUDENTand return it back Test the function 10
11
2007 Pearson Education, Inc. All rights reserved. Passing a struct as a function argument void show_details( PERSON who ){ printf( "Person's age was: %d\n", who.age ); printf( " Gender was: %c\n", who.gnd ); /* Kg -> lb */ who.weight = who.weight * 2.2; printf( " weight (lb) was: %5.1f\n", who.weight ); } void main(){ PERSON Jim, Mary, Sid; : Jim = get_details(); : show_details(Jim); } 11
12
2007 Pearson Education, Inc. All rights reserved. Write a function tack a BOOK and print the content out 12
13
2007 Pearson Education, Inc. All rights reserved. void PrintBook( const BOOK b){ printf(“The BOOK information:\n”); printf(“\n\tedition: %d\n\tpages: %d”, b.edition, b.pages); printf(“\n\tweight: %f \n\ttype: %c”, b.weight, b.type); } void main(){ BOOK myBook = {2, 120, 2.5, ‘A’}; : PrintBook(myBook); : } 13
14
2007 Pearson Education, Inc. All rights reserved. ASS Write a function tack a STUDENT and print the content out Test the function 14
15
2007 Pearson Education, Inc. All rights reserved. Arrays of structs to store the same package of information for a number of different entities typedef struct Person{ int age; char gnd; float weight; } PERSON; 15
16
2007 Pearson Education, Inc. All rights reserved. Arrays of structs PERSON employee[12]; We have an array of 12 elements each of which is a structure with 3 members. We can access any member of any element, employee[9].age = 45; Also we can treat each element as a whole struct show_details(employee[5]); employee[3] = get_details(); 16
17
2007 Pearson Education, Inc. All rights reserved. Consider the following struct BOOK, Create an array of three BOOK s typedef struct Book{ int edition; double weight; char type; } BOOK; 17
18
2007 Pearson Education, Inc. All rights reserved. BOOK academic[3]; BOOK academic[3] = { {1,2.5,’a’}, {2,3.5,’n’}, {2,1.5,’a’} }; Read in the information of the second 18
19
2007 Pearson Education, Inc. All rights reserved. academic[1] = GetBook(); Printout the information of the first 19
20
2007 Pearson Education, Inc. All rights reserved. PrintBook(academic[0]); Printout the content of the array 20
21
2007 Pearson Education, Inc. All rights reserved. int i; for(i=0; i<3; i++) PrintBook(academic[i]); 21
22
2007 Pearson Education, Inc. All rights reserved. ASS 1. Create an array of four STUDNTs with initial values 2. – Create another array of five STUDNTs – Read in the information of the whole student – Printout the content – Assign the second the information of the second of the array created at 1 – Printout the information of the second 22
23
2007 Pearson Education, Inc. All rights reserved. Structs Containing Arrays typedef struct{ int age; char gnd; float weight; char name[20]; } HUMAN; HUMAN ahm = { 45, ‘M’, 95.1, “Ahmad Ali”}; HUMAN ahm = { 45, ‘M’, 95.1, {‘A’, ‘h’, ‘m’, ‘a’, ‘d’, ‘ ‘, ‘A’, ‘l’, ‘i’, ‘\0’}}; 23
24
2007 Pearson Education, Inc. All rights reserved. char initial = ahm.name[0]; putchar(initial); Printout the 3 rd char of ahm’s name 24
25
2007 Pearson Education, Inc. All rights reserved. char third = ahm.name[2]; printf(“%c”, third); /*putchar(third)*/ allow the user to input the 6 th char of ahm’s name 25
26
2007 Pearson Education, Inc. All rights reserved. scanf(“%c”, &ahm.name[5]); print the name char by char 26
27
2007 Pearson Education, Inc. All rights reserved. int i; for(i=0; i<20; i++) putchar(ahm.name[i]); i=0; while( ahm.name[i] != ‘\0’) putchar(ahm.name[i++]); Print out the name at once 27
28
2007 Pearson Education, Inc. All rights reserved. printf(“%s\n”, ahm.name); puts(ahm.name); allow the user to input the ahm’s name 28
29
2007 Pearson Education, Inc. All rights reserved. scanf(“%s”, ahm.name); gets(ahm.name); Which is better? 29
30
2007 Pearson Education, Inc. All rights reserved. typedef struct Book{ int edition; double weight; char type; } BOOK; Rewrite the BOOK with a new member title 30
31
2007 Pearson Education, Inc. All rights reserved. typedef struct Book{ int edition; double weight; char type; char title[30]; } BOOK; Create a variable of book with initial values 31
32
2007 Pearson Education, Inc. All rights reserved. BOOK myBook = {1,2.5,’a’, “C programming” } change the title to “c how to program” 32
33
2007 Pearson Education, Inc. All rights reserved. gets(myBook.title); scanf(“%s”, myBook.title); 33
34
2007 Pearson Education, Inc. All rights reserved. ASS Create a Time struct with classification member (“PM”, “AM”) Write a function to print out the content of the Time Create a STUDENT struct with a name member up to 30 char Write two functions to read the information of a student and the second to print out the information. 34
35
2007 Pearson Education, Inc. All rights reserved. HUMAN client[2] = { 35, ‘M’, 95.1, “Ahmad Ali”, 25, ‘F’, 50.9, "Salma Zakarea” }; printf( "%s\n", client[1].name ); printf( "%c\n", client[1].name[0] ); 35
36
2007 Pearson Education, Inc. All rights reserved. HUMAN client[2] = { 35, ‘M’, 95.1, “Ahmad Ali”, 25, ‘F’, 50.9, "Salma Zakarea” }; HUMAN temp; Assign the values of first client to temp typedef struct{ int age; char gnd; float weight; char name[20]; } HUMAN; 36
37
2007 Pearson Education, Inc. All rights reserved. temp = client[0]; temp.age = client[0].age; temp.gnd = client[0].gnd; Temp.weight = client[0].weight; strcpy(temp.name, client[0].name); 37
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.