Instrukcja złożona:
#include <stdio.h>
#define PI 3.1415926
#define PROMIEN 3.3
#define WYSOKOSC 44.4
#define KRYTERIUM 1500.0
#define WSP 2.22
#define WZOR_OBJETOSC PI*promien*promien*wysokosc
#define WYNIK printf(”\nObjetosc walca = %f”,objetosc)
main()
{
float promien, wysokosc, objetosc;
promien=PROMIEN;
wysokosc=WYSOKOSC;
objetosc=WZOR_OBJETOSC;
WYNIK;
if(objetosc>KRYTERIUM)
{
float objetosc, promien=PROMIEN*WSP;
objetosc=WZOR_OBJETOSC;
WYNIK;
printf(” (lokalna)”);
}
WYNIK;
}
Efekt:
Objetosc walca = 1519.010264
Objetosc walca = 7352.010742 (lokalna)
Objetosc walca = 1519.010264
Instrukcja if:
#include <stdio.h>
#include <math.h>
#define DD ”\nRownanie ma dwa pierwiastki rzeczywiste rozne”
#define D0 ”\nRownanie ma dwa pierwiastki rzeczywiste rowne”
#define DU ”\nRownanie ma dwa pierwiastki zespolone sprzezone”
#define DT ”\nRownanie tozsamosciowe”
#define DS ”\nRownanie sprzeczne”
#define DL ”\nRownanie liniowe”
main()
{
float a,b,c,delta,x1,x2;
printf(”\nPodaj wspolczynniki rownania kwadratowego”);
scanf(”%f%f%f”,&a,&b,&c);
if(a==0)
if(b==0)
if(c==0)
printf(DT);
else
printf(DS);
else
{
x1= -c/b;
printf(DL);
printf(”\nx=%#-7.2f”,x1);
}
else
{
delta=b*b - 4*a*c;
if (delta>0)
{
printf(DD);
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf(”\nx1=%#-7.2f x2=%#-7.2f”,x1,x2);
}
else
{
if(delta==0)
{
printf(D0);
x1=x2=-b/(2*a);
printf(”\nx1=x2=%#-7.2f”,x1);
}
else
{
printf(DU);
x1=-b/(2*a);
x2=sqrt(-delta)/(2*a);
printf(”\nx1=%#-7.2f%#+7.2fi”,x1,x2);
printf(”\nx2=%#-7.2f%#+7.2fi”,x1,-x2);
}
}
}
}
Instrukcja while:
#include <stdio.h>
#define LIMIT 6
#define KOD_P 64
#define PODKR 27
main()
{
int i=1, k=1, j=KOD_P;
printf(”\ni j znak o kodzie (j)\n”);
while (k<PODKR)
{
putchar('-');
k++;
}
while (i<=LIMIT)
printf(”\n%i %i %c”,i++, j+i, j+i);
}
Wynik:
i |
j |
znak o kodzie (j)
|
1 |
65 |
A |
2 |
66 |
B |
3 |
67 |
C |
4 |
68 |
D |
5 |
69 |
E |
6 |
70 |
F |
Wprowadzenie jednej linii tekstu z klawiatury:
#include <stdio.h>
#include <ctype.h>
#define EOL '\n'
main()
{
char linia[80];
int i=0, max;
while((linia[i]=getchar())!=EOL) ++i;
max=i;
/*wyprowadzenie 1 linii tekstu (DUZE LITERY)*/
i=0;
while (i<max)
{
putchar(toupper(linia[i]));
++i;
}
}
Instrukcję:
while((linia[i]=getchar())!=EOL) ++i;
można zastąpić:
linia[i]=getchar();
while(linia[i]!='\n')
{
i++;
linia[i]=getchar();
}
Napisać program, który znajdzie w podanym ciągu liczb zawartych pomiędzy 0 a 20 największą i najmniejszą oraz poda, ile razy każda z tych dwóch liczb wystąpiła. Zakładamy, że ciąg o nieznanej z góry długości będzie zakończony liczbą spoza zakresu.
#include <stdio.h>
main ()
{
int liczba, max= -1, min=21, lmax, lmin;
while (printf("podaj liczbe <0,20>"), scanf("%d",&liczba), liczba>=0&&liczba<=20)
{
if (liczba==max) lmax++;
if (liczba>max) {max=liczba; lmax=1;}
if (liczba==min) lmin++;
if (liczba<min) {min=liczba; lmin=1;}
}
if (max>=0)
{
printf("\nmaksimum rowne %d, liczba powtorzen %d", max, lmax);
printf("\nminimum rowne %d, liczba powtorzen %d", min, lmin);
}
else
printf("Brak liczb w ciagu");
}
Napisać program, który będzie obliczał pierwiastki kwadratowe z odczytywanych liczb. Program powinien odrzucać wartości ujemne i zatrzymać się, gdy otrzyma wartość 0.
#include <stdio.h>
#include <math.h>
void main()
{
double liczba;
for(;;)
{
printf("\nPodaj liczbe dodatnia:\n");
scanf("%lf",&liczba);
if (liczba==0) break;
if(liczba>0)
{
printf("Jej pierwiastek wynosi %lf",sqrt(liczba));
continue;
}
printf("Prosilem o liczbe dodatnia");
}
Instrukcja switch:
switch (wyrażenie)
{
case wyrażenie stałe 1:
lista instrukcji 1
case wyrażenie stałe 2:
lista instrukcji 2
•••
case wyrażenie stałe n:
lista instrukcji n
default:
awaryjna lista instrukcji
}
switch (wybor)
{
case 1:
case 2: printf(”Brawo\n”);
break;
case 3: printf(”Tak trzymac\n”);
case 4: printf(”Bardzo dobrze\n”);
break;
default: printf(”Milego dnia\n”);
}
Instrukcja skoku goto:
#include <stdio.h>
#define VPOCZ 70
#define VKONC 240
#define KROK 10
main()
{
float v, vm;
printf(”\n---------------------------------”);
printf(”\nPredkosc [km/h] Predkosc [m/s]”);
printf(”\n---------------------------------”);
v=VPOCZ;
pocz:
vm=v/3.6;
printf(”\n %3i %6.2”,(int)v, vm);
v+=KROK;
if (v>VKONC) goto kon;
goto pocz;
kon:
printf(”\n---------------------------------”);
}
Predkosc [km/h] |
Predkosc [m/s] |
70 |
19.44 |
80 |
22.22 |
90 |
25.00 |
100 |
27.78 |
110 |
30.56 |
120 |
33.33 |
130 |
36.11 |
••• |
|
220 |
61.11 |
230 |
63.89 |
240 |
66.67 |
instrukcja switch
warunek wejściowy
1 2 3 n-1 n wyjście awaryjne
możliwe wyjścia (default)
(do wyboru)