test (2).pdf

(59 KB) Pobierz
_______________________________________________________
Imię i Nazwisko
Nr albumu
____________
2006
XI-30
INF1
ZałoŜenia wstępne { składnia: C, C++; środowisko docelowe: 32-bitowe }
(2)Jaka będzie wartość sizeof(t), gdy char t[] = {‘N’,‘a’,‘p’,‘i’,‘s’}; ? Odp.: _______________
(6)Napisz, jakie są dziesiętne wartości tych zmiennych (wszystkie zmienne są ypu int).
a = 012;
a ==
p = 2/3;
p ==
b = 1, 2, 3;
b ==
q = 1|2;
q ==
static int c = 123;
c ==
r = 0x22;
r ==
(2)char t[] = {"abcdef”}; char *x = t; x++;
Jaką wartość ma x[2] ? Odp.: ________
(2)Niech
char s[5];
Czy moŜna wykonać a) s++; [ Tak / Nie ] b) s+1 [ Tak / Nie ]
(2)Jakich potencjalnych problemów moŜna się spodziewać w poniŜszym przypadku:
char s[5]; sprintf(s, "Ala ma kota");
Odp.: _________________________________________________________________________
(3)Popraw powyŜszy fragment kodu tak, aby rozwiązać ten problem.
Odp.: _________________________________________________________________________
(4)Dana jest struktura x. Jakie wartości moŜe mieć sizeof(x)? _______ Od czego to zaleŜy?
struct x {
Odp.:
char s; short c; int i;
};
(4)Plik naglowek.h jest dołączany w 2 modułach pewnego projektu. Które wiersze nie mogą
znaleźć się w pliku naglowek.h?
1. unsigned short int x;
3. void f() {}
2. extern int p;
4. #define n 1000
(3)Podaj przykład przeciąŜenia funkcji o nagłówku
double f(char x);
(3)Popraw poniŜszy kod w taki sposób, aby poprawnie wyświetlona została wartość zmiennej x:
char *x = "12345"; printf("%g", x);
Po poprawce: _______________________________________________________________
(3)Jakie wartości zostaną wyświetlone? double d = 1.0; for(; d<3.0;d+=1.0) printf("%g", d);
Odp.: __________________________________________
(2)Pewien student umieścił w swoim programie poniŜszy fragment kodu. Jakie mogą być
potencjalne (negatywne) skutki wykonania tego programu?
char *t;
scanf("%s", t);
(3)Popraw powyŜszy framgent kodu tak, aby rozwiązać ten problem.
Odp.:_________________________________________________________________________
(3)void f(int x) { x++; }
int y = 5; f(y); Ile wynosi y? Odp.:________
(2)Liczbę 030 zapisz w systemie dwójkowym. Odp.: ______________________
(3)Podaj przykład jawnego rzutowania typów w języku C.
(3) int a=3, b = 2; int x = a ? a++ : b++; Odp.: x wynosi ________________
(3)Projekt zawiera pliki x.cpp oraz y.cpp. Chcemy umieścić w obu tych plikach zmienne
int a;
w
taki sposób, aby program prawidłowo się kompilował, oraz aby mogły być one uŜywane
niezaleŜnie (tzn. modyfikacja zmiennej
a
w pliku x.cpp nie moŜe wpłynąć na wartość zmiennej
a
widzianej się w pliku y.cpp)
x.cpp
y.cpp
(3)Niech float x = 1e20, y = 1e-20; Jakie wyniki wyświetlone zostaną po wykonaniu:
a. printf("%f", ((y+x)-x) / y);
b. printf("%f", (y+(x-x)) / y);
(2)Przekształć
nieokreślony wskaźnik void * v; tak, aby stał się wskaźnikiem na konkretny typ:
char *d = _________________________
(3)Korzystając z instrukcji
?:,
zapisz wyraŜenie o wartości bedącej mniejszą z liczb x i y.
(4)Podaj przykład rekurencji (zapisz kod funkcji w języku C).
(3)Dane są zmienne int a oraz int b. Zapisz fragment kodu, który zamieni ich wartości (tzn. w
a
znajdzie się wartość z
b,
a w
b
znajdzie się wartość z
a).
(2)Utwórz dynamicznie tablicę liczb typu int, zawierającą 100 elementów.
(2) W której architekturze komputera: a) Oxfordzkiej b) Harvardzkiej pamięć kodu jest
oddzielona od pamięci danych? Odp.:____
(2)Język C jest językiem a) interpretowanym b) kompilowanym. Odp:_______
(2)void main() {
Uzupełnij kod tak, aby to zdanie stało się komentarzem.
}
(2)Podaj przykład poprawnego identyfikatora języka C. Odp.:___________________
Niech double eps = 1.0. W którym przypadku zmienna eps osiągnie mniejszą wartość?
a) do eps = 0.5*eps; while (eps + 1 > 1);
b) do eps = 0.5*eps; while (eps > 0);
(3)Zapisz nagłówek funkcji, która moŜe być podstawiona pod wskaźnik funkcyjny
f:
double* (*f)(char);
Odp.:___________________________________________________________________
(3)Ile plusów (+) pojawi się na ekranie po wykonaniu tego fragmentu kodu?
#define N(x) (sizeof(x)/sizeof(x[0]))
char t[5] = "abc"; for(i=0; i<N(t); i++) printf("+");
Zgłoś jeśli naruszono regulamin