Do-while döngüsü do { döngü bloku while (Expression); Örnek: #include <stdlib.h> int main(){ int num,i=0; do{ printf("giriş için: 1\n"); printf("çıkış için 2"); scanf("%d",&num); ++i; switch(num){ case 1:printf("Hoşgeldiniz\n");break; default : exit(0); while(i<=10); Döngü blokunda tek bir deyim varsa { yazılmayabilir. (a) #include <stdlib.h> double i=5.5678; do printf("merhaba!"); while(!i); 1
(b) int main(){ double i=5.63333; do printf("merhaba!"); while(!i); (c) int main(){ int x=25,y=1; do if(x>5) printf(" NE"); else if(x>10) printf(" NASIL"); else if(x==25) printf(" NEREDE"); else printf(" NİÇİN"); while(y--); break: break C dilinin anahtar sözcükleinden birisidir. Program akışını girdiği bloktan çıkarır. int main(){ int i; for(i=0;i<=4;i++){ printf("%d",i); break; printf("kapı 1"); printf("kapı 2"); return 0 2
Bu örnekte break, program akışını switch-case blokundan dışarıya çıkarıyor. int main(){ int i=0; ++i; switch(i){ case 1:printf("case 1"); case 2:printf("case 2");break; case 3:printf("case 3"); default: printf("default"); Return 0; break başka yerde kullanılırsa derleme hatası doğar: int main(){ float a=5.5f; if(a==5.5){ printf("equal"); else{ break; Return 0 3
Palindrome #include <string.h> int main() { char a[100], b[100]; printf("bir string giriniz\n"); gets(a); strcpy(b,a); strrev(b); if (strcmp(a,b) == 0) printf("girdiğiniz string palindrome'dur'.\n"); else printf("girdiğiniz string palindrome değildir.\n"); 4
Palindrome sayı: Klavyeden girilen bir sayının palindrom olup olmadığını bulan bir C programı yazınız. main() { int n, reverse = 0, temp; printf("bir tam sayı giriniz\n"); scanf("%d",&n); temp = n; while (temp!= 0) { reverse = reverse * 10; reverse = reverse + temp%10; temp = temp/10; if (n == reverse) printf("%d sayısı palindrome dur.\n", n); else printf("%d sayısı palindrome değildir.\n", n); 5
M91. Aşağıdaki toplamı bulan bir C programı yazınız. n ( n=1 i + 1 ) Li Çözüm: #include <stdlib.h> int main() { int i, N = 10; float toplam ; for (i = 1; i <= N; i++) toplam += (i+1)/i ; printf("serinin toplami : %.3f dir\n", toplam); 6
M95. Klavyeden girilen pozitif tamsayıların başlangıç ve bitiş değerleri arasında kalan çift sayıları ve adetlerini yazan bir C programı yazınız. Çözüm: #include <stdlib.h> int taban, tavan, i,sayac=0; printf("taban ve tavnı giriniz> "); scanf("%d%d", &taban, &tavan); for(i=taban+1; i<tavan; i++) { if (i%2==0){ printf("%d\t",i); sayac++; printf("\ntoplam sayı : %d", sayac); 7
M99. A ülkesinin nüfusu 15 milyon ve nüfus artış hızı %025 tir. B ülkesinin nüfusu 25 milyon ve nüfus artış hızı %0125 tir. Kaç yıl sonra A ülkesinin nüfusu B ninkini geçer? Çözüm: #include <stdlib.h> int sayac=0; long int a=15000000, b=25000000; while(a <= b) { a += a*0.025; b += b*0.0125; sayac++; printf("%d yıl sonra ", sayac); printf("\na nin nüfusu : %d", a); printf("\nb nin nüfusu : %d", b); 8
M911. Ardışık kenar uzunluğu öncekinin yarısı olan N tane karenin alanları toplamını veren bir C programı yazınız. Çözüm: #include <stdlib.h> #include <math.h> int N= 20,a=1,i; float alan; for(i=0; i<=n; i++) { alan += a*a/(pow(2,i)*pow(2,i)); printf("alan = %f birim karedir ", alan); 9
M13. Bir hayvanat bahçesinde dişi maymun kafese her girişte, giriş sayısı kadar muz yiyiyor. Ancak 5.girişten sonra doyuma ulaşan dişi maymun (Y-g)/2 +1 tane muz yiyiyor. [Y o ana kadar yenen muz sayısı, M giriş sayısıdır]. Erkek maymun dişinin iki katını yiyiyor. Kullanıcının gireceği g giriş sayısı sonunda dişi ve erkek maymunun yedikleri muz sayısı ve toplam yenen muz sayısını bulan bir C programı yazınız. Çözüm: /* toplam_yenen_muz_sayisi : tmuz erkek maymunun yediği muz sayısı : emuz dişi maymunun yediği muz sayisi : dmuz giriş sayisi : g Yenen muz sayısı : y,ys */ int i, j, g, tmuz=0, emuz= 0, dmuz=0, y=0,ys=0 ; char ch; printf("maymunun cinsiyeti (e/e:erkek, d/d disi) >"); scanf("%c", &ch); printf("giris sayisini giriniz >"); scanf("%d",&g); switch(ch) { case 'd': case 'D': if (g <= 5) { for (i=1; i<= g; i++) dmuz += i; else if (g> 5) { y = 1+2+3+4+5; ys = y; for (j=6; j<=g; j++) { ys += (ys-j) /2 +1; dmuz = + ys; printf("disi maymunun yedigi muz sayisi : %d ", dmuz); break; 10
case 'e': case 'E': if (g<=5) { for (i=1; i<= g; i++) emuz += 2*i; else if (g>5) { y = 2*(1+2+3+4+5); ys = y; for (j=6; j<=g; j++) { ys += (ys-j)+ 2; emuz = ys; printf("erkek maymunun yedigi muz sayisi : %d ", emuz); break; 11
M914. Bir işportacı büyük boy(1), orta boy(2) küçük boy(3) ve çocuk boy(4) kdlarıyla dört farklı kot satıyor. Satıcının her gün hangi kod dan kaç pantalon sattığını belirleyen bir C programı yazınız. Çözüm: #include <stdlib.h> int kod = 5; int kot1,kot2,kot3,kot4; int bkot=0, okot=0, kkot=0,ckot=0; char ch; int sayi =1; printf("\nbuyuk boy icin (1) "); printf("\norta boy icin (2) "); printf("\nkucuk boy icin (3) "); printf("\ncocuk icin (4) "); do { printf("\nlutfen kod giriniz: Durmak icin (0) giriniz.\n"); scanf("\n%d",&kod); while (kod!= 0) { printf("\nkac tane kot sattiniz >"); scanf("%d", &sayi); /* printf("\n%d kodu icin %d adet kot girdiniz. Dogru mu? (E/H)", kod, sayi); scanf("%c", &ch) ; if ((ch == 'e' ) (ch == 'E')) { */ switch(kod) { case 1: case 2: case 3: bkot += sayi; printf("\nsatilan buyuk boy kot sayisi. %d ", bkot); break; okot += sayi; printf("\nsatilan orta boy kot sayisi. %d ", okot); break; kkot += sayi ; printf("\nsatilan kucuk boy kot sayisi. %d ", kkot); 12
case 4: break; ckot += sayi++; printf("\nsatilan cocuk boy kot sayisi. %d ", ckot); break; while (kod!= 0); 13
14
M915. T = 1 x/1 + x 2 /2 x 3 /3 + x 4 /4 + - Serisinin toplamını bulan bir C programı yazınız. Çözüm a: #include <stdlib.h> int main() { int i,n; float x, sum=0; printf("kac terim toplansin? "); scanf("%d", &n); printf("x değerini giriniz "); scanf("%f", &x); for(i=0; i<=n; i++) sum += pow((-x),i))/i ; printf("serinin ilk %d teriminin toplamı %.3f dir", n,sum); Çözüm b: #include <math.h> int i,n; float x, sum=0, xi=1; printf("kac terim toplansin? "); scanf("%d", &n); printf("x değerini giriniz "); scanf("%f", &x); for(i=1; i<=n; i++) { sum += pow((-x),i)/i ; printf("\nserinin ilk %d teriminin toplami %f dir", n,sum); 15
M924. Dört basamaklı sayılar arasında, sayaklarının toplamının küpü kendisine eşit olan sayıları bulan bir C programı yazınız. #include <math.h> int a=0,b=0,c=0,d=0; int x; for(a=0; a<=9; a++) for(b=0; b<=9; b++) for(c=0; c<=9; c++) for(d=0; d<=9; d++){ if (d== 4) continue; if ((d*1000+c*100+b*10+a)== pow((d+c+b+a),3)) x = d*1000+c*100+b*10+a; printf("%d", x); /** 0, 1, 512, 4913, 5832 */ 16
M925. Sayaklarının faktoryelleri toplamı kendisine eşit olan ü basamaklı bir sayı bulunuz. Çözüm. bca = c! + b! + a! #include <math.h> long factorial(long number); /*function prototype */ int a=0,b=0,c=0,d=0; int x; for(a=0; a<=9; a++) for(b=0; b<=9; b++) for(c=0; c<=9; c++) { if ((c*100+b*10+a) == factorial(c) + factorial(b) + factorial(a) ) x = c*100+b*10+a; printf("%d ", x); /* recursive function definition */ long factorial(long number) { if (number <= 1) return 1; else return (number * factorial(number-1)); /** 145 */ 17
M926. Sayaklarının kendi kuvvetlerinin ( x x gibi) toplamına eşit olan dört basamaklı sayıyı bulan bir C programı yazınız. #include <math.h> //int a=0,b=0,c=0,d=0; int a,b,c,d; int x; for(d=0; d<=9; d++) for(c=0; c<=9; c++) for(b=0; b<=9; b++) for(a=0; a<=9; a++) { pow(b,b) + pow(a,a))){ if ((d*1000+c*100+b*10+a) == (pow(d,d) + pow(c,c) + x = d*1000 + c*100 + b*10 + a; printf("%d ", x); /** 30 3435 */ 18
SORU. Sayaklarının karelerinin ( x*x gibi) toplamına eşit olan dört basamaklı sayıyı bulan bir C programı yazınız. #include <math.h> int a=0,b=0,c=0,d=0; int x; for(d=0; d<=9; d++) for(c=0; c<=9; c++) for(b=0; b<=9; b++) for(a=0; a<=9; a++) { if ((d*1000+c*100+b*10+a)== d*d + c*c + b*b + a*a) { x = d*1000+c*100+b*10+a; printf("%d ", x); /** 0 1 */ 19
M27. 10 + 25 = 45 45 2 = 2025 Koşulunu sağlayna dört basamaklı sayıları bulunuz. #include <math.h> int a=0,b=0,c=0,d=0; int x; for(d=0; d<=9; d++) for(c=0; c<=9; c++) for(b=0; b<=9; b++) for(a=0; a<=9; a++) { if (((d*10+c) + b*10+a) == ((d+b)*10 + a) && (((d+b)*10+a)*((d+b)*10 +a) == (d*1000+c*100+b*10+a))) { x = d*1000+c*100+b*10+a; printf("%d ", x); /** 0 1 2025 3025 */ 20