ΔΗΜΟΣΙΑ Ι.Ε.Κ. ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (ΓΛΩΣΣΑ C) ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΕΡΩΤΗΣΕΙΣ ΠΙΣΤΟΠΟΙΗΣΗΣ

Σχετικά έγγραφα
Ινστιτούτο Επαγγελµατική Κατάρτιση Κορυδαλλού "ΤΕΧΝΙΚΟΣ ΣΥΣΤΗΜΑΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ" (Ερωτήσεις Πιστοποίησης στην γλώσσα προγραµµατισµού C)

Προγραμματισμός II (Γλώσσα C)

Σημειώσεις για πρόοδο στο εργαστήριο

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Ι (ΗΥ120)

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Γλώσσα Προγραμματισμού C

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΞΕΤΑΣΕΙΣ ΧΕΙΜΕΡΙΝΟΥ ΕΞΑΜΗΝΟΥ Ερωτήσεις

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; }

Εισαγωγή στον Προγραμματισμό

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Αʹ. Πίνακες. Άσκηση 1. Λύση. Άσκηση 2. Λύση. Ασκήσεις Εργαστηρίου Προγραμματισμού

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

Τύποι Δεδομένων Είσοδος/Έξοδος

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Δομημένος Προγραμματισμός (ΤΛ1006)

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

Εντολές ελέγχου ροής if, for, while, do-while

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

Εκτέλεση της εντολής1 και στη συνέχεια εκτέλεση της ΕΝΟΤΗΤΑΣ και της εντολής2 όσο η ΣΥΝΘΗΚΗ είναι αληθής.

Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΞΕΤΑΣΕΙΣ ΕΑΡΙΝΟΥ ΕΞΑΜΗΝΟΥ Ερωτήσεις

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 4: Έλεγχος Ροής. Κ.

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 6: Πίνακες. Κ.

Η γλώσσα προγραμματισμού C

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C

4. Επιλογή και Επανάληψη

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Προγραμματισμό για ΗΜΥ

Μεθόδων Επίλυσης Προβλημάτων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Η γλώσσα προγραμματισμού C

EΒ ΟΜΑ Α 3 Η. Άλλοι τελεστές καταχώρησης: += -= *= /= %= x += 5; σηµαίνει x = x + 5; k *= 7; σηµαίνει k = k * 7; sum %= 15; σηµαίνει sum = sum % 15;

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Προγραμματισμός I (Θ)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 9 Συναρτήσεις. Γεώργιος Λαμπρινίδης

EΒ ΟΜΑ Α 4 Η. οµές επανάληψης while και do while

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

Παραδείγματα. Γράψτε ένα πρόγραμμα που να τυπώνει τη μέση τιμή ενός συνόλου μη αρνητικών αριθμών

Γλώσσα Προγραμματισμού C

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

Δομημένος Προγραμματισμός

Η γλώσσα προγραμματισμού C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 8: Συναρτήσεις. Κ.

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

Εισαγωγή στον Προγραμματισμό

ΔΙΑΔΙΚΑΣΤΙΚΟΣ ΠΡΟΓΡΑ Ρ Μ Α ΜΑΤΙ Τ ΣΜΟΣ

Διαδικασιακός Προγραμματισμός

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 7 ο Μέρος 1

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

8. Συνθήκες ελέγχου, λογικοί τελεστές

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Προγραμματισμό για ΗΜΥ

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 5 Εντολές Επανάληψης for while do while. Λαμπρινίδης Γεώργιος

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

Διδάσκων: Παναγιώτης Ανδρέου

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Transcript:

ΔΗΜΟΣΙΑ Ι.Ε.Κ. ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (ΓΛΩΣΣΑ C) ΑΠΑΝΤΗΣΕΙΣ ΣΤΙΣ ΕΡΩΤΗΣΕΙΣ ΠΙΣΤΟΠΟΙΗΣΗΣ 103. Να γραφεί πρόγραμμα σε C που να υπολογίζει τη μέση τιμή ακεραίων αριθμών, όταν εισάγονται από το πληκτρολόγιο. Η εισαγωγή τερματίζεται όταν δοθεί σαν τιμή ακέραιου το 0. int a, n=0, sum=0; do printf("dose akeraio %d: ", n+1); scanf("%d", &a); if(a!=0) n=n+1; sum=sum+a; while(a!=0); printf("h mesi timi ton akeraion: %5.2f", (float)sum/(float)n); 104. Να αναφέρετε τους βασικούς τύπους δεδομένων της C. Να γραφεί πρόγραμμα όπου θα εκτυπώνονται οι τιμές των μεταβλητών των βασικών τύπων που όρισε ο χρήστης. int a=10; float b=5.67; char c='x'; char d[20]="abcdefgh"; printf("\nakeraios : %d", a); printf("\npragmatikos : %f", b); printf("\nxaraktiras : %c", c); printf("\nsymvoloseira: %s", d);

