ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση αποτελείται από δύο μέρη: Α) Το τμήμα των πολλαπλών επιλογών (50%), όπου κάθε ερώτηση έχει μια σωστή απάντηση και βαθμολογείτε με 2.5 βαθμούς και Β) Το τμήμα ερωτήσεων και συγγραφής προγράμματος (50%). Για το πρώτο τμήμα οι απαντήσεις σημειώνονται στον ειδικό πίνακα. Για το δεύτερο τμήμα οι απαντήσεις να γραφούν στις κενές σελίδες. Μέρος Μεγ. Βαθμολογία Βαθμολογία Α 50 Β.1 10 Β.2 20 Β.3 20 Σύνολο 100 Καλή Επιτυχία!
Μέρος Α: Σημειώστε τις απαντήσεις σας για τις ερωτήσεις Πολλαπλής επιλογής στον ακόλουθο πίνακα: Ερώτηση α β γ δ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2
Μέρος Α 1. Πόσες φορές θα τυπωθεί ο αριθμός 10 εάν εκτελεστεί ο πιο κάτω κώδικας; int a=3; do { printf( %d,10); a++; } while (a<2); α. 0 β. 1 γ. 2 δ. 3 2. Πότε θα ικανοποιηθεί η πιο κάτω συνθήκη; if ((x>3) &&!(x<=10)) α. Εάν το x είναι μεταξύ του 3 και του 10, μη συμπεριλαμβανομένων β. Εάν το x είναι μεγαλύτερο ή ίσο του 10 γ. Εάν το x είναι μεγαλύτερο του 10 δ. Ποτέ 3. Ποια από τα πιο κάτω δεν μπορούν να αποτελέσουν όνομα μεταβλητής; α. 1,2 β. 1,3,4 γ. 2,4,5 δ. 2,3,5 1. my_number 2. my number 3. mynumber3 4. 3mynumber 5. mynumber& 4. Ποιο από τα πιο κάτω είναι λάθος; α. int a,b; β. int a=3, b=4; γ. int a=3, int b=4; δ. int a=3; int b=4; 3
5. Τι θα τυπώσει ο πιο κάτω κώδικας: α. 1, 2.5, 2.0 β. 2, 2.5, 2.5 γ. 2, 2.0, 2.0 δ. 2, 2.5, 2.0 int a=5; int b=2; printf( %d,, a/b); printf( %.1f,, (double)a/b); printf( %.1f, (double) (a/b)); 6. Πόσες φορές θα τρέξει ο πιο κάτω βρόγχος; α. 40 β. 80 γ. 44 δ. 50 int x,y; for (x=0; x<10; ++x) for (y=4; y <12; y+=2) 7. Ποιο από τα πιο κάτω δεν θα ληφθεί από τον μεταγλωττιστή σαν κάποιο σχόλιο. α. /* Variable Declaration */ β. // Variable Declaration γ. // Variable Declaration */ δ. / Variable Declaration*/ 8. Aν int a=5 ποιο είναι το αποτέλεσμα της πιο κάτω έκφρασης; (a*2*3)/10+a/2+-a; α. 0 β. 3 γ. 10 δ. κανένα από τα πιο πάνω 4
9. Ποια είναι η τελική τιμή της μεταβλητής z μετά την εκτέλεση του πιο κάτω κώδικα; α. 3 β. 4 γ. 7 δ. 8 int n=5; int z=0; if ( n>=10 n<6) z=3; else z=7; ++z; 10. Τι θα τυπώσει o πιο κάτω κώδικας; α. other β. 1, γ. 1,2, δ. 1,2,3, int a=1; switch (a) { case 0: printf( 0, ); break; case 1: printf( 1, ); case 2: printf( 2, ); break; case 3: printf( 3, ); break; default: printf( other ); } 11. Με ποια από τις επιλογές είναι ισοδύναμη η παρακάτω έκφραση; (x είναι ακέραιος) ((x>=1) && (x!=3)) α. (( x < 3) && (x>=1)) (x >3) β. (x >3) && (x<3) γ. (x >3) (x >1) δ. (( x <3) && (x >1)) && (x >3) 5
12. Ποια θα είναι η τελική τιμή της μεταβλητής b μετά την εκτέλεση του πιο κάτω κώδικα; int a=5; int b=0; b= a++; a= ++b; a= ++a; α. 6 β. 7 γ. 8 δ. κανένα από τα πιο πάνω 13. Τι θα τυπώσει ο πιο κάτω κώδικας; α. 1,2,4,5, β. 1,3,4,5, γ. 1,2, δ. 1, int a=1; while (a<=5){ printf ( %d,, a); if (a%2==0) break; ++a; } 14. Σε ποιες γραμμές του πιο κάτω κώδικα υπάρχει λάθος; 1 #include <stdio.h> 2 #define pi=3.14 3 main() 4 { 5 int a=1; 6 do { printf( I love EPL032 ); 7 a+=2; 8 }while(a<8) 9 } α. 2,8 β. 2,6,7 γ. 1,2,8 δ. 2,7,8 6
15. Τι θα τυπώσει το πιο κάτω πρόγραμμα; α. 1,2, β. 2, γ. 2,3,4, δ. 2,3, int a=2; if (a==1) printf( %d,,1); else if (a==2) printf( %d,,2); else if (a>=2) printf( %d,,3); else printf( %d,,4); 16. Πόσες φορές θα εκτελεστεί ο πιο κάτω βρόγχος; int i,b; for (i=5; i!=0; --i) b= --i; α. καμία β. 6 γ. 5 δ. άπειρες (ατέρμων βρόγχος) 17. Ποιο είναι το αποτέλεσμα της εκτέλεσης του πιο κάτω κώδικα; α. α=5,b=4 β. α=5,b=2 γ. α=4, b=3 δ. α=6, b=3 int a=5; int b=3; if (a>=3 && b<5){ if (a<=4) ++a; else ++b; } else --b; 7
18. Ποια από τα πιο κάτω δεν αποτελoύν σωστό πρότυπο (δήλωση) μιας συνάρτησης; α. 2,3,4 β. 4 γ. 3,4 δ. 1,3 1. double power(double, double); 2. double power(double x, double y); 3. double power(double x, double) 4. double power(double x=5, double y); 19. Τι θα τυπώσει το πιο κάτω πρόγραμμα; α. 1110 β. 0111 γ. 01110 δ. 11100 main() { int a=14; while (a!=0) printf( %d, a%2); a/=2; } 20. Τι θα τυπώσει ο πιο κάτω κώδικας; α. 2.50 β. 6.25 γ. 2.5 δ. 6.2 #include <stdio.h> double square_m(double x){ return x*x; } main() { double x=2.5; square_m(x); printf( %.2f, x); } 8
Μέρος Β Άσκηση 1 (10 μονάδες) Η μεταγλώττιση του πιο κάτω προγράμματος θα παράξει ένα ή περισσότερα λάθη. Ποια είναι τα λάθη και γιατί; Αναφέρετε το κάθε λάθος, ξεκινώντας με τον αριθμό γραμμής που περιέχει το λάθος. Αναφέρετε το κάθε λάθος μόνο μια φορά. 1. #include stdio.h 2. #define STATHERA 1 3. int aplo(int a); 4. int 5. aplo(int x) 6. { 7. integer e, s#1; 8. s#1 = x + STATHERA; 9. e = x/3 + s#1; 10. return e; 11 } 12. int 13. main() 14. { 15. float stathera, else; 16. scanf( %f\n, stathera); 17. else = stathera; 18. stathera= aplo(stathera, stathera); 19. printf( %d %d %d \n, stathera, else, e); 20. return 0; 21. } Απάντηση: 9
Άσκηση 2 (20 μονάδες) Γράψετε μια συνάρτηση με το όνομα compute η οποία θα δέχεται σαν είσοδο τρεις παραμέτρους τύπου ακεραίους a, b και c. H συνάρτηση θα υπολογίζει και επιστρέφει μια τιμή βάση του πιο κάτω αλγορίθμου: εάν το a είναι μικρότερο του 40 και το b μικρότερο του 40 τότε επέστρεψε 0 (μηδέν) αλλιώς αν το c είναι μεγαλύτερο ή ίσο του 90 επέστρεψε 100 αλλιώς επέστρεψε το c 10
Άσκηση 3 (20 μονάδες) Μετά από μελέτες της τελευταίας δεκαετίας του εικοστού αιώνα, δημιουργήθηκε το ακόλουθο μοντέλο, το οποίο παρουσιάζει το ρυθμό αύξησης του πληθυσμού της επαρχίας Πάφου σαν συνάρτηση: P(t)= 53.966 + 2.184t όπου t είναι τα χρόνια μετά το 1990, και P είναι ο πληθυσμός σε χιλιάδες. Δηλαδή, το P(0) αντιπροσωπεύει τον πληθυσμό το 1990, ο οποίος είναι ίσος με 53.966 χιλιάδες κατοίκους. Γράψτε ένα πρόγραμμα, το οποίο θα ορίζει μια συνάρτηση με όνομα population η οποία θα προβλέπει τον πληθυσμό της Πάφου τη χρονιά που θα δίδεται σαν παράμετρος εισόδου. Tο πρόγραμμα θα καλεί αυτή τη συνάρτηση και θα αλληλεπιδρά με το χρήστη ως ακολούθως: Enter a year after 1990 > 2015 Predicted Paphos population for 2015 (in thousands) : 108.566 11
Κενή σελίδα 12