< Speciális

C nyelvhez kapcsolódó feladatok

Szerző: Sallai András

Copyright © Sallai András, 2011

Licenc: GNU Free Documentation License 1.3

Web: https://szit.hu

Bevezetés

Az itt található feladatok a C nyelvhez kapcsolódnak. Azonban több mint kétszáz általános feladatokat találsz az alábbi helyen, amelyek szintén megvalósíthatók C nyelven, az egészen kezdőtől haladóbb szintig:

Általános programozási feladatok

Néhány feladatban hiányozik a megfelelő tagolás, behúzás, szintaxis kiemelés; ez nem véletlen.

Szintaktikai hibák

A következő feladatok szintaktikai hibákat tartalmaznak, amelyeket meg kell keresned.

Feladat 001

A következő programban keresse meg a hibákat:

#include stdio.h
main()
{
int a := 0;
printf("Írj be egy száznál nagyobb számot: ");
while a < 100 {
printf("Szám: ");
scanf("%d", &a);
}
}

A megoldást írja a 001.txt állományba, majd töltse fel a megadott helyre.

Feladat 002

A következő programban keresse meg a hibákat:

#inclde <stdio.h>
main()
{
a = 0;
printf("Írj be egy száznál nagyobb számot: ")
while(a < 100) {
printf("Szám: ")
scanf("%d", &a)
}
}

A megoldást írja a 002.txt állományba, majd töltse fel a megadott helyre.

Feladat 003

Keresse meg a következő programban a szintaktikai hibákat.

#include <stdio.h>
#include <math.h
main()
{
double a, b, c;
printf("Háromszög adatai);
printf("a: ", &a);
printf("b: ");
scanf("%lf", &b);
printf("c: ");
scanf("%lf", &c);
if (a + b < c)
{
printf("Háromszög nem szerkeszthető");
exit(2);
}
else if (a + c < b)
{
printf("A háromszög nem szerkeszthető");
exit(2);
}
else if (c + b < a)
{
printf("A háromszög nem szerkeszthető");
exit(2);
}
else
{
s = (a, + b + c)/2;
terulet = sqrt(s*(s-a)*(s-b)*(s-c))
}
}

A megoldást írja a 003.txt állományba, majd töltse fel a megadott helyre.

Szemantikai hibák

Feladat 101

A következő programnak ki kell írnia, hogy kérünk egy száznál nagyobb számot, majd be kell kérni egy számot mindaddig amíg 100-nál kisebbet írt be a felhasználó. A program azonban nem ezt csinálja. Hol a hiba?

#include <stdio.h>

main()
{
a = 0;
printf("Írj be egy száznál nagyobb számot: ");
while(a > 100)
{
printf("Szám: ");
scanf("%d", &a);
}
}

A megoldást írja a 101.txt állományba, majd töltse fel a megadott helyre.

Feladat 102

A következő programnak be kell kérnie egy háromszög három oldalát. El kell döntenie, hogy a háromszög megszerkeszthető-e, majd kiszámolnia a területet. A program azonban nem ezt teszi. Hol a hiba?

#include <stdio.h>
#include <math.h>
main()
{
double a, b, c;
printf("Háromszög adatai");
printf("a: ");
scanf("%lf", &a);
printf("a: ");
scanf("%lf", &b);
printf("c: ");
scanf("%lf", &a);
if (a + b < c)
{
printf("Háromszög nem szerkeszthető");
exit(2);
}
else if (a + c < b)
{
printf("A háromszög nem szerkeszthető");
exit(2);
}
else if (c + b < a)
{
printf("A háromszög nem szerkeszthető");
exit(2);
}
else
{
s = (a, + b + c)/2;
terulet = pow(s*(s-a)*(s-b)*(s-c),s);
}
}

A megoldást írja a 102.txt állományba, majd töltse fel a megadott helyre.

Feladat 103

A következő programnak be kell kérnie egy számot majd az értéket a képernyőre írnia. A program viszont nem ezt csinálja. Hol a hiba?

#include <stdio.h>
main()
{
double a;
printf("Szám: ");
scanf("%f", &a);
printf("%f\n", a);
}

A válaszod mentsd a hoz.txt fájlba.

Feladat 104

#include <stdio.h>
int main() {
printf("Helló");
return 0;
printf("adf");
printf("adf");
printf("adf");
int a;
for(a=0; a<10; a++) {
printf("Valami");
printf("Másik");
}
}

Mit ír a következő program a képernyőre?

Átláthatatlan szintaktikai hibák

Feladat 201

#include <stdio.h>
#include <math.h>
main()
{
printf("Ellipszis közelítő kerülete");
double ellipszisatlo1 ellipszisatlo2;
double ter1 := 4*((M_PI*ellipszisatlo1*ellipszisatlo2+pow(ellipszisatlo1-ellipszisatlo2,2))\(ellipszisatlo1+ellipszsatlo2));
printf("Terület: %lf\n", ter1)
if ter1 < 1200 then
{ print("Nem elég nagy az ellipszis!\n");
}

Átláthatatlan szemantikai hibák

Feladat 301

A következő program feladata, hogy bekéri két kör sugarát, majd kiszámolja azok kerületét és területét. A kör kerületének képlete 2*r*pi. A kör területének képlete r^2*pi. A ^ karakter egy szám valahányadik hatványát jelöli. A r^2, az r a második hatványon. A program a végén kiírja, hogy melyik nagyobb a területe alapján. A program azonban nem ezt csinálja. Keresse meg a hibákat.

#include <stdio.h>
#include <math.h>
main( ){
double ter2, r1, ker1, ker2, ter1, r2;
printf("Kör 1 sugara: "); scanf("%lf", &r1);
printf("Kör 2 sugara: ");
scanf("%lf", &r2);
ker1 = r1 * M_PI;
ker2 = r2 * M_PI;
ter1 = pow(r1, 2) * M_PI;
ter2 = pow(r2, 2) * M_PI;
if (ter1 > ter2)
printf("A második kör nagyobb");else
printf("Az első kör nagyob");
}

Vegyes hibák

Feladat 401

A következő feladat a húrnégyszögekről szól. A húrnégyszögek olyan négyszögek amelyeknek bármely két szemközti szögének összege 180°. Megfordítva: Ha egy négyszög két szemközti szögének összege 180°, akkor az húrnégyszög. Másként fogalmazva: A húrnégyszög olyan négyszög, amelyhez van olyan kör, amely áthalad a négyszög négy csúcsán. Újabb megfogalmazásban: olyan négyszög, melynek oldalai egy kör húrjai.

A következő programnak ki kell számolnia a húrnégyszög köré írható kör sugarát. Azonban nem ezt teszi. Keresse meg a hibákat!

Segítség

A húrnégyszög kerületének fele:

s = (a+b+c+d)/2;

A húrnégyszög kerülete:

terulet = gyok((s-a)*(s-b)*(s-c)*(s-d));

A húrnégyszög köré írható kör sugara:

sugar = (1/(4*terulet))* gyok((ab + cd)* (ac + bd)* (ad + bc));

A program

#include <stdio.h>
#include <math.h>
main()
{double a, b, c, d;
printf("a: ");
scanf("%lf", &a);
printf("b: ");
scanf("%lf, &c);
printf("c: ");
scanf("lf", &c);
print(" b: ", &d);
s = (a+b+c+d)/2;
t = sqrt((s-a)*(s-b)*(s-c)*(s-d));
r = (1/(4*T))* sqrt((ab + cd)* (ac + bd)* (ad + bc));
}