105. Να γραφεί πρόγραμμα σε C που θα τυπώνει μήνυμα και θα ζητάει να πληκτρολογηθούν τρεις ακέραιοι. Θα διαβάζει τους αριθμούς αυτούς από το πληκτρολόγιο και θα τους αποθηκεύει σε τρεις (3) μεταβλητές. Θα εναλλάσσει τις τιμές των μεταβλητών με ολίσθηση προς τα δεξιά (δηλαδή η 2 η μεταβλητή θα παίρνει την τιμή της 1 ης, η 3 η της 2 ης και η 1 η της 3 ης, οπότε αν αρχικά οι μεταβλητές είχαν τιμές 10, 20 και 30, μετά το βήμα αυτό θα έχουν 30, 10 και 20, αντίστοιχα). Τέλος, θα τυπώνει τις νέες τιμές των μεταβλητών στην οθόνη. int a, b, c, tmp; printf("dose a: "); scanf("%d", &a); printf("dose b: "); scanf("%d", &b); printf("dose c: "); scanf("%d", &c); tmp=c; c=b; b=a; a=tmp; printf("a=%d b=%d c=%d ", a, b, c); 106. Να γραφεί πρόγραμμα σε C που θα υπολογίζει την δύναμη, υποθέτοντας ότι ο χρήστης εισάγει την βάση και τον εκθέτη. (Να καλυφθούν όλες οι πιθανές περιπτώσεις τιμών του εκθέτη). int i; float dynami, basi, ekthetis; printf("dose basi: "); scanf("%f", &basi); printf("dose ektheti: "); scanf("%f", &ekthetis);

dynami=1.0; for(i=1; i<=ekthetis; i++) dynami=dynami*basi; if(ekthetis<0) dynami=1.0/dynami; printf("apotelesma: %f", dynami); 107. Με τη χρήση κατάλληλου προγράμματος να επεξηγήσετε τη διαφορά μεταξύ των εντολών break και continue. int x; for(x=5;x<15;x++) if(x==8) break; printf("ston broxo me tin entoli break, to x einai tora %d\n",x); for(x=5;x<15;x++) if(x==8) continue; printf("ston broxo me tin entoli continue, to x einai tora %d\n ",x); Το αποτέλεσμα του παραπάνω προγράμματος θα είναι: Ston broxo me tin entoli break, to x einai tora 5 Ston broxo me tin entoli break, to x einai tora 6 Ston broxo me tin entoli break, to x einai tora 7 Ston broxo me tin entoli continue, to x einai tora 5 Ston broxo me tin entoli continue, to x einai tora 6 Ston broxo me tin entoli continue, to x einai tora 7 Ston broxo me tin entoli continue, to x einai tora 9 Ston broxo me tin entoli continue, to x einai tora 10 Ston broxo me tin entoli continue, to x einai tora 11 Ston broxo me tin entoli continue, to x einai tora 12 Ston broxo me tin entoli continue, to x einai tora 13 Ston broxo me tin entoli continue, to x einai tora 14

108. Να γραφεί πρόγραμμα σε C που θα διαβάζει 2 ακεραίους αριθμούς από το πληκτρολόγιο και θα εκτυπώνει το άθροισμά τους στην οθόνη. Το αποτέλεσμα να φαίνεται επίσης σε οκταδική και δεκαεξαδική μορφή. int a, b; printf("dose a: ", a); scanf("%d", &a); printf("dose b: ", b); scanf("%d", &b); printf("dec: %d+%d=%d OCT=%o HEX=%x", a, b, a+b, a+b, a+b); 109. Να γραφεί πρόγραμμα σε C που θα υπολογίζει το μέσο όρο 2 πραγματικών αριθμών. Ο υπολογισμός της μέσης τιμής να γίνει με τη δημιουργία ξεχωριστής συνάρτησης. float mesos_oros(float x, float y) return (x+y)/2; float a, b; printf("dose a: "); scanf("%f", &a); printf("dose b: "); scanf("%f", &b); printf("m.o.=%5.2f", mesos_oros(a,b)); 110. Να γραφεί πρόγραμμα σε C που θα διαβάζει το όνομα του χρήστη και θα εκτυπώνει φιλικό χαιρετισμό.

