Pagina informaticii

Teste de informatică pentru liceu, articole C#, C/C++, PHP

Şiruri de caractere

Rândul 1

Se acordă 1 punct din oficiu

1) (1 punct) Ce se va afişa în urma executării secvenţei:
a= „Primavara”;
for (int i=1;i<=3;i++) strcpy(a+1,a+2);
cout<<a;

a. Pavara
b. Ara
c. Rim
d. Para

2) (1 punct) Care din următoarele secvenţe verifică în mod corect dacă şirul de caractere s este format din acelaşi caracter (de forma : s=”AAAAAAA”):

a.
int ok=0;
for (i=1;i<strlen(s);i++)
   if (s[i]==s[0]) ok=1;
if (ok) cout<<”Este”;
    else cout<<”Nu este”;

b.
int ok=0;
for (i=0;i<strlen(s);i++)
   if (s[i]==s[i+1]) ok=1;
if (ok) cout<<”Este”;
    else cout<<”Nu este”;

c.
int ok=1;
for (i=1;i<strlen(s);i++)
   if (s[i]==s[0]) ok=0;
if (ok) cout<<”Este”;
    else cout<<”Nu este”;

d.
int ok=1;
for (i=1;i<strlen(s);i++)
   if (s[i]!=s[0]) ok=0;
if (ok) cout<<”Este”;
    else cout<<”Nu este”;

3) (1 punct) Care din următoarele secvenţe realizează corect eliminarea caracterului ’w’ din şirul s:

a.
char *p,s[100];
cin>>s;
while (p=strchr(s,’w’))
   strcpy(p,p+1);

b.
char *p,s[100];
cin>>s;
while (p=strchr(s,’w’))
   strcpy(p+1,p);

c.
char *p,s[100];
cin>>s;
while (p=strchr(s,’w’))
   strcpy(p,p+1);

d.
char *p,s[100];
cin>>s;
while (p=strchr(s,”w”))
   strcpy(p+1,p);

4) (2 puncte) Scrie secvenţa care citeşte un şir de caractere care conţine exact două cuvinte separate printr-unul mai multe spaţii şi le elimină pe cele inutile, astfel încât între cele două cuvinte să rămână un singur spaţiu. Exemplu: “cuv1         cuv2” → “cuv1  cuv2”.

5) (2 puncte) Scrie secvenţa care citeşte două şiruri de caractere s1 şi s2 şi decide dacă s1 este sufix al lui s2 sau nu. Se exemplu, s1= “CDEF” şi s2 = “ABCDEF”, se va afişa „Este sufix”.

6) (2 puncte) Se consideră un şir s1 care este circular, adică la o „parcurgere” a lui s1, după ultimul caracter din şir urmează primul (de exemplu, pentru şirul s1 = “qwert”, după ‘q’ urmează ‘w’, ..., după ’t’ urmează ’q’). Scrie secvenţa care decide dacă un şir s2 apare ca subşir în acest şir circular. De exemplu, pentru s1= “ABCDEFG” şi  s2 = “FGAB”, răspunsul este “DA”

 

Rândul 2

Se acordă 1 punct din oficiu

1) (1 punct) Fie declaraţiile: char a[30],b[30]; Ce se va afişa în urma execuţiei secvenţei:
x=”dimineata”; y=”min”;
strcat(y,x+strlen(x)-1);
p=strstr(y,x);
if (p!=NULL) cout<<(p-y);
    else cout<<”0”;

a. 0

b. 3

c. ta

d. dieta

2) (1 punct) Ce realizează secvenţa următoare:
char s[100];
cin>>s;
n=strlen(s);
i=0;j=n-1;
while ((i<j)&&(s[i]==s[j])) {i++;j--;}
if (i>=j) cout<<”Este”;
    else cout<<”Nu este”;


a.
Verifică daca şirul s este constant sau nu

b.
Verifică dacă şirul s este identic cu inversul lui s (este palindrom)

c.
Verifică dacă şirul s este format doar din litere

d.
Verifică dacă şirul s este sau nu format doar din caractere distincte

3) (1 punct) Considerăm şirul de caractere s în care ştim că are toate caracterele distincte, exceptând ultimele două care sunt identice. Care din secvenţele următoare afişează în mod corect lungimea lui s:

a.
i=0;
while (a[i]!=a[i+1]) i++;
cout<<i+2;

b.
i=0;
while (a[i]!=a[i+1]) i++;
cout<<i+1;

c.
i=0;
while (a[i]==a[i+1]) i++;
cout<<i+2;

d.
i=0;
while (a[i]!=a[i+1]) i++;
cout<<i;

4) (2 puncte) Scrie secvenţa care citeşte un nume de persoană în forma „Nume  Prenume” şi obţine în acelaşi şir de caractere numele în forma „Prenume  Nume”. De exemplu, din şirul „Popescu  Ioan” trebuie să obţii „Ioan  Popescu”. Numele şi prenumele sunt separate iniţial prin cel mult 3 spaţii, iar şirul final va avea exact un spaţiu între prenume şi nume

5) (2 puncte) Scrie secvenţa care citeşte două şiruri de caractere s1 şi s2 formate numai din litere şi decide dacă şirul s1 apare la sfârşirul lui s2, dar în ordine inversă. De exemplu, pentru s1= “HUX” şi s2 = “ZTXUERXUH”, se va afişa “DA”.

6) (2 puncte) Se consideră un şir s1 care este circular, adică la o „parcurgere” a lui s1, după ultimul caracter din şir urmează primul (de exemplu, pentru şirul s1 = “qwert”, după ‘q’ urmează ‘w’, ..., după ’t’ urmează ’q’). Scrie secvenţa care decide dacă un şir s2 apare ca subşir în acest şir circular. De exemplu, pentru s1= “ABCDEFG” şi  s2 = “FGAB”, răspunsul este “DA”

Despre autor
Author

Dan Pracsiu deţinător www.dponline.ro
Profesor, Liceul Teoretic "Emil Racoviță" Vaslui
Membru în Comisia Naţională a Olimpiadelor de Informatică
Pasiuni: istoria, călătoriile, fotografia, muzica clasică

Scrie un comentariu
Nume:

Comentariu:

15 + 10 =