Döngü problemi

NoWeDoR
Cool Çırak
Kod:
#include <stdio.h>

int main()
{
	int choice;
	do
	{
		printf("Enter your choice: ");
		scanf("%d", &choice);
		switch (choice)
		{
		case 1:
		{
			printf("Hello World\n\n");
			break;

		}
		case 2:
		{
			printf("Hello World2\n\n");
			break;
		}
		case 3:
		{
			printf("Hello World3\n\n");
			break;
		}
		default:
		{
			return 0;
			break;
		}
		}
	} while (choice >= 1 && choice <= 3);
	return 0;
}

1) Böyle bir progRamda ilk başta seçime anlamsız değerler girince (* , < ' ^ / * - gibi.) olması gerektiği gibi program sonlanıyor.

2) Ancak ilk önce seçime 1 2 ya da 3'ten herhangi birini girip ve ardından bir sonraki seçimde anlamsız değerler girince (* , < ' ^ / * - gibi.) döngü sonsuza giriyor.

İlkinde böyle bir problem olmuyorken neden ikincisinde oluyor?
 
mbk.
Forum Kalfası
en başa choice=0 şeklinde atama yapınız.
sıfırlamadığınız için her seferinde otomatik değer aldı gibi gözüküyor. program sapıtıyor.

Kod:
#include <stdio.h>

int main()
{
	int choice;
	do
	{
		choice = 0;
		printf("Enter your choice: ");
		scanf("%d", &choice);
		switch (choice)
		{
		case 1:
		{
			printf("Hello World\n\n");
			break;

		}
		case 2:
		{
			printf("Hello World2\n\n");
			break;
		}
		case 3:
		{
			printf("Hello World3\n\n");
			break;
		}
		default:
		{
			return 0;
			break;
		}
		}
	} while (choice >= 1 && choice <= 3);
	return 0;
}
 
Üst