char onoma[50]; printf("pos se lene? "); scanf("%s", &onoma); printf("geia sou %s", onoma); 111. Να γραφεί πρόγραμμα σε C που θα μετατρέπει μονάδες μήκους από εκατοστά σε ίντσες. Να εκτυπωθεί το ύψος σας ανά 20 εκατοστά σε ίντσες (1 ίντσα = 2,52 εκατ). float ypsos; printf("dose to ypsos sou se metra (p.x. 1.80): "); scanf("%f", &ypsos); printf("\nto ypsos sou se intses einai: %5.2f", (ypsos*100)/2.52); 112. Να γραφεί πρόγραμμα σε C που θα εκτυπώνει πίνακα αντιστοίχισης μονάδων θερμοκρασίας από Φαρενάιτ σε Κελσίου ανά 20 βαθμούς. [Ο τύπος μετατροπής είναι C=5(F-32)/9 ] int c; for (c=-20; c<=120; c=c+20) printf("\nc =%4d F = %6.2f", c, (5*(c-32)/9.) ); 113. Να γραφεί πρόγραμμα σε C που θα εκτυπώνει το όνομα και το τελικό βαθμό του μαθητή με βάση το βαθμό του γραπτού και το βαθμό των ασκήσεων. (Με δεδομένο ότι ο βαθμός γραπτού είναι >=4, τότε ο τελικός βαθμός σχηματίζεται από το 30% του βαθμού άσκησης και 70% από το βαθμό γραπτού, διαφορετικά δεν λαμβάνεται υπόψη η άσκηση. Εάν από το συνυπολογισμό του βαθμού της άσκησης ο τελικός βαθμός είναι μικρότερος από το βαθμό του γραπτού, ο βαθμός της άσκησης δεν υπολογίζεται. Αν από το συνυπολογισμό του

βαθμού της άσκησης το αποτέλεσμα είναι μεγαλύτερο από το βαθμό του γραπτού, τότε ο μαθητής πριμοδοτείται με μισή μονάδα). float tel=0, grap=0, ask=0; printf("dose bathmo sta grapta: "); scanf("%f", &grap); printf("dose bathmo askiseon: "); scanf("%f", &ask); if(grap>=4) tel=0.7*grap+0.3*ask; else tel=0.7*grap; if(tel>grap) tel=tel+0.5; printf("\ntelikos bathmos = %4.2f", tel); 114. Να γράψετε ένα πρόγραμμα σε γλώσσα C, το οποίο να διαβάζει από την οθόνη μια σειρά χαρακτήρων και να μετρά το πλήθος των αριθμητικών χαρακτήρων, των κενών και των αλφαβητικών χαρακτήρων και να εμφανίζει στην οθόνη τα αποτελέσματα. char s[100]; int i, grammata=0, arithmoi=0, kena=0; printf("dose symvoloseira (max 100 xar.): "); scanf("%[^\n]s", &s); for(i=0; s[i]!='\0'; i++) if( (s[i]>='a' && s[i]<='z') (s[i]>='a' && s[i]<='z') ) grammata++; if( (s[i]>='0' && s[i]<='9') ) arithmoi++; if(s[i]==' ') kena++; printf("\ngrammata: %d", grammata ); printf("\narithmoi: %d", arithmoi ); printf("\nkena : %d", kena );

115. Να γράψετε πρόγραμμα που να εμφανίζει μια οθόνη επιλογής με τις τέσσερις πράξεις: 1.Πρόσθεση 2.Αφαίρεση 3.Πολλαπλασιασμός 4.Διαίρεση Ο χρήστης θα επιλέγει τη πράξη και θα δίδει τους 2 αριθμούς. Ο υπολογιστής θα εκτελεί την αντίστοιχη πράξη και θα εμφανίζει το αποτέλεσμα. (Υπόδειξη: Το πρόγραμμα να γίνει με χρήση της εντολής case. Επίσης να γίνεται έλεγχος ώστε να μη γίνεται διαίρεση με μηδέν και σε τέτοια περίπτωση να εμφανίζεται κατάλληλο μήνυμα.) float a, b, apot; int praxi; printf("\n1. Prosthesi"); printf("\n2. Afairesi"); printf("\n3. Polaplasiasmos"); printf("\n4. Diairesi"); printf("\nparakalo epilekste: "); scanf("%d", &praxi); printf("\ndose arithmo 1: "); scanf("%f", &a); printf("dose arithmo 2: "); scanf("%f", &b); if(praxi==4 && b==0) printf("\nadynati i diairesi me to 0!"); else switch(praxi) case 1: apot=a+b; break; case 2: apot=a-b; break; case 3: apot=a*b; break; case 4: apot=a/b; break; printf("\napotelesma=%5.2f", apot); 116. Να γραφεί συνάρτηση της C με όνομα power που θα δέχεται 2 ακέραιες παραμέτρους basen και n και θα επιστρέφει τον ακέραιο basen (δύναμη n του ακεραίου base). Να γραφεί πρόγραμμα C που θα καλεί την function power και θα την ελέγχει. Ο χρήστης του προγράμματος αυτού θα μπορεί να καθορίζει παραμετρικά την τιμή των base και n.

int power(int base, int n) int i, basen=1; for(i=1; i<=n; i++) basen=basen*base; return basen; int basi, ekthetis; printf("dose akeraio gia basi: "); scanf("%d", &basi); printf("dose akeraio gia ektheti: "); scanf("%d", &ekthetis); printf("apotelesma: %d", power(basi, ekthetis)); 117. Να γραφεί συνάρτηση της C με όνομα min(n,m), που να επιστρέφει τον μικρότερο από τους ακέραιους n και m. Να χρησιμοποιηθεί ο τελεστής?: για τον υπολογισμό του μικρότερου. int min(int n, int m) int x; (n<m)?(x=n):(x=m); return x; int a, b; printf("dose a: "); scanf("%d", &a); printf("dose b: "); scanf("%d", &b); printf("\nmin=%d", min(a,b)); 118. Έστω οι παρακάτω δηλώσεις αποτελούν μέρος ενός προγράμματος της C: a= 4; b=8; c=a; d=++a; e=--b; f=a++; c++; Να αναφέρετε τις τελικές τιμές των μεταβλητών του προγράμματος.

