Geschrieben von mCPBA am 29.07.2011 um 11:43:
C: Programm zu Schaltjahren stürzt ab
Hallo,
ich habe das Vergnügen, ein Programm in C schreiben zu dürfen, welches mir zu jeder beliebigen Jahreszahl angibt, ob es sich um ein Schaltjahr handelt. Leider verabschiedet sich mein Programm immer nach Eingabe der Jahreszahl:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
|
#include<stdio.h>
//Festlegen der Jahreszahl
int main(){
int jahr=0;
do{
printf("Bitte positive Jahreszahl eingeben: ");
scanf("%d", jahr);
}while(jahr<=0);
//Eigentlicher Test
if(jahr %4 == 0)
{
if(jahr %100 == 0)
{
if(jahr %400 == 0)
printf("%d ist ein Schaltjahr.\n", jahr);
else
printf("%d ist kein Schaltjahr.\n", jahr);
}
else
printf("%d ist ein Schaltjahr.\n", jahr);
}
else
printf("%d ist kein Schaltjahr. \n", jahr);
return 0;
}
|
|
Starten mit Debugger liefert folgendes:
"Schaltjahr.exe": "C:\Users\mCPBA\Documents\Visual Studio 2010\Projects\Schaltjahr\Debug\Schaltjahr.exe" geladen, Symbole wurden geladen.
"Schaltjahr.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
"Schaltjahr.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
"Schaltjahr.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB file
"Schaltjahr.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen.
Eine Ausnahme (erste Chance) bei 0x5f29effe (msvcr100d.dll) in Schaltjahr.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.
Unbehandelte Ausnahme bei 0x5f29effe (msvcr100d.dll) in Schaltjahr.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x00000000.
Vllt kann mir einer von Euch bei der Fehlersuche behilflich sein
Schöne Grüße
Geschrieben von nattydread am 29.07.2011 um 19:07:
du hast bei scanf das "&" bei jahr vergessen
abgesehn davon: versuche mal etwas an der effektivität deines programmes zu optimieren..da sind noch einige operationen drin,die man so nicht unbedingt benötigt