Sunteți pe pagina 1din 11

Probleme elementare privind

limbajul C

Grigore Albeanu
http://www.ad-astra.ro/galbeanu/

galbeanu
Se consider programul:
1 #include <stdio.h>
int main(void){
int n, a;
printf("a = "); scanf("%d", &a);
printf("n = "); scanf("%d", &n);
printf("a = (a>>n)<<n are rezultatul : %d",
a = (a>>n)<<n );
return 1;
5 min }
Ce se afieaz pentru:
i) a = 7, n = 2;
ii) a = 8, n = 2;
iii) a = 8, n = 4; galbeanu
Se consider programul:
#include <stdio.h>
int a, b; float x;
2 int f(int c){
int a; /* linia T */
a = 7; b = 3; return a+b+c;
}
int main(void){
a = 1; b= 2; x = f(a)/10;
printf("%3d %3d", a, b);
5 min }
return printf(" %5.1f", x);

Ce va afia, dac: galbeanu


a) lipsete linia T
b) nu lipsete linia T
Se consider programul:
3 #include <stdio.h>
int suma(int max){ int i; static int s = 0;
for (i=s; i<max; i++) s+=i;
return s;
}
int main(void){ int j, n= 5;
for (j=0; j<n; j++) printf("%3d",suma(j));
5 min return 1;
}

Ce afieaz ?
galbeanu
4 Se consider programul:
#include <stdio.h>
int main(void){
int t[4]={0, 1, 2, 3}; int *p = &t[1];
printf("%d\n", *p++);
printf("%d\n", *++p);
printf("%d\n", ++*p);
return 1;
5 min }

Ce afieaz ?

galbeanu
Se consider programul:
#include <stdio.h>
5 int a[5] = {0, 1, 2, 3, 4};
int i = 4; int j =2;
int main(void){
printf("\n%d", a[i]);
printf("\n%d", i[a]);
return 1;
} galbeanu
3 min
Ce afieaz?
a) 4, 4
b) 4, 0
c) Construcia i[a] nu este corect.
6 Declaraia
char *x[];
l definete pe x ca:

a) pointer ctre tablouri de tip char;


b) tablou de pointeri ctre elemente de tip
1 min char
c) a i b

galbeanu
Ce afieaz secvena de program ?
7 #include <stdio.h>
int main(void){
putchar (getchar()-'A'+'a');
putchar('\n'); return 1;
}
2 min
dac se introduce:
i) A
ii) G galbeanu
iii) X
Se consider programul:

8 #include <stdio.h>
char i = 0x63;
signed char j = 9, k;
int main(void){
printf(" i = %d \n", i = i & 0x5f);
printf(" j = %d \n", ~j);
printf(" k = %d \n", k = j | 0x30);
return 1;
6 min }
Ce valori vor avea variabilele i , j i
k dup executarea acestuia?
Interpretai rezultatul.
galbeanu
Fie programul:
galbeanu
#include <stdio.h>
9 unsigned f(unsigned n){
unsigned i, p;
for (p = 1, i = 1; i<=n; i++) p *= i;
return p;
}
int main(void){
for (int n = 0; n<=20; n++) printf("%d \n", f(n));
4 min return 1;
}
Exista numere naturale n pentru care
programul nu afieaz rezultatul
corect ? Argumentai !
Fie programul: galbeanu

10 char *dup2(const char *str){


static char p[1000];
int n, k; for(n=0; str[n]!='\0';n++);
for(k=0; k<n; k++){ p[2*k]=str[k]; p[2*k+1] = str[k]; }
p[2*n]='\0';
return p;
}
int main(int argc, char *argv[]){
char *p1, *p2;
if(argc != 3){printf("Utilizai: %s sir1 sir2\n", argv[0]);
return 0;
9 min }
p1=dup2(argv[1]);puts(p1); p2=dup2(argv[2]);puts(p2);
puts(p1); puts(p2);
return 1;
}

Studiai comportamentul programului i simulai executarea


acestuia. Precizai intrrile i ieirile programului.

S-ar putea să vă placă și