Απάντηση: a=6 b=7 c=5 d=5 e=7 f=5 119. Να γραφεί πρόγραμμα σε C που θα εκτυπώνει στην οθόνη τον ASCII χαρακτήρα των αγγλικών κεφαλαίων γραμμάτων (πχ letter Α --> Ascii code 65). char c; for(c='a'; c<='z'; c++) printf("letter %c --> Ascii code %d \n", c, c); 120. Να γραφεί πρόγραμμα C που θα δέχεται ως παραμέτρους (command line arguments) το ποσό του κεφαλαίου και το ετήσιο επιτόκιο. Θα υπολογίζει τον ετήσιο τόκο και θα τα τυπώνει στην έξοδο, όπως στο εξής παράδειγμα: ΚΕΦΑΛΑΙΟ: 3000000, ΕΠΙΤΟΚΙΟ: 4% ΤΟΚΟΣ: 120000 #include <stdlib.h> main (int argc, char *argv[]) float kefalaio, epitokio, tokos; kefalaio=atof(argv[1]); epitokio=atof(argv[2]); tokos=kefalaio*epitokio/100.; printf("kefalaio=%8.0f Epitokio=%4.2f%% Tokos=%6.2f\n", kefalaio, epitokio, tokos); 121. Να γραφεί συνάρτηση της C που θα αντιμεταθέτει τις τιμές των δύο ακεραίων παραμέτρων της κάνοντας χρήση αναφοράς. swap(int *x, int *y) int tmp; tmp=*x; *x=*y;

*y=tmp; int a, b; printf("dose akeraio a: "); scanf("%d", &a); printf("dose akeraio b: "); scanf("%d", &b); swap(&a, &b); printf("\na=%d b=%d", a, b); 122. Να γραφεί πρόγραμμα C που θα προσθέτει του άρτιους αριθμούς από το 11 μέχρι το 131 και θα εμφανίζει στην οθόνη το αποτέλεσμα. Επίσης να εμφανίζονται σε πεντάδες οι αριθμοί που προστέθηκαν.(σ=12+14+...+130) int sum=0, i, j=0; for(i=11; i<=131; i++) if(i%2==0) printf("%d ", i); j++; sum=sum+i; if(j==5) printf("\n"); j=0; printf("\n\nsum=%d", sum); 123. Να γραφεί συνάρτηση της C που με τη χρήση της αναδρομής υπολογίζει το μέγιστο κοινό διαιρέτη δυο ακεραίων. int mkd(int x, int y)

if (x==0) return y; return mkd(y%x, x); int a,b; printf("dose akeraio 1: "); scanf("%d", &a); printf("dose akeraio 2: "); scanf("%d", &b); printf("%megistos Koinos Diairetis: %d", mkd(a,b)); 124. Να γραφεί συνάρτηση της C που με τη χρήση της αναδρομής υπολογίζει το παραγοντικό των 10 πρώτων ακεραίων αριθμών. (Υπόδειξη: το παραγοντικό ενός αριθμού είναι το γινόμενο του αριθμού επί όλων των αριθμών μέχρι τον αριθμό αυτό, όπου k!= k * (k-1)! και 0!=1). int paragontiko(int k) if(k <= 1) return 1; return k * paragontiko(k - 1); int i = 10; printf("%d!=%d\n", i, paragontiko(i)); 125. Υποθέτοντας ότι μια πόλη έχει πληθυσμό 550.000 κατοίκους με ετήσιο ρυθμό αύξησης 3,3%, να γραφεί πρόγραμμα C που θα υπολογίζει το πληθυσμό για τα επόμενα πέντε έτη. long p=550000; float era=3.3;

int i, n=5; printf("arxikos plithismos: %ld \n", p); printf("etisios rythmos auksisis: %4.2f%%\n\n", era); for(i=0; i<n; i++) p=p+(p*era/100); printf("meta apo %d eti: Plithismos=%ld\n", i+1, p); 126. Να γραφεί πρόγραμμα C, που θα δέχεται στην είσοδο θετικό ακέραιο αριθμό και θα εμφανίζει στην έξοδο τον αριθμό αυτό αντεστραμμένο. (πχ. αν δοθεί ο αριθμός 1234, θα εμφανισθεί το 4321). int n, reverse=0; printf("dose akeraio: "); scanf("%d", &n); while(n!=0) reverse=reverse*10; reverse=reverse+n%10; n=n/10; printf("anestramenos: %d\n", reverse); 127. Να γραφεί πρόγραμμα C, που θα εμφανίζει στην οθόνη τον πίνακα της προπαίδειας των αριθμών από το 1 μέχρι το 10. int i, j; for(i=1;i<=10;i++) for(j=1;j<=10;j++) printf("%dx%d=%d\t", j, i, i*j);

printf("\n"); 128. Να γραφεί πρόγραμμα στη C το οποίο θα μετρά και θα εμφανίζει πόσες φορές πληκτρολογήσατε στο πληκτρολόγιο ένα αριθμητικό χαρακτήρα. Το πρόγραμμα να σταματά όταν πληκτρολογηθεί το πλήκτρο Q. char x; int count=0; printf("pata pliktra...\n"); do x= printf("%c\n", x); if( x!='q' && x!='q' && x>='0' && x<='9' ) count++; while(x!='q' && x!='q'); printf("\n\npliktrologises %d arithmitikous xaraktires!", count); 129. Να γραφεί πρόγραμμα στη C που με κατάλληλη χρήση των δομών επανάληψης θα εμφανίζει στην έξοδο το παρακάτω: 1 22 333 4444 55555 int i, j; for(i=1;i<=5;i++) for(j=1;j<=i;j++) printf("%d", j); printf("\n");

