Programmering grundkurs och Programmering C
för D1 m fl, även distanskursen
lördag 28 maj 2011
Gäller som tentamen för:
DT1016 Datateknik A, Programmering grundkurs, provkod 0100
DT1007 Datateknik A, Tillämpad datavetenskap, provkod 0410
DT1006 Datateknik A, Programmering C, distans, provkod 0100
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 40.
För godkänt betyg (3 respektive G) krävs 20 poäng. |
Resultat och lösningar: | Meddelas via e-post eller på kursens hemsida, http://basen.oru.se/kurser/c/2010-2011-p2/, senast lördag 18 juni 2011. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på universitetets centrala tentamensutlämning. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
Prioritet | Kategori | Operator | Associativitet |
---|---|---|---|
Högsta | Unära postfixoperatorer | (), [], ->, ., ++, -- | vänster |
Unära prefixoperatorer | !, ++, --, +, -, *, &, sizeof, (typ) | höger | |
Multiplikation mm | *, /, % | vänster | |
Addition mm | +, - | vänster | |
Jämförelser | <, <=, >=, > | vänster | |
Likhetsjämförelser | ==, != | vänster | |
Logiskt OCH | && | vänster | |
Logiskt ELLER | || | vänster | |
Lägsta | Tilldelning | =, +=, -=, *=, /=, %= | höger |
a) 2 * 2 + 2 * 2
b) 2 + 2 * 2 + 2
Ett körexempel, med användarens inmatning kursiverad:
Ange x: 2 Ange y: 0.5 x/y = 4.000000 y/x = 0.250000
I den här och alla andra uppgifter på tentan gäller:
Normalt är felhantering en stor del av ett program. Vad ska till exempel hända om användaren skriver Kalle när hon egentligen borde mata in ett tal? Här behövs dock ingen felhantering, om så inte särskilt efterfrågas i uppgiften. |
a = 1; b = 2; x = 99.5; y = a; while (x > a) { if (a == b || b == x) { a = a + 1; } else { x = x - 0.5; } }
I den här och alla andra uppgifter på tentan gäller:
Om du behöver använda något från en tidigare uppgift eller deluppgift, till exempel anropa en funktion som skrevs i den tidigare uppgiften, så behöver du inte skriva samma kod igen. Du får också göra uppgiften även om du inte gjort den tidigare uppgiften. |
Funktionshuvud:
void initialer(char *helanamnet, char *initialer);
Skapa datatypen struct Apple, som ska användas för att lagra data om ett äpple. Vi kan anta att ingen äppelsort har ett namn med mer än 20 tecken, inklusive mellanslag (som Gyllenkroks astrakan).
Du får själv välja vilket av dessa två funktionshuvuden du ska använda:
struct Apple las_apple() void las_apple(struct Apple *p)
Om man vet längden på sidorna b och c, samt vinkeln A, kan man använda cosinussatsen för att beräkna längden på den motstående sidan a:
Skriv ett fullständigt C-program (med #include och allt) som upprepat läser in b, c och A, och sen skriver ut längden a. Programmet ska avslutas så fort man matar in en sida b som är mindre än eller lika med noll.
Ett körexempel, med användarens inmatning kursiverad:
Ange sidan b: 33 Ange sidan c: 42 Ange vinkeln A (i radianer): 1.74 a = 57.617686 Ange sidan b: 1000 Ange sidan c: 0.01 Ange vinkeln A (i radianer): 0.1 a = 999.990050 Ange sidan b: -13.7
Skriv ett C-program som först frågar efter namnet på filen, och sedan läser filen och talar om dels hur många tal som totalt finns på filen, och dels hur många av talen som avviker med mer än 10 procent från talens medelvärde.3.14 2.71828 6.023 och så vidare
Om filen inte går att öppna, ska ett felmeddelande skrivas ut, och programmet ska avslutas.
Ledtråd: Man måste läsa igenom filen två gånger, först en gång för att räkna ut medelvärdet, och sen en gång för att räkna antalet avvikande tal.
Skriv ett C-program som först frågar efter namnet på filen, till exempel alla-tal.txt, sen frågar efter namnet på en andra fil, till exempel unika-tal.txt. Därefter ska programmet läsa talen från den första filen (alla-tal.txt), och skriva ut de unika talen (dvs med alla dubbletter borttagna) på den andra filen (unika-tal.txt).
(Vi har inga prestandakrav. Programmet får gärna ta lång tid att köra, bara det ger rätt utdata.)
Om filen inte går att öppna, ska ett felmeddelande skrivas ut, och programmet ska avslutas.
Ledtråd: Lagra de unika talen i minnet, till exempel i en array.