Řešení | |
|
Řešení | |
|
Chybí ukončovací znak komentáře */. |
Řešení | |
|
Ukazatel je proměnná, která obsahuje adresu jiné proměnné. |
Řešení | |
|
Ukazatelové operátory jsou * a &. Operátor * vrací hodnotu objektu, na který ukazuje ukazatel, který před ním stojí. Operátor & vrací adresu proměnné, před kterou stojí. |
Řešení | |
| Ano |
Řešení | |
| Ne, první je pravdivý, druhý je nepravdivý. |
Řešení | |
x = (int) 123.123 % 3 ; |
Řešení | |
pocet = a>b ? 5 : 10: |
Řešení | |
|
Řešení | |
| Ne, chybí otevírací složená závorka. |
Řešení | |
| Pro řízení příkazu switch nelze použít hodnoty s pohyblivou řádovou čárkou. |
Řešení | |
| Program je teoreticky v pořádku. Funkce f1() však vrací celočíselnou hodnotu, ale ta se přiřazuje proměnné typu double. |
Řešení | |
| Funkce je deklarována s návratovým typem void a nemůže tudíž vracet žádnou hodnotu. |
Řešení | |
| Ne, funkce myfunc() se volá s ukazatelem na první argument místo se samotným argumentem. |
Řešení | |
| Při volání hodnotou se funkci předává hodnota argumentu. Při volání odkazem se funkci předává adresa argumentu. |
Řešení | |
| Funkce volá sama sebe, dokud program nezhavaruje, protože zde není žádná podmínka, která zabraňuje neustálému opakování rekurze. |
Řešení | |
| Ne. Program je chybný, protože p musí být pointer. |
Řešení | |
printf("Sleva: 40%% puvodni ceny");
|
Řešení | |
printf("%.2f", 1023.231);
|
Řešení | |
| Ne. Znak může mít maximální výstupní délku 1. |
Řešení | |
| __FILE__ je předdefinované makro, které obsahuje jméno právě překládaného souboru. |
Řešení | |
#ifdef DEBUG
if(!(j%2))
{
printf("j = %d\n",j);
j = 0;
}
#endif
|
Řešení | |
Ne. U #ifdef nelze použít výraz jako je !NUMBER. Musíme tuto část opravit, například takto:
#ifndef NUMBER . . . #endif |
Řešení | |
| Když zadáme jméno souboru v úhlových závorkách, překladač hledá soubor způsobem, který je závislý na implementaci - ve standardním adresáři pro include. Když uzavřeme jméno souboru do dvojitých uvozovek, překladač se nejprve snaží nalézt soubor jiným způsobem, který je opět závislý na implementaci - v aktivním, pracovním adresáři. Pokud se mu to nepodaří, začne jej hledat, jako bychom jméno souboru zadali v úhlových závorkách. |
Řešení | |
/******************************
* num_0-9.c
* 16.4.2002
******************************/
#include <stdio.h>
int main(void)
{
int i, *p;
p = &i;
for(i=0; i<10; i++)
printf("%d ",*p);
return 0;
}
|
Řešení | |
double *p; |
Řešení | |
/******************************
* poi2var.c
* 16.4.2002
******************************/
#include <stdio.h>
int main(void)
{
int i, *p;
p = &i;
*p = 10;
printf("%d",i);
return 0;
}
|
Řešení | |
| Program překračuje meze pole count. To má pouze 10 prvků, ale program s ním pracuje, jako by mělo prvků 100. |
Řešení | |
| Ukazatel nelze násobit. |
Řešení | |
| Ne, můžete přičítat a odečítat pouze celočíselné hodnoty. |
Řešení | |
| Řetězec str není dost dlouhý, aby se do něj vešel řetězec "tento text". |
Řešení | |
Příkaz typedef má nesprávné pořadí argumentů. Správný formát typedef je:
typedef staré-jméno nové-jméno; |
Řešení | |
enum {pondeli, utery, streda, ctvrtek, patek, sobota, nedele} dny_tydne;
|
Řešení | |
| Ne, protože výčtovou konstantu nelze vypisovat jako řetězec. |
Řešení | |
Proměnná i je prvkem struktury s. Proto ji nelze použít samotnou. Musí být zpřístupněna pomocí s a tečkového operátoru takto:
s.i = 10; |
Řešení | |
| Struktura je pojmenovaná skupina proměnných, které spolu nějak souvisejí. Unie definuje paměťovou oblast, která je sdílena dvěmi nebo více proměnnými různých typů. |
Řešení | |
| Jelikož je p ukazatel na strukturu, musíte pro odkaz na prvek použít šipkový a ne tečkový operátor. |
Řešení | |
Příkaz
*p = malloc(10);By měl správně být p = malloc(10);Chybí také kontrola, zda je hodnota vrácená funkcí malloc() platný ukazatel. |