130. Να γραφεί πρόγραμμα στη C το οποίο θα βρίσκει τον μικρότερο αριθμό από ένα μονοδιάστατο πίνακα 10 ακεραίων αριθμών. int a[10], i, min; for(i=0; i<=9; i++) printf("dose stoixeio a[%d]: ", i+1); scanf("%d", &a[i]); min=a[1]; for(i=2;i<=9;i++) if(a[i]<min) min=a[i]; printf("\n\nmin=%d", min); 131. Να γραφεί πρόγραμμα σε C που θα γεμίζει ένα δισδιάστατο πίνακα ακεραίων 10Χ10 με όνομα pinax ως εξής: Αν i+j είναι άρτιος τότε το pinax[i,j] = 1. Αν i+j είναι περιττός τότε το pinax[i,j] = -1. Αν i=j τότε το pinax[i,j] = 0. int pinax[10][10], i, j; for(i=0; i<=9; i++) for(j=0; j<=9; j++) if((i+j)%2==0) pinax[i][j]=1; else pinax[i][j]=-1; if(i==j) pinax[i][j]=0;

printf("%3d", pinax[i][j]); printf("\n"); 132. Να γραφεί πρόγραμμα σε C που θα υπολογίζει το άθροισμα των περιττών μόνο ακεραίων αριθμών μονοδιάστατου πίνακα 10 θέσεων που έχει πάρει τα στοιχεία του από εισαγωγή του χρήστη. int a[10], i, sum=0; for(i=0; i<=9; i++) printf("dose stoixeio a[%d]: ", i+1); scanf("%d", &a[i]); if(a[i]%2!=0) sum=sum+a[i]; printf("\n\nathroisma peritton=%d", sum); 133. Να γράψετε πρόγραμμα που να διαβάζει το επώνυμο και το βαθμό 10 μαθητών και να τα αποθηκεύει σε ένα πίνακα του οποίου κάθε στοιχείο θα είναι μια κατάλληλη δομή (Structure). Στη συνέχεια για κάθε μαθητή θα τυπώνει στην οθόνη το επώνυμό του, το βαθμό του, καθώς και το χαρακτηρισμό επίδοσης ανάλογα με το βαθμό του. Ο χαρακτηρισμός επίδοσης είναι: 0< βαθμός <= 9 αποτυχών 9< βαθμός <=12 μέτρια 12< βαθμός <=15 καλά 15< βαθμός <=18 πολύ καλά 18< βαθμός <=20 άριστα Στο τέλος να τυπωθεί το πλήθος των μαθητών κάθε κατηγορίας επίδοσης, δηλαδή άριστα 7 μαθητές,..., κτλ. #define N 10 struct mathitis

char onoma[50]; float bathmos; struct mathitis m[n]; int i, apotyxontes=0, metrioi=0, kaloi=0, polykaloi=0, aristoi=0 ; for(i=0; i<n; i++) printf("dose onoma mathiti %d: ", i+1); scanf("%s", &m[i].onoma); printf("dose bathmo mathiti %d: ", i+1); scanf("%f", &m[i].bathmos); if(m[i].bathmos<=9) apotyxontes++; if(m[i].bathmos>9 && m[i].bathmos<=12) metrioi++; if(m[i].bathmos>12 && m[i].bathmos<=15) kaloi++; if(m[i].bathmos>15 && m[i].bathmos<=18) polykaloi++; if(m[i].bathmos>18 && m[i].bathmos<=20) aristoi++; for(i=0; i<n; i++) printf("\n%s = %4.2f", m[i].onoma, m[i].bathmos ); printf("\n"); printf("\naristoi : %d", aristoi); printf("\npoly kaloi : %d", polykaloi); printf("\nkaloi : %d", kaloi); printf("\nmetrioi : %d", metrioi); printf("\napotyxontes: %d", apotyxontes); 134. Να γραφεί συνάρτηση της C με όνομα reverse(str) που να αναστρέφει τη σειρά των χαρακτήρων του string str. Για παράδειγμα, αν η τιμή του s πριν την κλήση της function είναι George μετά την κλήση της function να είναι egroeg. char * reverse(char str[]) int i=0, len=0, temp; while (str[i]!='\0') i++; len=i-1;

i=0; while(i<len) temp=str[i]; str[i]=str[len]; str[len]=temp; i++; len--; return str; char a[100]; printf("dose symboloseira: "); scanf("%[^\n]s", &a); printf("\nanastrofi xaraktiron: %s ", reverse(a)); 135. Να γραφεί συνάρτηση της C με όνομα strlen(s) που να επιστρέφει το μήκος του string s. int strlen(char x[]) int i=0; while (x[i]!='\0') i++; return i; char s[100]; printf("dose symboloseira: "); scanf("%[^\n]s", &s); printf("\nto mikos tis einai %d", strlen(s)); 136. Να γραφεί πρόγραμμα C όπου θα επεξηγείται η έννοια του δείκτη (pointer) καθώς και η έννοια του τελεστή &.

