C-ohjelmointi syksy 2006


Harjoitus 1

Tehtävät käsitellään harjoitustilaisuuksissa 7.9 TO 12-14 salissa B119 ja 8.9 PE 12-14 salissa B119.

  1. Kirjoita tiedostoon "Hello, world" ohjelma, käännä ja linkitä se. Suorita ohjelma.
    #include <stdio.h>
    
    main()
    {
    printf("Hello, world!\n");
    return 0;
    }
    
  2. Luentomuistiinpanoissa on esitetty tilanne, jossa ohjelma koostuu useammasta moduulista. Kirjoita tiedostot tietokoneelle ja käännä ne erikseen ja linkitä yhteen objektitiedostot. Kirjoita myös luentomuistiinpanoissa esitetty makefile ja kokeile sen käyttöä.

  3. Mitä seuraavat c-kieliset ohjelmanpätkät tekevät?
    a)while (*q++ = *p++);
    b)if ((c=fgetc(fileHandle)) == EOF)
    c)for (i=a, j=b; i<=j; i += 2, j += 2)
    
  4. Oheisessa c-kielisessä ohjelmassa on muutama virhe. Merkitse ne esim. ympyröimällä tai vaikka numeroimalla. Jos virhe ei ole vain yhdessä kohdassa, niin yhdistä kohdat sopivasti.
    #include <stdio.h>
    int longest(char **p, char *r) {
    char *s,*t;
    int max=0; len;
    while(*p++) {
         if ((len=strlen(*p) > max )  {
              max==len;
              s=*p
         }
         p++;
     }
     t=s;
     whlie(*r++ == *s++);
     r=t;
     return s - t;
    }
    
    int main () {
    int pit;
    char  pisin_rivi(80);
    static char *tptr[5] ={
      "Ensimmäinen \
       rivi",
      "Toinen rivi",
      "Ja tässä kolmas rivi",
      "Neljäs on riveistä kaikkein pisin",
      "Viides ja viimeinen"
     };
    char *pp = pisin_rivi;
    pit= longest(tptr,pp);
    prinft("%d merkkiä: %s\n",pit, pp);
    return 0
    }
    

.