4.Hafta BİL 105-02-06 Soruların Çözümleri

advertisement
4.Hafta BİL 105-02-06
Soruların Çözümleri
SORU1. Kullanıcının girdiği bir sayının tek mi, yoksa çift mi olduğunu bulan bir C programı yazınız.
Yazdığınız programın algoritmasını yazınız ve akış çizeneğini çiziniz.
#include <stdio.h>
main() {
int n,a,b,x,z ;
printf(" \n\ta ve b tamsayilarini giriniz : ");
scanf("%d %d" , &a, &b);
z=(a>b) ? a : b ;
printf("%d\n",z);
n=z;
(((n/2)*2) == n ) ? printf("%d cift bir sayidir.\n") :
printf("%d tek bir sayidir.\n");
x = n%3 ;
x = (x < 12 ) ? x : -1 ;
printf("%d\n",x) ;
}
1. SORU2. a,b,c katsayılarını kullanıcının girdiği ikinci dereceden bir denklemin
köklerini bulan bir C programını ve algoritmasını yazınız. Programın akış çizeneğini
iziniz.
A) Katsayıların tamsayı olması durumu:
#include <stdio.h>
#include <math.h>
main() {
int a,b,c;
float x1;
float x2;
float diskriminant;
printf(" \n Denklemin a,b,c tamsayi katsayilarini giriniz : \n");
scanf("%d%d%d" , &a,&b,&c);
printf("Denklem %dx^2 + %dx +%d = 0 dir \n" , a,b,c);
diskriminant = b*b -4*a*c;
if (diskriminant < 0) printf("Denklemin gercel kokleri yoktur. \n");
else {
x1 = (-b + sqrt(diskriminant) ) / (2*a);
x2 = (-b - sqrt(diskriminant) ) / (2*a);
printf("Kokler: \n");
printf("x1 = %f ve x2 = %f dir. \n" , x1,x2);
}
return 0;
}
SORU2.
Katsayıların float olması durumu:
#include <stdio.h>
#include <math.h>
int main() {
float a,b,c,x1,x2,d,dsq;
printf("ax^2 + bx + c = 0 ");
printf("\n a,b,c katsayılarini virgulle ayirark giriniz : \n");
scanf("%f,%f,%f",&a,&b,&c);
d = b*b-(4*a*c);
if(d>=0) {
dsq=sqrt(d);
x1 = (-b+dsq)/(2*a);
x2 = (-b-(dsq))/(2*a);
printf("\nRoot 1 : %f\nRoot 2 : %f",x1,x2);
}
if(d<0) {
d = ((4*a*c)-pow(b,2))/(2*a);
printf("\nRoot 1 : %f+%fi",((-b)/(2*a)),d);
printf("\nRoot 2 : %f-%fi",((-b)/(2*a)),d);
return 0;
}
}
SORU3. Kullanıcının gireceği iki tam sayının maksimumunu bulan bir C programını
ve algoritmasını yazınız. Akış çizeneğini çiziniz.
Çözüm 1:
#include<stdio.h>
#include<math.h>
int main() {
int a,b,max,min;
printf("İki tamsayı giriniz. ");
scanf("%d%d",&a,&b);
(a > b) ? max = a : max = b ;
printf("Grdiğiniz sayıların maksimumu %d dir \n" , max);
return 0;
}
Çözüm 2:
#include <stdio.h>
#include <math.h>
main()
{
int n ;
printf(" \n\t Bir tamsayi giriniz : ");
scanf("%d" , &n);
(((n/2)*2) == n ) ? printf("%d cift bir sayidir.\n" ,n) :
printf("%d tek bir sayidir.\n",n);
}
Çözüm 2: Fonksiyon ile Çözüm
even(n)
int n;
{
if (n%2)
return 0;
else
return 1;
}
1. SORU4. Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız.
#include <stdio.h>
int main() {
int x = 11,y = 11,z = 11;
char a = 40,b = 40,c = 40;
float r = 12.987,s = 12.987,t = 12.987;
if (x == y) z = -13;
if (x > z) a = 'A';
if (!(x > z)) a = 'B';
if (b <= c) r = 0.0;
if (r != s) t = c/2;
printf("z = %i\n ", z);
printf("a = %i\n ", a);
printf("a = %i\n ", a);
printf("r = %f\n ", r);
printf("t = %f\n ", t);
return 0;
}
if (x == y) z = -13;
if (x > z) a = 'A';
if (!(x > z)) a = 'B';
if (b <= c) r = 0.0;
if (r != s) t = c/2;
Çıktılar:
z = -13
a = 65
a = 65
r = 0.000000
t = 20.000000
/* bu satir z = -13 konumunu yapar*/
/* a = 65 yapar */
/* bu satir bir sey degistirmez */
/* r = 0.0 yapar */
/* t = 20 yapar */
1. SORU 5
Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız.
#include <stdio.h>
int main() {
int x = 11,y = 11,z = 11;
char a = 40,b = 40,c = 40;
float r = 12.987,s = 12.987,t = 12.987;
if (x = (r != s)) z = 1000; printf("z = %i\n ", z);
if (x = y) z = 222; printf("z = %i\n ", z);
if (x != 0) z = 333; printf("z = %i\n ", z);
if (x) z = 444; printf("z = %i\n ", z);
return 0;
}
if (x = (r != s)) z = 1000; printf("z = %i\n ", z);
if (x = y) z = 222; printf("z = %i\n ", z);
if (x != 0) z = 333; printf("z = %i\n ", z);
if (x) z = 444; printf("z = %i\n ", z);
Çıktılar:
z = 11
z = 222
z = 333
z = 444
/* x = positif bir sayi ve z = 1000 yapar */
/* x = y, ve z = 222 yapar */
/* z = 333 yapar */
/* z = 444 yapar */
1. SORU 6. Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız.
#include <stdio.h>
İnt main() {
int x = 11,y = 11,z = 11;
char a = 40,b = 40,c = 40;
float r = 12.987,s = 12.987,t = 12.987;
x = y = z = 77;
if ((x == y) && (x == 77)) z = 33; printf("z = %i\n ", z);
if ((x > y) || (z > 12)) z = 22; printf("z = %i\n ", z);
if (x && y && z) z = 11; printf("z = %i\n ", z);
if ((x = 1) && (y = 2) && (z = 3)) r = 12.00; printf("z = %i\n ", z);
if ((x == 2) && (y = 3) && (z = 4)) r = 14.56; printf("z = %i\n ", z);
return 0;
}
x = y = z = 77;
if ((x == y) && (x == 77)) z = 33;
/* z = 33 yapar */
printf("z = %i\n ", z);
if ((x > y) || (z > 12)) z = 22;
/* z = 22 yapar */
printf("z = %i\n ", z);
if (x && y && z) z = 11;
/* z = 11 yapar */
printf("z = %i\n ", z);
if ((x = 1) && (y = 2) && (z = 3)) r = 12.00;
/* bu satir x = 1, y = 2, z = 3, r = 12.00 yapar */
printf("z = %i\n ", z);
if ((x == 2) && (y = 3) && (z = 4)) r = 14.56;
printf("z = %i\n ", z);
Çıktılar:
z = 33
z = 22
z = 11
z=3
/* bu satir hiçbir şey degistirmez */
SORU 7. Aşağıdaki programı çözümleyiniz ve çıktılarını yazınız.
#include <stdio.h>
int main() {
int x = 11,y = 11,z = 11;
char a = 40,b = 40,c = 40;
float r = 12.987,s = 12.987,t = 12.987;
if (x == x); z = 27.345; printf("z = %i\n ", z);
if (x != x) z = 27.345; printf("z = %i\n ", z);
if (x = 0) z = 27.345; printf("z = %i\n ", z);
return 0;
}
if (x == x); z = 27.345;
printf("z = %i\n ", z);
if (x != x) z = 27.345;
printf("z = %i\n ", z);
if (x = 0) z = 27.345;
printf("z = %i\n ", z);
Çıktılar:
z = 27
z = 27
z = 27
/* z her zaman degisir */
/* hicbir sey degismez */
/* x = 0 yapar, ama z 'yi degistirmez */
8. Kullanıcının gireceği üç float sayının maksimumunu bulan bir C programı ve
algoritmasını yazınız.
Çözüm 1. Yalnız if kullanarak
#include <stdio.h>
int main() {
float a, b, c;
printf("3 sayi giriniz: ");
scanf("%f %f %f", &a, &b, &c);
if(a>=b && a>=c) printf("Girilen 3 sayinin en buyugu = %.2f", a);
if(b>=a && b>=c) printf("Girilen 3 sayinin en buyugu = %.2f", b);
if(c>=a && c>=b) printf("Girilen 3 sayinin en buyugu = %.2f", c);
return 0;
}
Çözüm 2. if-else kullanarak
#include <stdio.h>
int main() {
float a, b, c;
printf("Enter three numbers: ");
scanf("%f %f %f", &a, &b, &c);
if (a>=b) {
if(a>=c) printf("Girilen 3 sayinin en buyugu = %.2f",a);
else printf("Girilen 3 sayinin en buyugu = %.2f",c);
} else {
if(b>=c) printf("Girilen 3 sayinin en buyugu = %.2f",b);
else printf("Girilen 3 sayinin en buyugu = %.2f",c);
}
return 0;
}
Çözüm 3. if-else kullanarak
#include <stdio.h>
int main() {
float a, b, c;
printf("3 float sayi giriniz: ");
scanf("%f %f %f", &a, &b, &c);
if(a>=b && a>=c) printf("Girilen 3 sayinin en buyugu = %.2f", a);
else if(b>=a && b>=c) printf("Girilen 3 sayinin en buyugu = %.2f", b);
else printf("Girilen 3 sayinin en buyugu = %.2f", c);
return 0;
}
9. Kullanıcının gireceği iki tamsayının en büyük ortak bölenini (ebob) bulan bir C programı yazınız.
Çözüm 1:
#include <stdio.h>
int main() {
int num1, num2, i, ebob;
printf("İki tamsayı giriniz: ");
scanf("%d %d", &num1, &num2);
for(i=1; i<=num1 || i<=num2; ++i) {
if(num1%i==0 && num2%i==0)
/* i 'nin bir çarpan olup olmadığı denetleniyor */
ebob=i;
}
printf("%d ve %d nin ebob = %d", num1, num2, ebob);
return 0;
}
Çözüm 2:
#include <stdio.h>
int main() {
int num1, num2, min,i;
printf("İki tam sayı giriniz: ");
scanf("%d %d", &num1, &num2);
min=(num1>num2)?num2:num1;
/* girilen sayıların minimumuna min denildi */
for(i=min; i>=1; --i) {
if(num1%i==0 && num2%i==0) {
printf("%d ve %d nin ebob = %d", num1, num2, i);
break;
}
}
return 0;
}
10. ax + by = m ve cx + dy = n doğrusal denklemlerinin tek çözümü olası için a*d-b*c != 0 olmalıdır. Bu
durumda çözüm
x = (m * d) - (b * n)) / ((a * d) - (c * b);
y = ((n * a) - (m * c)) / ((a * d) - (c * b));
dir. Değilse sonsuz çözüm vardır.
Katsayılarını kullanıcının gireceği bir dnklem sisteminin çözümünü bulan bir C
programı yazınız.
#include<stdio.h>
int main()
{
int a,b,c,d,m,n;
float x, y
printf("Katsayi giniz : a \n");
scanf("%d",&a);
printf("Katsayi giniz : b \n");
scanf("%d",&b);
printf("Katsayi giniz : c \n");
scanf("%d",&c);
printf("Katsayi giniz : \n");
scanf("%d",&d);
printf("Katsayi giniz : m \n");
scanf("%d",&m);
printf("Katsayi giniz : n \n");
scanf("%d",&n);
if((a*d)-(c*b) == 0)
printf("\nSonsuz cozum var \n");
else
{
x = (float)((m * d) - (b * n)) / ((a * d) - (c * b));
printf("\nx = %f ",x);
y = (float)((n * a) - (m * c)) / ((a * d) - (c * b));
printf("\ny = %f ",y);
}
return 0;
}
Download