double a, *pa; int b, *pb; char c, *pc; printf("dose pragmatiko (A): "); scanf("%lf", &a); printf("dose akeraio (B): "); scanf("%d", &b); printf("dose xaraktira (C): "); scanf(" %c", &c); printf("\a: Timi=%4.2lf \t Megethos=%d byte(s) \t Dieuthinsi=0x%x", a, sizeof(a), &a); printf("\b: Timi=%d \t Megethos=%d byte(s) \t Dieuthinsi=0x%x", b, sizeof(b), &b); printf("\c: Timi=%c \t Megethos=%d byte(s) \t Dieuthinsi=0x%x", c, sizeof(c), &c); 137. Να γραφεί πρόγραμμα C όπου ο χρήστης θα γεμίζει από το πληκτρολόγιο δισδιάστατο πίνακα ακεραίων 3x3 και θα εμφανίζει στην οθόνη τα στοιχεία και το άθροισμα της διαγωνίου. int a[3][3], i, j, sum=0; /* Eisagogi stoixeion */ for(i=0;i<=2;i++) for(j=0;j<=2;j++) printf("dose stoixeio a[%d,%d]: ", i, j); scanf("%d", &a[i][j]); if(i==j) sum=sum+a[i][j]; /* Emfanisi pinaka stin othoni */ for(i=0;i<=2;i++) for(j=0;j<=2;j++) printf("%d ", a[i][j]); printf("\n"); printf("\n\nathroisma diagoniou: %d", sum);

138. Έστω οι παρακάτω δηλώσεις αποτελούν μέρος ενός προγράμματος της C: int p[10]; int *pp; int m, n; for (I=0;i<=10;i++) p[i] = i+1; pp = &p[0]; m=*(pp+3); n=*(pp+5); Ποιες οι τιμές των μεταβλητών m και n. Απάντηση: m=4 n=6 139. Να γραφεί συνάρτηση της C που θα μετατρέπει ένα string αριθμών στο αριθμητικό του ισοδύναμο (δηλαδή το string 1234 να μετατραπεί στον αριθμό 1234). int cstr(char x[]) int i, n=0, len=0, mult=1; while(x[len]!='\0') len++; for(i=len-1; i>=0; i--) n=n+(mult*(x[i]-48)); // ASCII table: '0'=48, '1'=49, '2'=50,... mult=mult*10; return n; char s[100]; printf("pliktrologise arithmous: "); scanf("%s", &s); printf("\no arithmos einai o %d", cstr(s)); 140. Να γραφεί συνάρτηση της C που θα ελέγχει αν δύο συμβολοσειρές είναι ίσες. int string_compare(char x[], char y[])

int i=0; while (x[i]==y[i]) if (x[i] == '\0' y[i] == '\0') break; i++; if (x[i]=='\0' && y[i]=='\0') return 0; else return -1; char a[100], b[100]; printf("dose symboloseira 1: "); scanf("%[^\n]s", &a); printf("dose symboloseira 2: "); scanf(" %[^\n]s", &b); if(string_compare(a,b)==0) printf("\noi symboloseires einai ises"); else printf("\noi symboloseires einai diaforetikes"); 141. Να γραφεί συνάρτηση της C που θα μετρά το πλήθος των αριθμών σε μια συμβολοσειρά (δηλαδή να βρει ότι στη συμβολοσειρά «ff45ggt6 υπάρχουν 3 αριθμοί). int find_numbers(char x[]) int i, n=0, len=0; while(x[len]!='\0') len++; for(i=0; i<len; i++) if(x[i]>='0' && x[i]<='9') n++; return n; char s[100];

printf("dose symboloseira: "); scanf("%[^\n]s", &s); printf("\nyparxoun %d arithmoi sti symboloseira", find_numbers(s)); 142. Να περιγράψετε τι κάνει το παρακάτω τμήμα κώδικα: void mystery1 (char *s1, const char *s2) while (*s1!= \0 ) ++s1; for( ; *s1 = *s2; s1++, s2++) ; Απάντηση: Η συνάρτηση mystery1 δέχεται ως παραμέτρους δύο συμβολοσειρές, τις s1 και s2, και τις οποίες ενώνει υοποθετώντας το αποτέλεσμα στη συμβολοσειρά s1. Για παράδειγμα, αν s1= Hello και s2= World, μετά την κλήση της συνάρτησης η τιμή της s1 θα γίνει HelloWorld. 143. Να περιγράψετε τι κάνει το παρακάτω τμήμα κώδικα: int mystery2 (const char *s1, const char *s2) for( ; *s1!= \0 && *s2!= \0 ; s1++, s2++) if (*s1!= *s2) return 0; return 1; Απάντηση: Η συνάρτηση mystery2 δέχεται ως παραμέτρους δύο συμβολοσειρές, τις s1 και s2, τις οποίες συγκρίνει μεταξύ τους χαρακτήρα προς χαρακτήρα και επιστρέφει 0 αν είναι διαφορετικές ή 1 αν είναι ίδιες. Για παράδειγμα, αν s1= Hello και s2= World η συνάρτηση θα επιστρέψει την τιμή 0 ενώ αν s1= Hello και s2= Hello η συνάρτηση θα επιστρέψει την τιμή 1. 144. Να γραφεί πρόγραμμα C που θα ζητά από το χρήστη 3 ακεραίους ώστε να αρχικοποιήσει τις ακέραιες μεταβλητές της ημέρας, του μήνα και του έτους σε μια δομή ημερομηνίας (struct date). Στη συνέχεια ζητείται να απεικονισθεί η ημερομηνία στην οθόνη με τη μορφή ΗΗ/ΜΜ/ΕΕΕΕ (πχ. 26/7/1962). struct date int day, month, year; struct date x; printf("dose imera (1-31): "); scanf("%d", &x.day); printf("dose mina (1-12): "); scanf("%d", &x.month);

