Till KTH:s startsida Till KTH:s startsida

C Labb 1

I denna laboration skall du skriva några små C-program. Efter laborationen kommer du att kunna de mest grundläggande konstruktionerna i C (villkorliga satser, slingor, enkel in- och utmatning samt funktioner). Du kommer att veta hur du kompilerar ett C-program samt hur du länkar med extra funktionsbibliotek.

Uppgift 1

Öppna emacs och skriv följande program och kalla filen star.c:
#include <stdio.h>
int main ()
{
    int i;
    for (i = 1; i <= 17; i = i + 1)
    	putchar ('*');
    putchar ('\n');
    return 0;
}
Kompilera programmet genom att skriva kommandot "gcc -o star star.c". Detta genererar en körbar fil som heter star (om du bara skriver gcc star.c kommer filen istället få namnet a.out). Provkör detta genom att ge kommandot "./star" och verifiera att det skriver ut 17 stjärnor på en rad.

Uppgift 2

Ändra programmet så att det läser in ett tal (m.h.a scanf) som anger hur många stjärnor som skall skrivas ut, och provkör.

Uppgift 3

Ändra programmet så att det upprepat läser in tal till dess filslut påträffas (filslut påträffas när användaren trycker på knapparna Ctrl och d samtidigt). För varje inläst tal skrivs så många stjärnor ut. (Utskriften kan komma direkt efter det att talet lästs in.)

Uppgift 4

Skriv ett nytt program (använd gärna koden i star.c) som plottar sin (x) mha stjärnor: För varje värde på den oberoende variabeln x skriver programmet ut en rad med (heltalsdelen av) 30 + 15 * sin (x) stjärnor. Skriv rader för x = 0, 0.3, 0.6, ..., 6.3. För att beräkna sinus finns det en funktion double sin (double x) i matematikbiblioteket. Du kommer åt denna funktion genom att inkludera system-headerfilen math.h (skriv #include <math.h> i början av koden) och vid kompilering länka med matematikbiblioteket genom att lägga till -lm sist på kommandoraden. (Om ditt nya program heter sinstar.c kompilerar du alltså genom att skriva kommandot gcc -o sinstar sinstar.c -lm).

Uppgift 5

Du skall i denna uppgift skriva ett program som räknar burr. Programmet skall skriva ut en lämplig informationstext och läsa in en burr-siffra (en siffra mellan 1 och 9). Därefter skall programmet skriva ut alla tal mellan 1 och 99, men om ett tal antingen innehåller en burr-siffra eller är delbart med burr-siffran skall istället burr skrivas ut. (Tips: använd modulo (%) för att ta få reda på resten av heltalsdivision, t.ex ger 10 % 4 resultatet 2.)
Exempel:
Ge burrsiffran: 3
1 2 burr 4 5 burr 7 8 burr 10 11 burr burr 14 burr 16 17 ...

Assistent Åsa Björndahl skapade sidan 31 augusti 2015

Åsa Björndahl flyttade sidan från Programmeringsteknik och C (DD1316) 31 augusti 2015

kommenterade 6 oktober 2015

Hej!

När blir denna labb tillgänglig? Jag pendlar och det som fungerar bäst är att labba på tåget. :)

Med vänliga hälsingar 
// Martin L

Assistent kommenterade 7 oktober 2015

Hej! 

C-delen kommer i period 3, dvs efter nyår. Nu framöver gäller datorprovet i nästa vecka och P-uppgiften (mer info kommer).

Med vänliga hälsningar,
Åsa

Administratör Mikael Djurfeldt ändrade rättigheterna 18 januari 2016

Kan därmed läsas av alla och ändras av lärare.
kommenterade 25 januari 2016

Jag har väldiga problem med radslut.

EOF är -1. Vad jag än matar in returnerar scanf endast 0 eller antalet lyckade inläsningar. 

Scanf ska returnera radslut om den påträffar det. Hur jag än skriver mitt program så kan jag inte få scanf att returnera radslut. Jag använder MinGW och Eclipse, och exekverar i Windows 8.1 kommandotolk.

Alla exempel jag hittat på internet som ska returnera radslut, har jag provat att kopiera rakt av, men det blir ingen skillnad.