70 likes | 296 Views
Soru1: kuvvet( taban,us ) Şeklinde bir yinelenen fonksiyon yazın. Fonksiyon
E N D
Soru1:kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın. Fonksiyon taban^usgeri 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("Lutfensirasiiletabanveusu(tamsayi) giriniz: "); scanf("%lf%d",&taban,&us); printf("%.2f 'in %d' ncikuvveti: %.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() { inti; 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 obebyineleme fonksiyonu yazınız. x ve y ‘ninOBEB'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> intobeb(intx,int y); int main() { int x; int y; printf("OBEB'ibulunacak x ve y tamsayilarinigiriniz:"); scanf("%d%d",&x,&y); printf("Bu sayilaricin OBEB: %d",obeb(x,y)); getch(); return 0; } intobeb(intx,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 inti=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() { inti,d[BOYUT],max=0,ek=0,top=0; floatort; 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"); for(i=0;i<BOYUT;i++) { 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() { intsayi; intsaydizi[MAX]; int k=0; inti; int dup; printf("Lutfen 10-100 arasibirtamsayigiriniz:(Bitirmekicin -1) "); scanf("%d",&sayi); while(sayi !=-1 && k<MAX) { if(sayi<10 || sayi>100) { printf("Hataligiristaptiniz!\n"); printf("Lutfen 10-100 arasibirtamsayigiriniz:(Bitirmekicin -1) "); scanf("%d",&sayi); 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 arasibirtamsayigiriniz:(Bitirmekicin -1) "); scanf("%d",&sayi); } printf("Tekrarsizsayilar:\n"); for(i=0;i<k;i++) { printf("%4d",saydizi[i]); } getch(); return 0; }