printf("dose etos: "); scanf("%d", &x.year); printf("\nhmerominia: %d/%d/%d", x.day, x.month, x.year); 145. Να γραφεί πρόγραμμα C που υπολογίζει την ηλικία ενός ατόμου σε έτη, αν δοθούν από το χρήστη η ημερομηνία γέννησης και η σημερινή ημερομηνία. (Υπόδειξη: Να χρησιμοποιηθεί δομή για την αποθήκευση της ημερομηνίας). struct date int day, month, year; struct date today, birthday; printf("dose imera gennisis (1-31): "); scanf("%d", &birthday.day); printf("dose mina gennisis (1-12): "); scanf("%d", &birthday.month); printf("dose etos gennisis: "); scanf("%d", &birthday.year); printf("dose trexousa imera (1-31): "); scanf("%d", &today.day); printf("dose trexon mina (1-12): "); scanf("%d", &today.month); printf("dose trexon etos: "); scanf("%d", &today.year); printf("\neisai %d eton", today.year-birthday.year); 146. Να γραφεί πρόγραμμα C που θα διαβάζει από την είσοδο μια ημερομηνία με την μορφή 21 Jan 2004 και θα την απεικονίζει στην έξοδο με τη μορφή 21-1-2004. #include <string.h> int main ( int argc, char *argv[] ) char imera[50], minas[50], etos[50]; strcpy(imera, argv[1]); strcpy(minas,argv[2]); strcpy(etos,argv[3]); if (strcmp(minas, "Jan") == 0) strcpy(minas, "1");

if (strcmp(minas, "Feb") == 0) strcpy(minas, "2"); if (strcmp(minas, "Mar") == 0) strcpy(minas, "3"); if (strcmp(minas, "Apr") == 0) strcpy(minas, "4"); if (strcmp(minas, "May") == 0) strcpy(minas, "5"); if (strcmp(minas, "Jun") == 0) strcpy(minas, "6"); if (strcmp(minas, "Jul") == 0) strcpy(minas, "7"); if (strcmp(minas, "Aug") == 0) strcpy(minas, "8"); if (strcmp(minas, "Sep") == 0) strcpy(minas, "9"); if (strcmp(minas, "Oct") == 0) strcpy(minas, "10"); if (strcmp(minas, "Nov") == 0) strcpy(minas, "11"); if (strcmp(minas, "Dec") == 0) strcpy(minas, "12"); printf("\n%s-%s-%s", imera, minas, etos); 147. Να γραφεί πρόγραμμα C που θα διαβάζει από την είσοδο μια ημερομηνία με την μορφή 10-12-1985 και θα παράγει στην έξοδο το αποτέλεσμα Τρίτη 10 Δεκεμβρίου 1985. #include <string.h> // int bres_mina(int date, int month, int year) int fmonth, leap; if ((year%100==0) && (year%400!=0)) leap = 0; else if (year%4==0) leap=1; else leap=0; fmonth=3+(2-leap)*((month+2)/(2*month))+(5*month+month/9)/2; fmonth=fmonth%7; return fmonth; //---------------------------------------------- char* onoma_imeras(int date, int month, int year) int dayofweek; int YY=year%100; int century=year/100; dayofweek=1.25*yy+bres_mina(date, month, year)+date-2*(century % 4); dayofweek=dayofweek%7; switch(dayofweek) case 0: return "Sabbato"; break; case 1: return "Kyriaki"; break; case 2: return "Deutera"; break; case 3: return "Triti"; break;

case 4: return "Tetari"; break; case 5: return "Pempti"; break; case 6: return "Paraskeui"; break; default: return "Lathos..."; //---------------------------------------------- int main ( int argc, char *argv[] ) char imera[5], minas[5], etos[5]; int pos=0, i=0, im, mi, et; while(argv[1][pos]!='-') // Euresi imeras imera[i]=argv[1][pos]; pos++; i++; pos++; i=0; while(argv[1][pos]!='-') // Euresi mina minas[i]=argv[1][pos]; pos++; i++; pos++; for(i=0; i<=3; i++) // Euresi etous etos[i]=argv[1][pos]; pos++; im=atoi(imera); // Metatropi apo string se akeraio mi=atoi(minas); et=atoi(etos); printf("%s %d-%d-%d \n", onoma_imeras(im, mi, et), im, mi, et); 148. Να γραφεί πρόγραμμα C με το όνομα fcopy που θα αντιγράφει τα περιεχόμενα του αρχείου f1 ατο αρχείο f2. Η κλήση θα γίνεται από τη γραμμή εντολών (δηλ. fcopy f1 f2). #include <string.h> int main(int argc, char *argv[]) char x, f1[50], f2[50]; int i;

