Programmering grundkurs och Programmering C
för D1 m fl, även distanskursen
lördag 31 maj 2008 kl 14:00 - 18:00
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
PRG045 Programmering C, provkod 0110 (och 0100, och 0101)
TDD121 Tillämpad datavetenskap A, provkod 0700 (och 0400)
TDP118 Programmering C, distans, provkod 0110 (och 0100)
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 32.
För godkänt betyg (3 respektive G) krävs 16 poäng. |
Resultat och lösningar: | Meddelas via e-post eller på distanskursens hemsida, http://basen.oru.se/kurser/c/2007-2008-p34-distans/, senast lördag 21 juni 2008. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. |
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) 1 + 2 * 3 - 4
b) 1 + 2 - 3 / 4
i = 0; x = 3.0; while (i < 5) { k = i; if (i == 4) x = x / 4; i = i + 2; }
Skriv därför ett komplett C-program som först läser in värdena på x, y och R, beräknar uttrycket, och till sist skriver ut uttryckets värde. Beräkningarna ska ske med flyttal.
Om nämnaren i divisionen (dvs deluttrycket under divisionsstrecket) är noll, eller om deluttrycket inuti rottecknet är mindre än noll, går uttrycket inte att beräkna. I så fall ska programmet inte försöka beräkna uttrycket, utan det ska i stället skriva ut ett informativt och rättvisande felmeddelande om saken.
En sådan post används för att lagra data om en igelkott. En igelkott har ett namn, en vikt, och ett antal taggar. Namnet kan vara högst tio tecken långt, till exempel Karl-Oskar. Vikten ska lagra som ett flyttal, medan antalet taggar ska vara ett heltal.
Definiera posttypen struct Igelkott.
Igelkott: Pilt Vikt: 1.3 kg Taggar: 7000
Du får själv välja om du vill att funktionshuvudet ska se ut så här:
struct Igelkott las_igelkott()
eller så här:
void las_igelkott(struct Igelkott *p)
I den här och alla andra uppgifter på tentan gäller: Om du ska 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. |
BMI, "Body Mass Index", är ett mått som kan användas för att avgöra om en person har normal vikt. BMI definieras som vikten (i kilo) delat med kvadraten på längden (i meter). Det tar alltså inte hänsyn till kroppsbyggnad, utan bara vikt och längd.
Skriv ett C-program som upprepat läser in längd och vikt på en person, och skriver ut personens BMI.
Programmet ska avslutas när man matar in en person som har längden eller vikten noll.