1 / 18

Příklady v jazyku C – část 3

Příklady v jazyku C – část 3. Upravte pomocí explicitní typové konverze dělení pro i=5 a j=2 podíl f=i / j tak, aby výsledek podílu byl 0,5 : #include <stdio.h> #include <stdlib.h> int main() { int i, j; float f; i = 5, j = 2; /* pouziti operatoru carky */

aoife
Download Presentation

Příklady v jazyku C – část 3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Příklady v jazyku C – část 3

  2. Upravte pomocí explicitní typové konverze dělení pro i=5 a j=2 podíl f=i / j tak, aby výsledek podílu byl 0,5 : #include <stdio.h> #include <stdlib.h> int main() { int i, j; float f; i = 5, j = 2; /* pouziti operatoru carky */ f = (float) i / j; printf("Typova konverze - 1. moznost: %f\n", f); f = i / (float) j; printf("Typova konverze - 2. moznost: %f\n", f); f = (float) i / (float) j; printf("Typova konverze - 3. moznost: %f\n", f); f = (float) (i / j); printf("Explicitni typova konverze - chybny zpusob: %f\n", f); f = i / j; printf("Implicitni typova konverze - chybny zpusob: %f\n", f); system("PAUSE"); }

  3. Formát čísel a typová konverze. Jaké budou výsledky zobrazení a číselné hodnoty ? #include <stdio.h> #include <stdlib.h> int main(void) { float v,y=25; int x; printf("%d\n\n",5/2); v=(float)5/2; x=y/4; printf("%10.2f\n",v); printf("%010.2f\n",v); printf("%+10.2f\n",v); printf("%-10.2f\n",v); printf("%e\n",v); printf("%g\n\n",v); printf("%d\n",5%2); printf("%d\n",x); printf("%d\n",4/2); printf("%d\n",4%2); system("PAUSE"); return 0; }

  4. Napište program , ve kterém budou příkazy a zdůvodněte dosažené výsledky: i=5; printf("%d\n", i == 8); printf("%d\n", i = 8); printf("%d\n", i == 8); #include <stdio.h> #include <stdlib.h> int main() { i=5; printf("%d\n", i == 8); printf("%d\n", i = 8); printf("%d\n", i == 8); system("PAUSE"); return 0; }

  5. Napište program , ve kterém zobrazíte velikost proměnných typů int, short int, long int, long long int, float, double, long double: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { printf("%d\n\n",sizeof(int)); printf("%d\n\n",sizeof(short int)); printf("%d\n\n",sizeof(long int)); printf("%d\n\n",sizeof(long long int)); printf("%d\n\n",sizeof(float)); printf("%d\n\n",sizeof(double)); printf("%d\n\n",sizeof(long double)); system("PAUSE"); return 0; }

  6. Napište program , který přečte (scanf) 2 celá čísla 5 a 8 a pomocí ternálního operátoru ( ? : ) vytiskne: Menší číslo: 5 Větší číslo: 8 #include <stdio.h> #include <stdlib.h> int main() { int i, j; printf("Zadej dve cela cisla: "); scanf("%d %d", &i, &j); printf("Mensi cislo: %d\n", (i < j) ? i : j); printf("Vetsi cislo: %d\n", (i > j) ? i : j); system("PAUSE");}

  7. Napište program , který ověříčinnost příkazu skoku “goto” #include <stdio.h> #include <stdlib.h> int main(void) { goto nav1; printf("Toto se nevytiskne"); nav1: printf("Toto se vytiskne\n\n"); system("PAUSE"); return 0; }

  8. Napište program , který s pomocí příkazu skoku “goto” a podmíněného příkazu if vytiskne čísla od 1 do 10. #include <stdio.h> #include <stdlib.h> int main(void) {int i; i = 1; znovu: printf("%d ", i); i++; if(i<10) goto znovu; system("PAUSE"); return 0; }

  9. Napište program ,který přečte číslo mezi 1 až 4 a vypíše toto číslo slovně. Použijte switch příkaz. Pokud bude číslo mimo zadaný interval, napíše text "Nerozpoznané číslo ". #include <stdio.h> int main(void) { int i; printf("Zadej cislo mezi 1 a 4: "); scanf("%d", &i); switch(i) { case 1: printf("\njedna\n"); break; case 2: printf("\ndva\n"); break; case 3: printf("\ntri\n"); break; case 4: printf("\nctyri\n"); break; default: printf("\nNerozpoznané cislo\n"); getchar(); return 0; }

  10. Napište program ,který spočte počet dní mezi dvěma datumy. #include <stdio.h> int main(void) {int y1,y2,m1,m2,d1,d2,c1,c2,l1,l2,b,s,p,i; int fak1,fak2; int m[12]; m[0] = 31; m[1] = 28; m[2] = 31; m[3] = 30; m[4] = 31; m[5] = 30; m[6] = 31; m[7] = 31; m[8] = 30; m[9] = 31; m[10]= 30; m[11]= 31; printf("\n\nZadej prvni datum DD MM RRRR: "); scanf("%d %d %d",&d1,&m1,&y1); printf("\n\nZadej druhy datum DD MM RRRR: "); scanf("%d %d %d",&d2,&m2,&y2); c1=0; for (i=0;i<=m1-1-1;i++) c1=c1+m[i]; /* spocitani dnu v roce od zac.roku v poc.roce */ if((y1%4==0)&&(m1>2)) c1=c1+1; /* osetreni prestupneho roku v pocatecnim roce */ l1=c1+d1; c2=0; for (i=0;i<=m2-1-1;i++) c2=c2+m[i]; /* spocitani dnu v roce od zacatku roku v koncovem roce */ if((y2%4==0)&&(m2>2)) c2=c2+1; /* osetreni prestupneho roku v koncovem roce */ l2=c2+d2; b=(y2-y1)/4; /* pocet prestupnich roku */ s=(y2-y1)*365+b; /* pocet dnu v letech mezi pocatecnim a koncovym rokem */ p=s+l2-l1; printf("Pocet dni mezi temito datumy = %d \n\n",p); getchar(); return 0; }

  11. Napište program , který přečte 2 znaky z rozsahu 0 až 9 nebo A až F. Tyto 2 znaky považujte za 1 hexadecimální číslo a to pak vypište dekadicky. #include <stdio.h> int main(void) { int c1, c2, i; printf("Zadejte hexadecimalni cislo (00 az FF): "); c1 = getchar(); c2 = getchar(); if (c1 >= '0' && c1 <= '9') i = 16 * (c1 - '0'); else /* predpokladame, ze je cislo zadane velkymi pismeny a ze je v povolenem rozsahu */ i = 16 * (c1 - 'A' + 0xA); if (c2 >= '0' && c2 <= '9') i += c2 - '0'; else i += c2 - 'A' + 0xA; printf("Dekadicka hodnota je: %d\n", i); getchar(); return 0; }

  12. Přečtěte znak, a není-li to písmeno ani číslice, vytiskněte text “interpunkční znak” , jinak vytiskněte text “alfanumerický znak”. K rozhodnutí použijte podmíněný příkaz if-else . #include <stdio.h> int main(void) { int c; printf("Zadej jeden znak: "); c = getchar(); if (c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') printf("Alfanumericky znak\n"); else printf("Interpunkcni znak\n"); getchar(); return 0;}

  13. Ověřte,že podmínky if( výraz != 0 ) a if ( výraz ) a stejně tak if( výraz == 0 ) a if ( !výraz ) mají stejnou funkci #include <stdio.h> #include <stdlib.h> int main() { int vyraz; printf("Splnene podminky:\n"); /* nulova hodnota */ vyraz = 0; if (vyraz != 0) printf("if (%d != 0)\n", vyraz); if (vyraz) printf("if (%d)\n", vyraz); if (vyraz == 0) printf("if (%d == 0)\n", vyraz); if (!vyraz) printf("if (!%d)\n", vyraz); putchar('\n'); system("PAUSE"); return 0; }

  14. Přečtěte znaky až do “\n“ a spočítejte počet velkých a malých písmen. Ostatní znaky neberte v úvahu. Použijte cyklus while. #include <stdio.h> int main(void) { int c, /* znaky se ctou do int !!! */ mala = 0, /* citac pro mala pismena */ velka = 0; /* citac pro velka pismena */ printf("Zadavej znaky a zadavani ukonci <Enter>\n"); while ((c = getchar()) != '\n') { if (c >= 'A' && c <= 'Z') velka++; if (c >= 'a' && c <= 'z') mala++; } printf("\nBylo precteno:\n %d malych pismen\n %d velkych pismen\n", mala, velka); getchar(); return 0; }

  15. Napište program,který přečte n čísel z klávesnice (n se zadá také z klávesnice).Pro každý vstup vypište: Zadej 1. číslo. Z načtených čísel určete, kolik jich leží v intervalu <25;38>. Použijte cyklus for. #include <stdio.h> int main(void) { int n, /* pocet cisel celkem */ v_interv = 0, /* pocet cisel v intervalu */ i, j; printf("Zadej pocet cisel: "); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("Zadej %d. cislo: ", i); scanf("%d", &j); if (j >= 25 && j <= 38) v_interv++; } printf("\nBylo precteno %d cisel v intervalu <25, 38>\n", v_interv); getchar(); return 0; }

  16. Napište program,který vypočte faktoriál. Použijte typ long int #include <stdio.h> int main(void) {long int n, /* stupen faktorialu */ fakt = 1, /* hodnota faktorialu */ i; printf("Zadej stupen faktorialu: "); scanf("%ld", &n); for (i = 2; i <= n; i++) { fakt *= i; } printf("\nFaktorial cisla %ld je %ld\n", n, fakt); getchar(); return 0; }

  17. Napište program,který vypisuje přirozená čísla – tj. čísla {1,2,3,...}, které nabývá proměnná i<20 (pomocí příkazu for). Vykoušejte příkazy continue (i>=10) a break (i>=15) . #include <stdio.h> int main(void) { int i; printf("\nTest prikazu break a continue\n"); for (i = 1; i < 20; i++) { printf("\n%d ", i); if (i >= 15) { printf("break\n"); break; } if (i >= 10) { printf("continue "); continue; } printf("posledni prikaz cyklu for"); getchar(); return 0; }

  18. Napište program,kterýpřečte 2 kladná reálná čísla f a g a vypíše všechna sudá čísla v intervalu <f,g>. #include <stdio.h> int main(void) {double f, g; int i, d, /* dolni mez */ h; /* horni mez */ printf("Zadej dve realna kladna cisla: "); scanf("%lf %lf", &f, &g); /* nalezeni horni a dolni meze */ d = (f < g) ? f : g; h = (f >= g) ? f : g; /* zaokrouhleni na nejblizsi vyssi cele sude cislo */ d += (d % 2) ? 1 : 0; for (i = d; i <= h; i += 2) printf("%4d ", i); printf("\n"); getchar(); return 0; }

More Related