Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın. Fonksiyon taban^us geri göndersin. Örneğin kuvvet(3,4)=3*3*3*3. Us değişkeninin, 1'e eşit yada daha büyük bir tamsayı olduğunu kabul edin. Yineleme basamağı taban^us = taban * taban^(us-1) şeklinde olmalı ve döngüden us, 1‘e eşit olduğunda çıkılmalıdır çünkü taban^1 = taban ‘dır. #include <stdio.h> #include <conio.h> double kuvvet(double taban,int us); int main() { double taban; int us; printf("Lutfen sirasi ile taban ve usu(tamsayi) giriniz: "); scanf("%lf%d",&taban,&us); printf("%.2f 'in %d' nci kuvveti: %.2f",taban,us,kuvvet(taban,us)); getch(); return 0; } double kuvvet(double taban,int us) if(us==1) return taban; else return taban*kuvvet(taban,us-1);
Soru2: (Yineleme Fonksiyonun Görselleştirilmesi) Daha önce anlatılan faktöriyel fonksiyonunu çağıran parametresini her yinelemede ekrana yazdırın. Bu işlem 1’den 10 ‘a kadar olan sayıların faktöriyelleri için gerçekleştirilsin. #include <stdio.h> #include <conio.h> long faktoriyel(long f); void yinelemeG(int s); int main() { int i; for(i=1;i<=10;i++) printf("%3d!=%ld\n",i,faktoriyel(i)); getch(); return 0; } long faktoriyel(long sayi) if(sayi<=1) return 1; else yinelemeG(sayi); return(sayi*faktoriyel(sayi-1)); void yinelemeG(int s) { printf("Sayi= %*d\n",s,s); }
Soru3: x ve y tam sayılarının ortak bölenlerinin en büyüğü (OBEB), her ikisini de tam bölen tam sayıların en büyüğüdür. x ve y sayılarının OBEB'ini bulan ver döndüren bir obeb yineleme fonksiyonu yazınız. x ve y ‘nin OBEB'i yineleme fonksiyonunda şu şekilde ifade edilmelidir: Eğer y sıfır ise, obeb(x, y) = x, eğer y, sıfıra eşit değilse obeb(x, y) = obeb(y, x % y) #include <stdio.h> #include <conio.h> int obeb(int x,int y); int main() { int x; int y; printf("OBEB'i bulunacak x ve y tamsayilarini giriniz:"); scanf("%d%d",&x,&y); printf("Bu sayilar icin OBEB: %d",obeb(x,y)); getch(); return 0; } int obeb(int x,int y) if(y==0) return x; else return obeb(y,x%y);
Soru4: main fonksiyonunun kendi kendini çağırmasıyla 500’e kadar sayan bir sayaç programı yazınız. #include <stdio.h> #include <conio.h> int main() { static int i=1; printf("%d\n",i); i++; if(i>500) getch(); return 0; } else main();
Soru5: Notları [0, 100] aralığında olacak şekilde 10 öğrencinin notları giriliyor. Bu notların hepsini, en yüksek puanlı öğrencinin puanı 100 olacak şekilde öteleyip sonra da ötelenmiş puanlara ekrana yazdıran ve bu puanlara göre ortalama hesaplayarak bu ortalamanın altında hangi öğrencilerin kaldığını yazdıran programı yazın. #include <stdio.h> #include <conio.h> #define BOYUT 10 int main() { int i,d[BOYUT],max=0,ek=0,top=0; float ort; for(i=0;i<BOYUT;i++) printf("%d. not:",(i+1)); scanf("%d",&d[i]); if(d[i]>max) max=d[i]; } ek=100-max; printf("Otelenmis notlar\n"); d[i]=d[i]+ek; printf("%d. not:%d\n",(i+1),d[i]); top+=d[i]; ort= 1.0*top/BOYUT; printf("Kalan ogrenciler\n"); for(i=0;i<BOYUT;i++) { if(d[i]<ort) printf("%d. ogr. kaldi.\n",(i+1)); } getch(); return 0;
Soru6: Tek belirteçli(boyut) bir dizi kullanarak, kullanıcıdan 10 ile 100 arasında en fazla 20 tamsayı alarak bunların tekrarlı olanlarını göz ardı edecek biçimde ekrana yazdıran programı yazınız. Mümkün olan en küçük diziyi kullanınız. #include <stdio.h> #include <conio.h> #define MAX 10 int main() { int sayi; int saydizi[MAX]; int k=0; int i; int dup; printf("Lutfen 10-100 arasi bir tamsayi giriniz:(Bitirmek icin -1) "); scanf("%d",&sayi); while(sayi !=-1 && k<MAX) if(sayi<10 || sayi>100) printf("Hatali giris taptiniz!\n"); continue; }
dup=1; for(i=0;i<k;i++) { if(sayi==saydizi[i]) dup=0; } if(dup==1) saydizi[k]=sayi; k++; printf("Lutfen 10-100 arasi bir tamsayi giriniz:(Bitirmek icin -1) "); scanf("%d",&sayi); printf("Tekrarsiz sayilar:\n"); printf("%4d",saydizi[i]); getch(); return 0;