1. Írjunk programot mely beolvas két számot és ellenőrzi hogy mindkét szám zérus-e: #include <stdio.h> main() { int number1, number2; printf("Adjon meg két számot: "); scanf("%d %d", &number1, &number2); if ((number1 == 0) && (number2 == 0)) printf("Mindkét szám zérus\n"); else printf("Nem igaz hogy mindkét szám zérus \n"); }
2. Írjunk programot mely beolvas két számot és megállapítja hogy valamelyik szám zérus-e: #include <stdio.h> main() { int number1, number2; printf("Adjon meg két számot: "); scanf("%d %d", &number1, &number2); if ((number1 == 0) || (number2 == 0)) printf("Legalább az egyik szám zérus 0\n"); else printf("Egyik szám sem zérus\n"); }
3. Írjunk programot mely eldönti, hogy a három megadott szakaszból szerkeszthető-e egy háromszög, ha igen akkor megadja a háromszög területét. #include <stdio.h> #include <math.h> main() { double a, b, c; /* változók deklarálása */ printf("a="); scanf("%d", &a); printf("b="); scanf("%d", &b); printf("c="); scanf("%d", &c); /* pozitív számnak kell lennie az oldalhosszaknak és két oldal összege nagyobb legyen mint a harmadik oldal */ if( a > 0 && b > 0 && c > 0 && a+b > c && a+c > b && b+c >a) { double s; /* területszámítás */ s = (a+b+c) / 2.0; printf("terulet= %lf\n", sqrt(s * (s – a) * (s – b) * (s – c))); } else { printf("Nem szerkesztheto haromszog\n"); } }
4. Írjunk programot mely addig olvas be számokat amig a felhasználó kétszer egymás után nullát nem ad. Ekkor a program leáll és kiírja a beolvasott számok összegét. #include <stdio.h> main() { int number; /* beolvasott szám */ int sum = 0; /* összeg */ int prev_zero; /* az előző szám zérus volt? */ prev_zero = 0; scanf("%d", &number); /* ha a szám zérus és előző szám is zérus akkor vége, ennek a tagadása van itt megfogalmazva !(A && B) == !A || !B */ while(number != 0 || prev_zero == 0) { sum = sum + number; if (number == 0) prev_zero = 1; else prev_zero = 0; scanf("%d", &number); } printf("The sum is %d\n", sum); }
5. Írjunk programot, amely kilistázza a képernyőre a Fibonacci számsor első n tagját. Az n értékét a program a klaviatúráról várja. A Fibonacci számsor kiszámítására a következő szabály érvényes : F0 = 0 ; F1 = 1 ; Fi = Fi-1 + Fi-2 ( i >= 2 )
#include <stdio.h> void main() { int n, fee, fe, fib, i; printf("Kérem n értékét : ") ; scanf("%d",&n) ; fee = 0 ; fe = 1 ; for(i=2; i<=n; i++) { fib = fe + fee; printf("\nFIB[%3d] = %5d",i,fib); } }
fee = fe ; fe = fib ;
printf("\n");
6. Írjunk programot, amely kiszámítja az 1 - 1/3 + 1/5 - 1/7 ... végtelen sor összegét, tetszőleges pontossággal. A kívánt pontosságot a program a klaviatúráról várja. Ellenőrzésül : a sor összege p / 4 #include <stdio.h> #include <math.h>
/* A fabs() ill. pow() függvények */ /* miatt szükséges */
void main() { double n, e, s, os; printf("\nKérem a pontosságot : "); scanf("%lf",&e) ; /* Az első összeg legyen 1 */ s = 1 ; /* A régi összeg legyen 0. */ os = 0 ; n = 1 ; /* Amíg a két összeg különbsége nagyobb a hibahatárnál */ while( fabs( s - os ) > e ) { /* Az eddigi összeg legyen a régi összeg. */ os = s ; n += 1 ; /* Számoljunk új összeget */ s += pow( -1, n-1 ) * (1.0/(2*n-1)) ; } printf("\nA sor összege : %lf",s); }
7. Írjunk programot, amely beolvas egy egész számot. A szám 2, 3 ill. 4 jegyű lehet. Ezt le is kell ellenőrizni. Az ellenőrzés után a program fordítsa meg a számot, és írja ki a képernyőre. A szám negatív is lehet ! #include <stdio.h> #include <math.h> void main() { int n, jegyek,vane; long szam,absszam,e,t,sz,ez,hanyados,maradek,ujszam; do {
do {
}
printf("\nKérem a számot : ") ; scanf("%ld",&szam) ; absszam = labs(szam); while( absszam !=0 || absszam/10 < 1 || absszam/1000 > 9 );
/* Most megállapítjuk, hogy hány jegyü a szám */ n=3 ; hanyados = 0 ; while( n>0 && hanyados == 0 ) { hanyados = absszam/(long)pow( 10,(double)n); n-- ; } jegyek = n+2 ; switch( jegyek ) { case 2: e = absszam/10 ; t = absszam%10 ; ujszam = 10*t+e ; break; case 3: e = absszam/100 ; maradek = absszam%100 ; t = maradek/10 sz = maradek%10
; ;
ujszam = 100*sz + 10*t + e; break;
case 4: e = absszam/1000 ; maradek = absszam%1000 ; t = maradek/100 ; maradek = maradek%100 sz = maradek/10 ez = maradek%10
;
; ;
ujszam = 1000*ez + 100*sz + 10*t + e; break; default:
break;
} if( szam > 0 ) { printf("\nA megfordított szám = %ld\n",ujszam); } else { printf("\nA megfordított szám = %ld\n", -1*ujszam); } printf("\nVan - e még szám (i/n) : ") ; vane = getc(stdin) ; } while( vane == 'i' ); }
8. Írjunk egy egyszerüsített morze jeleket előállító programot ! A program inputja egy négyjegyű egész szám ! Le is kell ellenőrizni, hogy valóban négyjegyű-e ! A számot először átkódoljuk úgy, hogy az egyeseket a százasokkal ill. a tízeseket az ezresekkel cseréljük fel. Az így kapott számot kell morze jelek sorozatává alakítani a következőképpen : Az első jel a START legyen, ezt szóköz kövesse. Ezután következzen a kódnak megfelelő jelsorozat szóközökkel elválasztva. Ezt a jelsorozatot kövesse egy szóköz ill. a STOP jel. Mindaddig "morzézni" kell amíg az 'i' billentyűt nyomjuk le a program által feltett kérdésre. A szükséges morze kódok a következők : START = -.-.1 = .----
2 = ..---
3 = ...--
4 = ....7 = --... 0 = -----
5 = ..... 8 = ---..
6 = -.... 9 = ----.
STOP
= .-.-.
#include <stdio.h> void main() { int kod, ez, sz, tz, eg, ujkod, szamjegy, valasz, i; do { kod = 0 ;
printf("\nKérem a számot : ");
do {
scanf("%d",&kod); } while(kod<1000 || kod>9999); ez = kod/1000 ; sz = (kod - ez*1000)/100 ; tz = (kod - ez*1000 - sz*100)/10 ; eg = (kod - ez*1000 - sz*100 - tz*10 ); ujkod = 1000*tz + 100*eg + 10*ez + sz ; printf("\nA számnak megfelelő kód : %4d\n",ujkod); printf("\n") ; printf("-.-.- ") ; // START jel for(i=1; i<=4; i++) { if( i==1 ) {
szamjegy = tz; } else if( i==2 ) { szamjegy = eg; } else if( i==3 ) { szamjegy = ez; } else szamjegy = sz; switch(szamjegy) { case 0: printf("----- "); break; case 1: printf(".---- "); break; case 2: printf("..--- "); break; case 3: printf("...-- "); break; case 4: printf("....- "); break; case 5: printf("..... "); break; case 6: printf("-.... "); break; case 7: printf("--... "); break; case 8: printf("---.. "); break; case 9: printf("----. "); break; default: printf("HIBA"); break; } } printf(" .-.-.") ; // STOP jel
printf("\nTovábbi szám (i/n) : "); valasz = getc(stdin) ; }
} while( valasz == 'i'
);
9. Írjunk programot amely az a, b, c értékek ismeretében képernyőre írja az ax2+bx+c=0 másodfokú egyenlet megoldásait. #include <stdio.h> #include <math.h> main() { double a, b, c; printf(”a=”); scanf(”%d”, &a); printf(”b=”); scanf(”%d”, &b); printf(”c=”); scanf(”%d”, &c); if(a == 0) { if(b == 0) { if(c == 0) { printf(“Az egyenlet azonossag”); } else { printf(“Az egyenlet ellentmondas”); } } else { printf(“Elsofoku egyenlet megoldas: %lf”, -c / b); } } else { double det = b*b-4*a*c; if(det < 0.0) { printf(“Nincs valos megoldas”); } else if(det == 0.0) { printf(“Ket egybeeso megoldas: %lf”, -b/(2*a)) } else { prtinf(“Ket megoldas: %lf %lf”, (-b+sqrt(det)) / (2*a), (-b-sqrt(det)) / (2*a));
} } }