Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης                              13/06/2013       

ΜΑΘΗΜΑ: Γλώσσα Προγραμματισμού Η/Υ

ΔΙΔΑΣΚΟΥΣΑ: Αναστασία Ρισάνου

ΟΝΟΜΑΤΕΠΩΝΥΜΟ - ΑΜ:

 

1)       Τι τυπώνει ο παρακάτω κώδικας?

 

#include <stdio.h>

int test (char);

main()

{printf("\t%d\n", test('G'));}

 

int test(char ch)

{char m;

  if (!(ch>='A' && ch<='Z'))

    return 0;

  for (m='A'; m<=ch; m++)

    printf("%c", m);

  return 1;

}

 

A) ABCDEFG  1    B) 0         C) ABCDEFG  0    D) ABCDEFGHIJKLMNOPQRSTUVWXYZ  1 

 

2)       Ποιο το αποτέλεσμα του παρακάτω προγράμματος?

 

#include <stdio.h>

int sumup(int);

main()

{ int k = 0;

  k = k + sumup(1);

  printf ("k=%d\n",k);

}

int sumup(n)

     int n;

{ int j=0;

  if(++n<5) 

    { j= sumup(n)+n;}

  return j;

}

 

A) k=14  B) k=9     C) k=5    D) k=15

 

3)       Τι τυπώνει ο παρακάτω κώδικας δεδομένου ενός αρχείου "file.txt" της μορφής που φαίνεται στο τέλος της άσκησης?

 

#include <stdio.h>

#include <stdlib.h>

struct data

{int a[5];

 int c;

};

struct test

{int x;

 float y;

  struct data b;

}f[2];

main()

{FILE *fp;

  int i, j;

  fp=fopen("file.txt", "r");

  if(fp==NULL)

    {  printf("Problem\n");

      exit(0);

    }

  for (i=0; i<2; i++)

    {  fscanf(fp,"%d", &f[i].x);

      fscanf(fp, "%f", &f[i].y);} 

  for  (i=0; i<2; i++)

    {fscanf(fp, "%d", &f[i].b.c);

    }  

  for  (i=0; i<2; i++)

    {for(j=0; j<5; j++)

                {fscanf(fp, "%d", &f[i].b.a[j]);

                }  

    }

 

  printf("%d\n", f[1].x);                                           /*file.txt  

  for (i=0; i<2; i++)                                                 5 10 20 15 30 29 80

    {printf("%f\n", f[i].y);}                                       50 4 30 9 11 12 13

  printf("%d\n", f[1].b.c);                                        20 3 2 56 45 23 12 45

  printf("%d\n", f[0].b.a[4]);                                    7 8 21 24 64 34 56 78

  printf("%d\n", f[1].b.a[1]);                                    100 35 54*/

 fclose(fp);

 }

A)  20

B)  5

C)  10

D)  10

10.000

10.000

20.000

20.000

15.000

20.000

15.000

15.000

29

25

29

30

9

30

20

30

12

29

30

11

 

4)       Τι τυπώνει ο παρακάτω κώδικας με input την συμβολοσειρά που βρίσκεται στο τέλος της άσκησης?

#include <stdio.h>

 char *find(char *s);

main()

{char l[40], *p;

  scanf("%s", l);

  p=find(l);

  if(p!=NULL)

    printf("%s\n", p);

  else

    printf("Do nothing");

}

 

char *find(char *s)

{int i=0, found=0;

  while(s[i]!='\0')

    {if(s[i] == '*')

                {found=1;

                  break;

                }

      i++;

    }

  if(found)

    return(s+i);

  else

    return(NULL);

    }                                                                          //Input: My*IsYou

 

A) MyIsYou                           B) My*IsYou                         C) *IsYou                               D) Do nothing

 

5)       Ποιό το αποτέλεσμα της συνάρτησης στο παρακάτω πρόγραμμα με input που δίνεται στο τέλος της άσκησης?

#include <stdio.h>

void func(char *p1, char *p2);

main()

{int i;

char a[20];

 gets(a); 

 func(a, a+3);

 puts(a);

}

void func(char *p1, char *p2)

{char ch;

  while(p1<p2)

    {ch=*p1;

      *p1=*p2;

      *p2=ch;

      p1++;

      p2--;

    }                                                        //Input: BENETIA

}

A) ENEBTIA          B) BENETIA          C) AITENEB                          D) BENE

 

6) Ποιο το αποτέλεσμα του παρακάτω κώδικα με input που δίνεται στο τέλος της άσκησης?

#include <stdio.h>

main()

{int y, p, ar, cnt=0;

  scanf("%d", &ar);

  do

    {y=ar%10;

      p=ar/10;

      printf("%d",y);

      cnt++;

      ar=p;

    }while(p!=0);

  printf("\ncnt=%d", cnt);                                      //input: 3426

 

}

A) 342.6

B)  6

C)  342

D)  6243

cnt=4

cnt=3

cnt=3

cnt=4

 

 

7)      Τι τυπώνει ο παρακάτω κώδικας?

#include <stdio.h>

void f(int x)

{printf("x=%d\n", x);

  x=103;

  printf("x=%d\n", x);

}

main()

{int x=102;

  f(x);

  printf("x=%d\n", x);

  printf("x=%d\n", x);

  }

A)        x=102

x=103

x=102

x=102

B)        x=103

x=103

x=102

x=102

C)        x=103

x=103

x=103

x=103

D)       x=102

x=102

x=102

x=102

 

 

8)      Τι τυπώνει ο παρακάτω κώδικας με input που δίνεται στο τέλος της άσκησης και πόσα bytes (64-byte system)δεσμεύει η calloc?

#include <stdio.h>

#include <stdlib.h>

main()

{int *p;

  int i, x, a=0;

  for (i=1; i<=10; i++)

    {scanf("%d", &x);

      if(x%2 !=0)

a++;

    }

  p=(int *) calloc(a, sizeof(int));

  for(i=0; i<a; i++)

    {p[i]=3*i;}

  printf("%d\n",p[a-1]);

  free(p);                                                    //input:1 2 3 4 5 6 7 8 9 11 

  }                         

 

A) 18, 8bytes          B) 15, 4bytes           C) 18, 24bytes        D) 15, 24bytes

 

 

9)      Να γραφεί κώδικας ο οποίος αφού θα ζητάει τα στοιχεία (όνομα, επώνυμο, διεύθυνση) για ένα σύνολο 100 ατόμων να μετράει πόσοι από αυτούς έχουν βρεθεί με το επίθετο ΖΕΡΒΟΣ. Να κάνετε χρήση δομής.

 

10)  Να γραφεί πρόγραμμα που να ζητάει από τον χρήστη να γεμίσει έναν δισδιάστατο πίνακα ακεραίων 10Χ10 από το πληκτρολόγιο. Στην συνέχεια να υπολογίζει το άθροισμα των στοιχείων κάθε γραμμής του πίνακα. Οι τιμές των αθροισμάτων να εμφανίζονται για όλες μαζί τις γραμμές στο τέλος του προγράμματος.

 

ΑΠΑΝΤΗΣΕΙΣ:

 

1)

2)

3)

4)

5)

6)

7)

8)