Professional Documents
Culture Documents
Laborator nr. 4
Instruciuni de control
4.1.
Instruciuni de selecie
4.1.1.
Instruciunea if
4.1.2.
Problema 4.1.
//program de citire a trei numere ntregi i afieaz maximul dintre ele
#include<stdio.h>
void main () /* citete a,b,c i scrie maximul dintre ele */
{
int a,b,c, max;
scanf (%d%d%d, &a, &b, &c);
if (a > b) max = a;
else max = b;
if (c >max) max = c;
printf (max(%d, %d, %d) = %d\n, a, b, c, max);
}
Problema 4.2.
// citete valoarea lui x i scrie valoarea funciei de mai jos
4 + 5 2 + 1 < 0
100
= 0
// =
2 + 8 1 > 0
#include<stdio.h>
void main () /* citete x, calculeaz f(x) i scrie valoarea lui f */
{
29
MatrixRom 2013
ISBN: 978-973-755-897-8
float x,y;
scanf(%f, &x);
if(x < 0) y = 4*x*x*x+5*x*x-2*x+1;
else if (x = = 0) y = 100.0;
else y = 2*x*x+8*x-1;
printf(y(x) = %f\n, y);
}
Problema 4.3.
// programul nr.1 de ghicire a unui numr
#include<stdio.h>
#include<stlib.h>
void main (void)
{
int magic; /* numrul care trebuie ghicit*/
int ghiceste; /*numrul indicat de utilizare*/
magic=rand(); /*genereaznumrul ascuns*/
printf("ghiceste numarul ascuns: ");
scanf("%d", &ghiceste);
if (ghiceste== magic)
{
printf("**corect**");
printf("%d este nr magic\n", magic);
}
else
{
printf("gresit");
if (ghiceste >magic)
printf("prea mare\n");
else
printf("prea mic\n");
}
}
Problema 4.4.
// programul nr.2 de ghicire a unui numr
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
int magic; /*numrul care trebuie ghicit*/
int ghiceste; /*numrul indicat de utilizator*/
magic = rand(); /* genereaz numrul ascuns*/
printf("Ghiceste numarul ascuns: ");
scanf("%d", &ghiceste);
if (ghiceste == magic) printf("**Corect**");
30
MatrixRom 2013
ISBN: 978-973-755-897-8
else printf("Gresit");
}
4.1.3.
Instruciunea switch
Instruciunea switch permite realizarea structurii selective multiple, fiind folosit pentru
ramificarea programului pe mai multe ramuri. Structura general a unei instruciuni switch
4.1.4.
Problema 4.5.
//program de calcul al primelor trei puteri a unui numr introdus de la tastatura
#include<stdio.h>
void main (void)
{
int y, optiune;
printf("introdu un intreg ");
scanf("%d",&y);
printf("1. Iesire din program\n");
printf("2. Patratul lui y\n");
printf("3. Cubul lui y\n");
printf("4. Primele trei puteri ale lui y\n");
scanf("%d\n", &optiune);
switch(optiune)
{
case 1: printf("iesire");
break;
case 4: printf("%d\n",y*y*y*y);
case 3: printf("%d\n",y*y*y);
case 2: printf("%d\n",y*y);
break;
default: printf("optiune necunoscuta\n");
}
}
31
MatrixRom 2013
ISBN: 978-973-755-897-8
Problema 4.6.
// Programul urmtor citete o dat calendaristic de forma: zzllaaaa i o scrie sub forma:
//aaaa, luna zi
// unde:zz este ziua pe 2 cifre; ll este luna pe 2 cifre; aaaa este anul pe 4 cifre; zi este ziua
// pe 1-2cifre; luna este denumirea lunii calendaristice;
#include<stdio.h>
void main () /* citete zzllaaaa i scrie aaaa, luna zz */
{
int zz,ll,an;
scanf (%2d%2d%4d, &zz, &ll, &an);
printf(%d ,an);
switch (ll)
{
case 1: printf (Ianuarie); break;
case 2: printf (Februarie); break;
case 3: printf (Martie); break;
case 4: printf (Aprilie); break;
case 5: printf (Mai); break;
case 6: printf (Iunie); break;
case 7: printf (Iulie); break;
case 8: printf (August); break;
case 9: printf (Septembrie); break;
case 10: printf (Octombrie); break;
case 11: printf (Decembrie); break;
case 12: printf (Noiembrie); break;
default: printf (luna eronata);
}
printf (\t%d\n, zz);
}
4.2.
Instruciuni de iteraie
4.2.1.
Instrucia while
Structura iterativ de baz este while care, practic, repet o structur if att timp ct
expresia de control e adevrat. Aadar, instruciunea while este folosit pentru realizarea unei
structuri ciclice condiionate anterior i are sintaxa:
while (expresie)
instruciuni;
4.2.2.
Problema 4.7.
// citete un ir de numere ntregi i scrie maximul dintre ele
32
MatrixRom 2013
ISBN: 978-973-755-897-8
#include<stdio.h>
void main ()
{
int max,i;
scanf(%d, &max);
while(scanf(%d, &i) = =1) if(i >max) max = i;
printf(max = %d\n, max);
}
Problema 4.8.
// program de afiare a poziiilor din codul ASCI a caracterelor dintr-un sir
#include <string.h>
#include <stdio.h>
void main (void)
{
char *p1;
char s[80];
do
{
p1=s;
gets(s);
while (*p1) printf("%d", *p1++);
}
while(strcmp (s, "gata"));
}
Problema 4.9.
// program ce utilizeaz funciei while in conversia literelor
#include<stdio.h>
#include <ctype.h>
#include <conio.h>
void main(void)
{
char litera; //litera introdus de utilizator
printf("doriti sa continuati? {D/N}: ");
litera = getch(); //citete litera
litera = toupper(litera); //convertete in majuscula;
while ((litera != 'D') && (litera !='N'));
{
putch(7); //emite un sunet
litera = getch(); //citete litera
litera = toupper(litera); //convertete in majuscula;
}
printf("\n rspunsul a fost %c \n", litera);
}
33
MatrixRom 2013
ISBN: 978-973-755-897-8
4.2.3.
Instrucia for
4.2.4.
Problema 4.10.
//program ce calculeaz puterea a doua a numerelor de la 0 la 10 inclusiv
#include <stdio.h>
void main(void)
{
for(int k = 0;k<=10; k++) printf("%d\n", k*k);
}
Problema 4.11.
//program de numrare de la 0 la 10
#include<stdio.h>
void afiseaza(int nume[10]);
void main(void)
{
int t[10],i;
for(i=0;i<10;++i)
t[i]=i;
afiseaza(t);
}
void afiseaza(int num[10])
{
int i;
for(i=0;i<=10;i++) printf("%4d",num[i]);
}
Problema 4.12.
//program de calcul a lui n! unde n este introdus de la tastatura
#include <stdio.h>
void main(void)
{
34
MatrixRom 2013
ISBN: 978-973-755-897-8
int p=1,k,n;
printf("introdu n \n");
scanf("%d", &n);
for(k=1; k <= n; ++k)
p = p*k;
printf("%d", p);
}
Problema 4.13.
//program de calcul a unei sume cu numere zecimale
#include <stdio.h>
void main(void)
{
float s=0;
int k,n;
printf("introdu un n");
scanf("%d", &n);
for(k=1; k <= n; k++)
s=s+1/k;
printf("%d", s);
}
Problema4.14.
//program de realizare a unor bucle de numeraie
#include <stdio.h>
void main (void)
{
int contor;
for (contor = 1; contor <= 5; contor++)
printf("%d ", contor);
printf("\nIncepe a doua bucla\n");
for (contor = 1; contor <= 10; contor++)
printf("%d ", contor);
printf("\nIncepe a treia bucla\n");
for (contor = 100; contor <= 5; contor++)
printf("%d ", contor);
}
Problema 4.15.
//program nr.1 de calcul pentru ridicarea la ptrat a primelor 10 numere naturale
#include <stdio.h>
void main(void)
{
for(int k = 1;k++; k< 10)
printf(%d\n, k*k)
}
35
MatrixRom 2013
ISBN: 978-973-755-897-8
Problema 4.16.
//program de calcul a puterii a doua si a treia pentru primelor 20 numere naturale
#include <stdio.h>
void main(void)
{
int i;
for(i=1;i<20;i++)
printf("%8d %8d%8d\n",i,i*i,i*i*i);
}
Problema 4.17.
//program nr.2 de calcul pentru ridicarea la ptrat a primelor 10 numere naturale
#include <stdio.h>
void main(void)
{
for(int k = 1;k<10; k++)
printf("%d\n", k*k);
}
Problema 4.18.
//program de calcul a unei sume cu numere zecimale
#include<stdio.h>
int n,i,s=0;
void main()
{
printf("dai n ");
double x;
x=1/n;
for(i=1;i<=10;i++)
{
s=s+n+x;
printf("afieaz rezultatul %d" , s);
}
}
Problema 4.19.
//program de aranjare a elementelor dintr-o stiva
#include<stdio.h>
#include<conio.h>
int n,i,s;
void main(void)
{
double x;
printf("dai n>0 ");
scanf("%d", &n);
36
MatrixRom 2013
ISBN: 978-973-755-897-8
for(i=1;i<=10;i++)
{
s=0;
x=1/i;
s=i+x;
}
printf("afiseaza rezultatul %f" , s);
}
4.3.
Probleme
4.3.4.
4.3.5.
4.3.6.
4.3.7.
6 2 9 + 12 < 0
4
= 0
=
2 8 + 4 1 > 0
Scriei un program cu instrucia switch.
Precizai care sunt diferenele dintre instruciunea while i for
Scriei un program cu instrucia while.
Scriei un program cu instrucia for.
37
MatrixRom 2013
ISBN: 978-973-755-897-8