C programlama Örnek Soruları-1
31.01.2015 14:23
Bazı örnek sorular ile size kod yazmak hakkında biraz bilgi aktarmak istiyorum. Neler yapacağımızdan bahsedelim. Klavyeden değer almayı, döngü yapmayı, dizi kullanmayı, karakterleri ve ASCII tabloyu öğreneceğiz.
Lütfen aşağıda yazılan kodlarda eksik varsa bildiriniz.
İlk yazımda klavyeden nasıl değer alınacağından bahsetmiştim aslında ama bu yazımda da biraz bahsetmek istiyorum. Klavyeden herhangi bir değer almak istiyorsak scanf komutunu kullanırız. Öncelikle int bir değer alalım.
int deger;//öncelikle klavyeden değer almak istiyorsak o değişkeni yazmamız gerekscanf("%d",°er);//deger adında bir değişkene klavyeden değer alırız.
Klavyeden değer aldıysak şimdi de bir kaç tane değer alalım. Ama öncelikle bir soru verelim bunun üzerine yapalım.
Soru: Klavyeden alınan 5 sayının toplamı ve aritmetik ortalamasını ekrana yazınız.
Bu soruda yapmamız gereken bir toplam değişkeni belirtmek bir de klavyeden değer almak için deger değişkenini belirtmek. 5 sayı alacaksak eğer bir döngü kurup bu döngüyü 5 defa döndürmemiz gerek. Hadi başlayalım.
main(){int toplam=0;//toplam değişkenini 0'a eşitledik çünkü toplam değerimizin 0 dan başlaması gerek.int deger;for(int i=0;i<5;i++){printf("%d. sayiyi giriniz=");scanf("%d",°er);toplam=toplam+deger;}printf("toplam=%d,ortalama=%d",toplam,toplam/5);return 0;}
Görüldüğü üzere for döngüsü kurduk. içeriside 4 kısım bulunduran bir döngüdür, for döngüsü. 1. kısım int i=0 kısmı, burada bir değişken belirlenir sayaç gibidir. 2. kısım i<5 kısmıdır, burası şart kısmıdır. 3. kısım i++ dediğimiz kısımdır. 4. kısım da { } içerisinde kalan kısımdır, buraya da döngü içerisinde yazacağınız kod yer alır.
Birde toplam=toplam+deger; satırımız var. Burada toplam değişkeninin eski değerine deger değişkenini ekliyoruz ve yeni bir toplam değeri alıyoruz. yani şöyle toplam=5 olsun deger=2 olsun. toplam=5+2=7 olur yani. toplam 5 değerinden 7 değerine geçmiş olur.
İlk döngümüzün adı for döngüsüydü. Şimdi bunun bir benzeri olan while(şart){} döngüsü var. Ama öncelikle şunu söylemek istiyorum eğer döngüleriniz sonsuz döngü olursa programınızı kendiniz kapatmak zorunda kalırsınız. Ve kodunuz yanlış olur. Her döngünün mutlaka çıkma şartı bulunmak zorundadır.
i=0;while(i<5){i++;printf("%d",i);}//kodun çıktısı 12345//i'nin son değeri 5
Evet while döngüsünü de yaptık. Bu yazımda sadece bu iki döngüyü yazıyorum. Diğer yazımda do-while döngüsü ile büyük bir program yazmayı planlıyorum. Büyük derken bir çok konu da size bilgi verecek olan bir kod olacak.
Şimdi ise karakterlere geçelim. Ama öncesinde ASCII tablo hakkında bilgi vermek istiyorum. 256 tane karakter vardır. Bu karakterleri ekrana yazdırmak için aşağıdaki koda göz atınız ve kendi ascii tablonuzu kendiniz yazınız.
for(int i=0;i<256;i++){printf("%d %c\n",i,i);//%c ile bir sayı yazmıyoruz o sayıya denk gelen karakteri yazıyoruz.}
ASCİİ tabloyu yazdırmayı öğrendiğimize göre sıradaki sorumuza geçelim. Ama isterseniz kısaca karakter dizilerinden bahsedelim.
char isim[10];
diye yazdığımızda isim adında en fazla 10 karakter içeren bir dizi olacak, değişken adı isim oldu. Yani karakter dizisi giriyorsak genelde ya isim deriz ya soyisim deriz. Başlangıç için karakter dizilerinin amacının bu olduğunu biliniz. Şimdi bu diziye klavye ile isim girelim.
scanf("%s",&isim);//görüldüğü gibi int değer girer gibi yazdık ama isim[10] diye tanıtsak da burada sadece isim yazdık.
Eğer biz klavyeden osmcgrgenc girersek:
isim[0]=o
isim[1]=s
isim[2]=m
isim[3]=c
.
.
.
isim[8]=n
isim[9]=c
Eğer 10 karakterden daha fazla girseydik sadece dizi boyutu kadar olan kısmını görecektir.
Size sormadığımız soruyu ödev verelim.
Soru: Klavyeden girilen kelimenin tüm harflerini büyük harfe çeviriniz.
Not:Sorunun cevabı diğer yazımda ek olarak verilecektir.
Okuduğunuz için teşekkürler.