13 Προγράμματα C.

22

Click here to load reader

Transcript of 13 Προγράμματα C.

Page 1: 13 Προγράμματα C.

13

Προγράμματα

C

Καλοκαίρι 1997 & Καλοκαίρι 2011

Page 2: 13 Προγράμματα C.

1ο Πρόγραμμα

Το πρόγραμμα αυτό «διαβάζει» έναν χαρακτήρα από το πληκτρολόγιο και τον εμφανίζει στην οθόνη …

main() /* Πάντα ξεκινάμε με την main() */

{

char x; /* Ορίζουμε την μεταβλητή x σαν τύπου char */

do

{

scanf("%c",&x); /* « Διάβασε » την x */

printf("%c\n",x); /* … και δείξε την στην οθόνη … */

}

while ( x!='#' ); /* … μέχρι να πατηθεί η « # » */

}

2ο Πρόγραμμα

Εδώ εμφανίζουμε στην οθόνη όλους τους χαρακτήρες του πληκτρολο-γίου, με κωδικούς από 65 έως 122.

#include <stdio.h> /* Εδώ θα χρειαστούν και τα 2 αρχεία της C */#include <conio.h> /* που περιέχουν πρόσθετες πληροφορίες …*/

main()

{

int i; /* Ορίζουμε την μεταβλητή i σαν τύπου integer */

clrscr(); /* Καθαρίζουμε την οθόνη … */

Page 3: 13 Προγράμματα C.

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 δευτερόλεπτα */

}

Page 4: 13 Προγράμματα C.

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 … */

{ for ( j=0 ; j<3 ; ++j ) /* … και για όλες τις τιμές του j */

{

printf( "give %d,%d number\n" , i+1 , j+1 );

scanf( "%d" , &a[i][j]); /* Καταχώρηση των στοιχείων του πίνακα */

}

}

Page 5: 13 Προγράμματα C.

/* 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 */

Page 6: 13 Προγράμματα C.

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)

Page 7: 13 Προγράμματα C.

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 "); /* Ο αριθμός που ελέγχουμε … */

Page 8: 13 Προγράμματα C.

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 δευτερόλεπτα */

}

Page 9: 13 Προγράμματα C.

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);}

Page 10: 13 Προγράμματα C.

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 ) ;

Page 11: 13 Προγράμματα C.

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");

Page 12: 13 Προγράμματα C.

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);

}

Page 13: 13 Προγράμματα C.

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(" Πατήστε ένα πλήκτρο για τερματισμό του προγράμματος... ");

Page 14: 13 Προγράμματα C.

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");

Page 15: 13 Προγράμματα C.

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); }

Page 16: 13 Προγράμματα C.

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 :

Page 17: 13 Προγράμματα C.

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; }

}

}