13 Προγράμματα C
Καλοκαίρι 1997 & Καλοκαίρι 2011
1ο Πρόγραμμα Το πρόγραμμα αυτό «διαβάζει» έναν χαρακτήρα από το πληκτρολόγιο και τον εμφανίζει στην οθόνη … main()
/* Πάντα ξεκινάμε με την main() */
{ char x;
/* Ορίζουμε την μεταβλητή x σαν τύπου char
*/
do { scanf("%c",&x);
/* « Διάβασε » την x
*/
printf("%c\n",x);
/* … και δείξε την στην οθόνη … */
} while ( x!='#' );
/* … μέχρι να πατηθεί η « # »
*/
}
2ο Πρόγραμμα Εδώ εμφανίζουμε στην οθόνη όλους τους χαρακτήρες του πληκτρολογίου, με κωδικούς από 65 έως 122. #include <stdio.h> #include <conio.h>
/* Εδώ θα χρειαστούν και τα 2 αρχεία της C */ /* που περιέχουν πρόσθετες πληροφορίες …*/
main() { int i; clrscr();
/* Ορίζουμε την μεταβλητή i σαν τύπου integer */ /* Καθαρίζουμε την οθόνη …
*/
for ( i=65; i<=122; i++) /* Εδώ του λέμε από i=65 έως και i=122 αύξανε το i κατά 1 ( i++)
*/
printf(" %d %c",i,i);
/* … και εκτύπωνε κάθε φορά στην οθόνη */
delay (2000);
/* … περίμενε 2 δευτερόλεπτα
*/
}
3ο Πρόγραμμα Εδώ κάνουμε αριθμητικές πράξεις για να δοκιμάσουμε την συνάρτηση printf(), που εμφανίζει δεδομένα στην οθόνη … #include <stdio.h> #include <conio.h> main() { int A=50,B=4,result; float C=50.0,D=4.0;
/* Ορισμός μεταβλητών */
clrscr(); printf( "7+A/10*B=%d\n" , 7+A/10*B ); printf(" A/B*B=%d\n" , A/B*B ); printf(" C/D*D=%f\n" , C/D*D ); printf(" -A=%d\n" , -A ); printf(" -A*B=%d\n" , -A*B ); delay(3000); }
/* …περίμενε 3 δευτερόλεπτα */
4ο Πρόγραμμα Χρήση πινάκων στη C . Για να «γεμίσουμε» έναν δισδιάστατο πίνακα, σαρώνουμε πρώτα την μία διάσταση, π.χ. τις γραμμές, με μια For και έναν δείκτη i και ύστερα την άλλη διάσταση, εδώ τις στήλες, με μια άλλη For και καινούργιο δείκτη j. Μπορεί να γίνει και αντίστροφα, πρώτα οι στήλες και μετά οι γραμμές. Οι δύο For είναι η μία μέσα στην άλλη και γι’ αυτό λέγονται και φωλιασμένες. #include <stdio.h> main() { int a[2][3],i,j;
/* Ορίζουμε πίνακα 2 Χ 3 και δείκτες i και j */
clrscr(); /* 1η For με δείκτες i, j
*/
/* Σάρωση όλων των στοιχείων του πίνακα */ for ( i=0 ; i<2 ; ++i )
/*
Για όλες τις τιμές του i
…
/*
… και για όλες τις τιμές του j
*/
{ for ( j=0 ; j<3 ; ++j )
*/
{ printf( "give %d,%d number\n" , i+1 , j+1 ); scanf( "%d" , &a[i][j]); /* Καταχώρηση των στοιχείων του πίνακα */ } }
/* 2η For με δείκτες i, j
*/
/* Πάλι σάρωση όλων των στοιχείων του πίνακα */ for ( i=0 ; i<2 ; ++i ) { for ( j=0 ; j<3 ; ++j ) { printf("%d,%d number: %d\n",i+1,j+1,a[i][j]); }
/* … και εμφάνιση στην οθόνη … */ delay(2000);
/* περίμενε 3 δευτερόλεπτα */
}
5ο Πρόγραμμα Ύψωση σε δύναμη, με χρήση μιας διαδικασίας ορισμένης από το χρήστη.. #include <stdio.h> #include <conio.h> main() { int base,power; int result;
/* Ορισμός μεταβλητών */
printf(" Δώσε έναν αριθμό για την βάση της δύναμης : " ) ; scanf("%d",&base);
/* Καταχώριση του αριθμού στην μεταβλητή base */
printf(" Δώσε έναν αριθμό για τον εκθέτη της δύναμης : " ) ; scanf("%d",&power); /* Καταχώριση στην μεταβλητή power
*/
result=raise(base,power); /* «Καλούμε» την raise και «περνάμε» το αποτέλεσμα στην μεταβλητή result */ printf("%d",&result);
/* Εκτυπώνουμε στην οθόνη … */
delay(1000);
/* περίμενε 1 δευτερόλεπτο
*/
} raise(base,power)
/* Ορισμός μεταβλητών μέσα στην raise */
int base,power; { int p; for ( p=1 ; power>0 ; - - power) p=p*base; return(p); }
6ο Πρόγραμμα Τεχνική ταξινόμησης στοιχείων πίνακα … main() { int i,j; float m; static float a[ ]={ -1 , 3 , -2 , 9 , 7 , -7 }; /* Ορισμός στοιχείων πίνακα */ for (i=0; i<5; ++i) { for (j=i+1; j<6; ++j)
if (a[i]>a[j]) { m=a[i]; /* εναλλαγή τιμών αν το a[i] είναι μεγαλύτερο από a[j] */ a[i]=a[j]; a[j]=m; } } for (i=0; i<6; ++i) printf(" %5 f ", a[i] ) ; printf(" \n "); for (i=5; i>-1; --i) printf("%5f", a[i]); printf("\n"); delay(2000);
/* περίμενε 2 δευτερόλεπτα */
}
7ο Πρόγραμμα Ελέγχει αν ένας αριθμός ανήκει σε ένα κλειστό διάστημα… #include <conio.h> main() { int a,b,x; char y; clrscr(); printf(" Όρια ακεραίου κλειστού διαστήματος ; \n " ) ; scanf("%d,%d",&a,&b);
/* Τα όρια είναι από a έως b
*/
printf(" Ακέραιος αριθμός ; \n "); /* Ο αριθμός που ελέγχουμε … */
scanf("%d",&x); /*
/*
… η μεταβλητή x
*/
Σχόλια για την μεταβλητή y :
Στο πρώτο σκέλος της y, αν ο αριθμός είναι μικρότερος από a και μεγαλύτερος από b, το πρόγραμμα επιστρέφει ΄ ΄, και πάει στην αντίστοιχη ( πρώτη ) case. Στο δεύτερο σκέλος, αν ο αριθμός διαιρείται με το 2, επιστρέφει ΄+ ΄, και πάει στην δεύτερη αντίστοιχη case. Στο τρίτο σκέλος, αν ο αριθμός δεν είναι στις 2 προηγούμενες συνθήκες, πάει στην τελευταία case. */ y=(x<a || x>b) ? ' ' : ( (x%2==0) ? '+' : '-'); switch (y) { case ' ': printf(" %d : Δεν ανήκει στο [%d,%d] \n ", x, a, b ) ; break; case '+': printf(" %d : Ανήκει στο [%d,%d] , … και είναι άρτιος \n" , x , a, b ) ; break; case '-': printf(" %d : Ανήκει στο [%d,%d] , … και είναι περιττός\n" , x , a, b ) ; break; } delay(2000); }
/* περίμενε 3 δευτερόλεπτα */
8ο Πρόγραμμα #include <stdio.h> #include <conio.h> /* Πρόσημο ακέραιου αριθμού */ main() { int a; char prosimo,q; clrscr(); printf("Δώσε έναν ακέραιο αριθμό :\n"); scanf("%d",&a); if (a<0) { prosimo='-' ; printf(" Ο %d έχει πρόσημο %c \n" , a , prosimo ) ; } else if (a==0) printf(" Ο %d δεν έχει πρόσημο \n " , a ) ; else { prosimo='+' ; printf(" Ο %d έχει πρόσημο %c \n " , a , prosimo ) ; } printf("\n"); printf(" Για να επιστρέψετε στο περιβάλλον της C \n " ) ; printf(" Πατήστε Ctrl και δύο φορές Break : \n " ) ; scanf("%c" , &q) ; scanf("%c",&q) ; delay(2000); }
9ο Πρόγραμμα /*
Μεταβλητές τύπου Char
*/
#include <stdio.h> main() { char e[20]; char o[15]; char p[15]; char a[25]; char t[10];
/*
[ Μήκος μεταβλητής σε χαρακτήρες ] */
int age; char sex; /* Εισαγωγή χαρακτήρων στις μεταβλητές */ printf(" Give your 2nd name : \n " ) ; scanf(" %20c " , e ) ; printf(" Give your 1st name : \n " ) ; scanf(" %15c " , o ) ; printf(" Give your fathername : \n " ) ; scanf(" %15c " , p ) ; printf(" Give your address : \n " ) ; scanf(" %25c " , a ); printf(" Give your telephone: \n " ) ; scanf(" %10c " , t ) ; printf(" Give your age: \n " ) ; scanf(" %d " , age ) ; printf(" Give your sex: \n " ) ; scanf(" %c " , sex ) ;
printf("\n"); /* … και εμφάνισή τους … */ printf(" Lastname : %c " , e[20] ) ; printf(" Name : %c " , o[15] ) ; printf( " Father_name : %c " , p[15] ) ; printf(" Address : %c " , a[25] ) ; printf(" Telephone : %d " , t[10] ) ; printf(" Age:%d " , age ) ; printf(" Sex : %c " , sex ) ; }
10ο Πρόγραμμα #include <stdio.h> #include <conio.h> /* Φωλιασμένες if */ main() { char x,y,z; clrscr(); printf("\n\n"); printf("----------------------------------------------------\n\n"); printf(" Δώστε μου διαδοχικά τους χαρακτήρες : a -- b -- c \n\n"); printf(" "); scanf("%c %c %c",&x,&y,&z); printf("\n\n");
if (x=='a') { if (y=='b') { if (z=='c') printf(" Δώσατε τους χαρακτήρες κατά τη ζητούμενη σειρά. \n\n"); else printf(" Δεν έδωσες ως τρίτο χαρακτήρα τον c. \n\n"); } else printf(" Δεν έδωσες ως δεύτερο χαρακτήρα τον b \n\n"); } else printf(" Δεν έδωσες ως πρώτο χαρακτήρα τον a \n\n"); printf("\n"); printf(" Για να επιστρέψετε στο περιβάλλον του MS-DOS \n\n"); printf(" Περιμένετε 2 δευτερόλεπτα... \n\n"); printf(" "); delay(2000); }
11ο Πρόγραμμα #include <stdio.h> struct minas { int i; char n[3]; }; main() { int j; static struct minas a[12]= { {31, {'J','A','N'}}, {28, {'F','E','B'}}, {31, {'M','A','R'}}, {30, {'A','P','R'}}, {31, {'M','A','Y'}}, {30, {'J','U','N'}}, {31, {'J','U','L'}}, {31, {'A','U','G'}}, {30, {'S','E','P'}}, {31, {'O','C','T'}}, {30, {'N','O','V'}}, {31, {'D','E','C'}} }; clrscr(); printf("\n\n"); printf("----------------------------------------------------------------------\n"); printf("\n"); printf(" Πρόγραμμα εκτύπωσης των 12 μηνών του έτους και των ημερών που έχουν. \n\n\n"); for (j=0; j<12; ++j) printf(" Month : %c%c%c Number of Days : %d \n", a[j].n[0] , a[j].n[1] , a[j].n[2] , a[j].i); printf("\n\n"); printf(" Πατήστε ένα πλήκτρο για τερματισμό του προγράμματος... ");
getch(); }
12ο Πρόγραμμα /*
Δίσεκτο ή όχι ημερολογιακό έτος.
#include <stdio.h> main() { int etos,i,j,k; int a; while(1) { clrscr(); printf("\n\n"); printf("--------------------------------------\n\n"); printf(" Δώστε μου ένα ημερολογιακό έτος : \n\n"); printf(" "); scanf("%d",&etos); printf("\n"); i=etos%4; j=etos%100; k=etos%400; if (!((i==0 && j!=0) || k==0)) printf(" Το έτος %d : Δεν είναι δίσεκτο \n\n",etos); else printf(" Το έτος %d : Είναι δίσεκτο \n\n",etos); printf("\n"); printf(" Do you want to finish the program; \n"); printf("\n");
*/
printf(" Type ' 2=Yes ' or ' 1=No ' : "); scanf("%d",&a); switch(a) { case 1: printf("\n"); printf(" Here we go again...in 2 sec! \n"); delay(2000); break; case 2: printf("\n"); printf(" That's the end of the story,folks! \n"); printf(" In about 2 seconds..."); delay(2000); exit(0); break; } } }
13ο Πρόγραμμα int addition(n) int n; { int sum=0; int i; for (i=0; i<=n; ++i) sum+=i; return (sum); }
main() { int i,athr,num; while(1) { clrscr(); printf("\n"); printf("\n"); printf("------------------------------------------------\n"); printf(" CALCULATE THE SUM OF NUMBERS,UNTIL THE LIMIT. \n"); printf("\n"); printf(" Numbers range from 0 up to 255 \n"); printf("\n"); printf(" Give me one number,please... : \n"); printf("\n"); printf(" "); scanf("%d",&num); athr=addition(num); printf("\n"); printf(" The addition is : %d \n",athr); printf("\n"); printf(" "); printf("\n"); printf(" Do you wish another calculation? \n"); printf("\n"); printf(" If Yes type 1,if No type 2... \n"); printf("\n"); printf(" "); scanf("%d",&i); switch(i) { case 1 :
printf("\n"); printf(" I'm going to start again in 2 seconds... "); delay(2000); break; case 2 : printf("\n"); printf(" This is the end of the program,in 2 seconds... "); delay(2000); clrscr(); exit(0); break; } } }