FILE *fptr1, *fptr2; strcpy(f1, argv[1]); strcpy(f2, argv[2]); fptr1=fopen(f1,"r"); fptr2=fopen(f2,"w"); if(fptr1==null) printf("sfalma anagnosis arxeiou %s!", f1); exit(1); printf("antigrafi apo arxeio %s se %s...\n", f1, f2); while(1) fscanf(fptr1,"%c",&x); if(feof(fptr1)) break; fprintf(fptr2,"%c",x); fclose(fptr2); fclose(fptr1); printf("telos!\n"); return 0; 149. Να γραφεί πρόγραμμα C με το όνομα fcompare που θα συγκρίνει ανά γραμμή τα περιεχόμενα 2 αρχείων. Θα εκτυπώνεται η γραμμή όπου τα αρχεία διαφέρουν. Η κλήση θα γίνεται από τη γραμμή εντολών (δηλ. fcompare f1 f2). #include <string.h> int main(int argc, char *argv[]) char x[100], y[100], f1[50], f2[50]; int i, grammi=1; FILE *fptr1, *fptr2; strcpy(f1, argv[1]); strcpy(f2, argv[2]); fptr1=fopen(f1,"r"); fptr2=fopen(f2,"r"); if(fptr1==null) printf("sfalma anagnosis arxeiou %s!", f1);

exit(1); while(1) fscanf(fptr1,"%s",&x); fscanf(fptr2,"%s",&y); if(strcmp(x,y)!=0) printf("diafora sti grammi %d: %s\n", grammi, x); if(feof(fptr1)) break; grammi++; fclose(fptr2); fclose(fptr1); return 0; 150. Να γραφεί πρόγραμμα C με το όνομα fcount που θα απαριθμεί τους πεζούς και κεφαλαίους χαρακτήρες ενός αρχείου και θα τυπώνει το αποτέλεσμα σε άλλο αρχείο. Η κλήση θα γίνεται από τη γραμμή εντολών (δηλ. fcount f1 f2). #include <string.h> int main(int argc, char *argv[]) char x, f1[50], f2[50]; int i, pezoi=0, kefalaioi=0; FILE *fptr1, *fptr2; strcpy(f1, argv[1]); strcpy(f2, argv[2]); fptr1=fopen(f1,"r"); if(fptr1==null) printf("sfalma anagnosis arxeiou %s!", f1); exit(1); while(1) fscanf(fptr1,"%c",&x); if(feof(fptr1)) break; if(x>='a' && x<='z') pezoi++; if(x>='a' && x<='z') kefalaioi++; fclose(fptr1);

fptr2=fopen(f2,"w"); fprintf(fptr2,"kefalaioi: %d\npezoi: %d", kefalaioi, pezoi); fclose(fptr2); return 0; 151. Να γραφεί πρόγραμμα C όπου ο χρήστης θα γεμίζει από το πληκτρολόγιο μονοδιάστατο πίνακα ακεραίων 10 θέσεων και μετά θα εμφανίζει τα στοιχεία του με ανάστροφη φορά. int i, a[10]; for(i=0;i<=9; i++) printf("dose stoixeio a[%d]: ", i+1); scanf("%d", &a[i]); for(i=9;i>=0; i--) printf("%d ", a[i]); 152. Να γραφεί πρόγραμμα C όπου ο χρήστης θα γεμίζει από το πληκτρολόγιο δισδιάστατο πίνακα ακεραίων 4χ4 και θα βρίσκει το μέγιστο και το ελάχιστο στοιχείο του πίνακα. int a[4][4], i, j, min, max; /* Eisagogi stoixeion */ for(i=0;i<=3;i++) for(j=0;j<=3;j++) printf("dose stoixeio a[%d,%d]: ", i, j); scanf("%d", &a[i][j]); /* Euresi Min, Max kai emfanisi pinaka stin othoni */ min=a[1][1]; max=a[1][1]; for(i=0;i<=3;i++)

for(j=0;j<=3;j++) printf("%d ", a[i][j]); if(a[i][j]<min) min=a[i][j]; if(a[i][j]>max) max=a[i][j]; printf("\n"); printf("\n\min=%d Max=%d", min, max); 153. Να γραφεί πρόγραμμα C με το όνομα fcapitalise που θα αλλάζει όλους τους πεζούς χαρακτήρες από ένα αρχείο κειμένου σε άλλο αρχείο με κεφαλαίους. Η κλήση του προγράμματος θα γίνεται από τη γραμμή εντολών (δηλ. fcapitalise f1 f2). #include <string.h> int main(int argc, char *argv[]) char x, f1[50], f2[50]; int i; FILE *fptr1, *fptr2; strcpy(f1, argv[1]); strcpy(f2, argv[2]); fptr1=fopen(f1,"r"); fptr2=fopen(f2,"w"); if(fptr1==null) printf("sfalma anagnosis arxeiou %s!", f1); exit(1); printf("metatropi se kefalaia apo %s se %s...\n", f1, f2); while(1) fscanf(fptr1,"%c",&x); if(feof(fptr1)) break; if(x>='a' && x<='z') x=x-32; fprintf(fptr2,"%c",x); fclose(fptr2); fclose(fptr1);

printf("telos metatropis!\n"); return 0; 154. Να περιγράψετε τι κάνει το παρακάτω τμήμα κώδικα: void mystery3(char *s) while (*s!= \0 ) if (*s >= a && *s <= z ) *s -= 32; ++s; Απάντηση: Η συνάρτηση mystery3 θα αλλάξει όλους τους χαρακτήρες της συμβολοσειράς s που θα δεχθεί ως παράμετρο σε κεφαλαίους. Για παράδειγμα, αν πριν την κλήση της συνάρτησης η τιμή της s είναι Hello μετά την κλήση της θα είναι HELLO.