Ασκήσεις C ΘΕΩΡΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι ΑΣΚΗΣΕΙΣ ΘΕΩΡΙΑΣ 2-05-2007 1. Να γραφεί πρόγραµµα που να εµφανίζει τους 5 πρώτους µεγαλύτερους του µηδενός ακέραιους αριθµούς. int i; for(i=1;i<=5;i=i+1) printf("%d",i); 2. Να γραφεί πρόγραµµα που να υπολογίζει και να εµφανίζει στην οθόνη το γινόµενο Ν! = 1*2*3*...Ν (Ν γνωστό). Ν παραγοντικό. int i,n,s; s=1; scanf("%d",&n); for(i=1;i<=n;i=i+1) s=s*i;; printf("\n%d",s); 3. Να γραφεί πρόγραµµα που να υπολογίζει το άθροισµα 1+2+3+.n (n γνωστό) int i,n,s; s=0; scanf("%d",&n); for(i=1;i<=n;i=i+1) s=s+i;; printf("\n%d",s); 1
4. Να γραφεί πρόγραµµα υπολογισµού της δύναµης ενός αριθµού. ηλαδή το πρόγραµµα να διαβάζει από την οθόνη τη βάση και τον εκθέτη και να υπολογίζει και να τυπώνει την αντίστοιχη δύναµη. int i,b,e,s; s=1; scanf("%d",&b); scanf("%d",&e); for(i=1;i<=e;i=i+1) s=s*b;; printf("\n%d",s); 5. Ο σηµερινός πληθυσµός της Ελλάδος είναι 10.200.000 άτοµα. Αν αυτός αυξάνεται κατά 3,5% το χρόνο να γραφεί πρόγραµµα το οποίο υπολογίζει και εµφανίζει στη οθόνη τον πληθυσµό της Ελλάδας µετά την πάροδο 8 ετών. int i; float p,ap; p=10200000; for(i=1;i<=8;i=i+1) ap=p*3.5/100; p=p+ap;; printf("\n%f",p); 2
6. Να γραφεί πρόγραµµα που να υπολογίζει το άθροισµα των άρτιων αριθµών έως και το 1000. int i,n; long s; s=0; for(i=0;i<=1000;i=i+2) s=s+i; printf("\n%ld",s); 7. Χρησιµοποιώντας βρόγχους επανάληψης κατασκευάστε πλήρες πρόγραµµα που έχει την ακόλουθη έξοδο στην οθόνη: 1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 int i,n; for(i=1;i<10;i=i+1) printf("\n"); for(n=1;n<i;n=n+1) printf("%d",n); ; 3
8. Να κατασκευαστεί πρόγραµµα που να τυπώνει τους άρτιους αριθµούς από 2 έως Ν. /*ΤΥΠΩΝΕΙ ΤΟΥΣ ΑΡΤΙΟΥΣ ΑΡΙΘΜΟΥΣ ΑΠΟ ΤΟ 2 ΩΣ ΚΑΙ ΤΟ n*/ int num,j,n; j=0; scanf("%d",&n); for(num=2;num<=n;num=num+2) j++; printf("\n%3dos ARTIOS=%4d\n",j,num); 9. Να κατασκευαστεί πρόγραµµα που να τυπώνει την ΑΒ. /* Τυπώνει την ΑΒ*/ int i,n; scanf("%d",&n); for(i=0;i<n;i=i+1) printf("%c",'a'+i); 10. Να κατασκευαστεί αλγόριθµος που να υπολογίζει το άθροισµα των περιττών αριθµών 1+3+5+.+99. 11. ίνεται µια ακολουθία αριθµών από το πληκτρολόγιο. Να υπολογιστεί το άθροισµα τους. Το τέλος της ακολουθίας των αριθµών οριοθετείται από τον πρώτο αριθµό που είναι µεγαλύτερος από τον 100. 4
ΛΥΜΕΝΕΣ ΑΣΚΗΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ-ΓΛΩΣΣΑ C ΑΤΕΙ 12. Να γραφεί πρόγραµµα το οποίο να αναγνωρίζει αν κάποιος χαρακτήρας είναι ψηφίο, κεφαλαίο γράµµα ή µικρό γράµµα. /* Παράδειγµα χρήσης IF και χαρακτήρων*/ char c; printf(" ώστε ένα χαρακτήρα:"); scanf("%c", &c); if((c >= '0') &&(c <= '9')) printf("ο χαρακτήρας αυτός είναι ψηφίο\n"); else if((c >= 'A') && (c <= 'Z')) printf("ο χαρακτήρας αυτός είναι κεφαλαίο γράµµα\n"); else if((c >= 'a') && (c <= 'z')) printf("ο χαρακτήρας αυτός είναι µικρό γράµµα\n"); else printf("άλλος χαρακτήρας\n"); 13. Να γραφεί πρόγραµµα το οποίο να υπολογίζει τον µέσο βαθµό του κάθε µαθήτη και τον µέσο βαθµό όλης της τάξης σε ένα πλήθος µαθηµάτων. /*ΜΕΣΟΙ ΒΑΘΜΟΙ ΜΑΘΗΤΩΝ ΚΑΙ ΤΑΞΗΣ*/ #define STUDENTS 10 #define SUBJECTS 5 5
void int sum, sum_all; int i, j, grade; float aver, aver_all; sum_all = 0; for(i=1; i<=students; i++) sum = 0; for(j=1; j<=subjects; j++) printf(" ώστε το βαθµό του %d ου µαθήµατος:", j); scanf("%d", &grade); sum += grade; sum_all += sum; aver = (float) sum / SUBJECTS; printf("μέσος όρος %d µαθητή: %4.2f\n", i, aver); aver_all = (float) sum_all / (STUDENTS * SUBJECTS); printf("μέσος όρος τάξης: %4.2f\n", aver_all); 14. Να γραφεί πρόγραµµα, χρησιµοποιώντας υποπρόγραµµα-συνάρτηση, το οποίο να κατασκευάζει ένα πίνακα µε τα τετράγωνα ακεραίων αριθµών. /* This program demonstrates function usage and return statement */ void /* This is the main program */ int x,y; for(x = 0;x <= 7;x++) y = squ(x); /* go get the value of x*x */ printf("the square of %d is %d\n",x,y); for (x = 0;x <= 7;++x) printf("the value of %d is %d\n",x,squ(x)); 6
squ(in) /* function to get the value of in squared */ int in; int square; square = in * in; return(square); /* This sets squ() = square */ 15. /****************************************************************/ /* */ /* This is a temperature conversion program written in */ /* the C programming language. This program generates */ /* and displays a table of farenheit and centigrade */ /* temperatures, and lists the freezing and boiling */ /* of water. */ /* */ /****************************************************************/ int count; /* a loop control variable */ int farenheit; /* the temperature in farenheit degrees */ int centigrade; /* the temperature in centigrade degrees */ printf("centigrade to Farenheit temperature table\n\n"); for(count = -2;count <= 12;count = count + 1) centigrade = 10 * count; farenheit = 32 + (centigrade * 9)/5; printf(" C =%4d F =%4d ",centigrade,farenheit); if (centigrade == 0) printf(" Freezing point of water"); if (centigrade == 100) printf(" Boiling point of water"); printf("\n"); /* end of for loop */ 16. Να γραφεί πρόγραµµα για την δηµιουργία ενός πίνακα πολλαπλασιασµού µε την χρήση διδιαστατών πινάκων. /* This program produces a multiplication table using 2-D arrays */ void int i,j; int a[5][5]; 7
for (i = 1;i <= 4;i++) for (j = 1;j <= 4;j++) a[i][j] = i * j; /* This is a multiplication table */ for (i = 1;i <= 4;i++) for (j = 1;j <= 4;j++) printf("%5d",a[i][j]); printf("\n"); /* newline for each increase in i */ 17. Γράψτε ένα πρόγραµµα το οποίο θα υπολογίζει το άθροισµα της παρακάτω σειράς : S = 1 + (1/2) + (1/3) + (1/4) + + (1/N) εώς ότου ο τελευταίος όρος του αθροίσµατος (1/Ν) γίνει µικρότερος ή ίσος µε e = 0.001. ΚΑΛΗ ΕΠΙΤΥΧΙΑ!!!! 8