, - , 2. , FAHR = LOWER; WHILE (FAHR <= UPPER) , , - . , PRINTF. PRINTF , 7. - , , % , - /, , .../ - . , PRINTF("%4.0F %6.1F\N", FAHR, CELSIUS); %4.0F , - - . %6.1F , , F6.1 F(6,1) PL/1. : %6F , ; %2 , ; %F , . PRINTF : %D - - , % - , % - - , % - , %S - %% - %. % - PRINTF , , .. ; - ; . , PRINTF "C"; "C" -. PRINTF ; - , , "C"-. , - - 7. - , . - SCANF 7, 7.4. SCANF PRINTF , , .  1-3 ---------------- - , .  1-4 ---------------- - . 1.3. FOR , . - : MAIN() /* FAHRENHEIT-CELSIUS TABLE */ { INT FAHR; FOR (FAHR = 0; FAHR <= 300; FAHR = FAHR + 20) PRINTF("%4D %6.1F\N", FAHR, (5.0/9.0)*(FAHR-32.0)); } , -. - - ; FAHR , INT ( , %D PRINTF). - FOR , , , , PRINTF , . - "C" - , , . PRINTF , %6.1F, . FOR - , - WHILE. , WHILE . FOR , . FAHR = 0 . - , , : FAHR <= 300 , , ( PRINTF ). FAHR =FAHR + 20 . , - . , WHILE , , . - - . WHILE FOR - , . FOR - , , , - WHILE , - .  1-5 --------------- - , , .. 300 0. 1.4.  , . " ", 300 20, - - ; , , , - , - . "C" - , " - ". #DEFINE , , . - - . , #DEFINE LOWER 0/* LOWER LIMIT OF TABLE */ #DEFINE UPPER 300 /* UPPER LIMIT */ #DEFINE STEP 20 /* STEP SIZE */ MAIN () /* FAHRENHEIT-CELSIUS TABLE */ { INT FAHR; FOR (FAHR =LOWER; FAHR <= UPPER; FAHR =FAHR + STEP) PRINTF("%4D %6.1F\N", FAHR, (5.0/9.0)*(FAHR-32)); } LOWER, UPPER STEP - . , - . - , . , , FOR . 1.5.  , . , , . 1.5.1.  - . GETCHAR() - , - , . , C = GETCHAR() 'C' . , 7. PUTCHAR(C) GETCHAR : PUTCHAR (C) 'C' - , . PUTCHAR PRINTF ; , . PRINTF , GETCHAR PUTCHAR - . - "C", . 1.5.2.  GETCHAR PUTCHAR , - -, - . - . - : WHILE ( ) , "C", - : MAIN() /* COPY INPUT TO OUTPUT; 1ST VERSION */ { INT C; C = GETCHAR(); WHILE (C != EOF) { PUTCHAR (C); C = GETCHAR(); } } != " ". , - . , GETCHAR - , , ; , , . - , , , - . , EOF , . - EOF -1, 0, #DEFINE EOF -1 #DEFINE EOF 0 EOF - , GETCHAR , , - . 'C' INT , CHAR , , GETCHAR . 2, INT, - EOF. , "C", . "C" , C = GETCHAR() ; - , . - 'C' - WHILE , : MAIN() /* COPY INPUT TO OUTPUT; 2ND VERSION */ { INT C; WHILE ((C = GETCHAR()) != EOF) PUTCHAR(C); } , 'C' , . - WHILE, . WHILE . , , , WHILE , - MAIN . - GETCHAR - . - "C", - . , . . , . != , =, - , != - =. , C = GETCHAR() != EOF C = (GETCHAR() != EOF) , , , 'C' 0 1 , - GETCHAR . 2/. 1.5.3.  ; . MAIN() /* COUNT CHARACTERS IN INPUT */ { LONG NC; NC = 0; WHILE (GETCHAR() != EOF ) ++NC; PRINTF("%1D\N", NC); } ++NC; , ++, - . NC = NC + 1 , ++NC . - -- . ++ -- (++NC), (NC++); , 2, , ++NC, NC++ - NC. - . LONG, INT . PDP-11 - 32767, INT , ; "C" HONEYWELL IBM LONG INT . %1D PRINTF , LONG . , - DOUBLE / FLOAT /. - FOR WHILE , - . MAIN() /* COUNT CHARACTERS IN INPUT */ { DOUBLE NC; FOR (NC = 0; GETCHAR() != EOF; ++NC) ; PRINTF("%.0F\N", NC); } PRINTF %F FLOAT , DOUBLE ; %.0F - . FOR , - . "C" , FOR . , - , , . , . - , , - , WHILE FOR - GETCHAR , , , - , .. . . - WHILE FOR , , .. . , - , , . , " ". WHILE FOR - . 1.5.4.  . , \N, . MAIN() /* COUNT LINES IN INPUT */ { INT C,NL; NL = 0; WHILE ((C = GETCHAR()) != EOF) IF (C =='\N') ++NL; PRINTF("%D\N", NL); } WHILE IF , ++NL. IF , , / , /. - , , . == "C" "" / .EQ. /. , =, . "C" - - , , - , . - , , - - ; . , , 'A' - ; ASCII / / 65, . , 'A' , 65: . , , - . '\N' . , '\N' - , ; "\N" - , . - 2.  1-6 ---------------- , .  1-7 ---------------- , , - . 1.5.5.  , , , - , , - . / - 'WC' 'UNIX'/ #DEFINE YES 1 #DEFINE NO 0 MAIN() /* COUNT LINES, WORDS, CHARS IN INPUT */ { INT C, NL, NW, INWORD; INWORD = NO; NL = NW = NC = 0; WHILE((C = GETCHAR()) != EOF) { ++NC; IF (C == '\N') ++NL; IF (C==' ' \!\! C=='\N' \!\! C=='\T') INWORD = NO; ELSE IF (INWORD == NO) { INWORD = YES; ++NW; } } PRINTF("%D %D %D\N", NL, NW, NC); } , , . - INWORD , - ; " ", NO. YES NO 1 0, - . , , , , - - , . , - , - . NL = NW = NC = 0; . , , - - . - , , NC = (NL = (NW = 0)); \!\! OR , IF( C==' ' \!\! C=='\N' \!\! C=='\T') " - , - , - ..."./ \T /. && AND. , && \!\! , , , , , . , 'C' , , 'C' , . , , , . ELSE "C", , , , IF, . : IF () -1 ELSE -2 , - IF-ELSE. , - -1; - -2. . , ELSE , - IF , .  1-9 ---------------- ? K ?  1-10 ----------------- , - , .  1-11 ---------------- , ""; , - , , . 1.6.  - , /, , / . , - , - "C". , , . : MAIN() /* COUNT DIGITS, WHITE SPACE, OTHERS */ { INT C, I, NWHITE, NOTHER; INT NDIGIT[10]; NWHITE = NOTHER = 0; FOR (I = 0; I < 10; ++I) NDIGIT[I] = 0; WHILE ((C = GETCHAR()) != EOF) IF (C >= '0' && C <= '9') ++NDIGIT[C-'0']; ELSE IF(C== ' ' \!\! C== '\N' \!\! C== '\T') ++NWHITE; ELSE ++NOTHER; PRINTF("DIGITS ="); FOR (I = 0; I < 10; ++I) PRINTF(" %D", NDIGIT[I]); PRINTF("\NWHITE SPACE = %D, OTHER = %D\N", NWHITE, NOTHER); } INT NDIGIT[10]; , NDIGIT . "C" / 1, PL/1/, - NDIGIT[0], NDIGIT[1],..., NDIGIT[9]. FOR , . , , - , , I , - . . , , IF( C >= '0' && C <= '9')... , 'C' , , / C - '0'/. , - '0', '1' .. , - , , '0' '9'. , . - , CHAR INT, - INT, TAK - CHAR INT. ; , C -'0'- 0 9 , '0' '9' 'C', , - , NDIGIT. , , - , IF (C >= '0' && C <= '9') ++NDIGIT[C-'0']; ELSE IF(C == ' ' \!\! C == '\N' \!\! C == '\T') ++NWHITE; ELSE ++NOTHER; IF () ELSE IF () ELSE - , . , - ; '', . /, '' - , /. , '', ELSE, . E ELSE '' ( ), . IF ELSE ELSE IF () - , , . SWITCH (), 3, - . , - , , - . , SWITCH, 3.  1-12 ---------------- , . - - ; . 1.7.  "C" - PL/1, .. - - , , . . , , ; , . "C" , , . - , - , , . PRINTF, GETCHAR PUTCHAR; . "C" - , ** PL/1, - POWER(M,N), - N. POWER(2,5) 32. - , **, - - , - , . POWER , . MAIN() /* TEST POWER FUNCTION */ { INT I; FOR(I = 0; I < 10; ++I) PRINTF("%D %D %D\N",I,POWER(2,I),POWER(-3,I)); } POWER(X,N) /* RAISE X N-TH POWER; N > 0 */ INT X,N; { INT I, P; P = 1; FOR (I =1; I <= N; ++I) P = P * X; RETURN (P); } : ( , ) , { } - . , - , , , , . , - "C"- , , , . POWER PRINTF("%D %D %D\N",I,POWER(2,I),POWER(-3,I)); POWER, , , . POWER(2,I) - , 2 I. / ; 4/. POWER - , . INT X,N; . ; - . , - POWER, - : - . I P; I POWER I MAIN. , POWER, MAIN RETURN, , PL/1. . - - ; RETURN, , , " " , - .  1-13 ---------------- , OWER(C), - 'C', C'- , , 'C'-. 1.8. -  "C" - , , , PL/1. "C" " ". , / /, . - , , - PL/1, " ", - , . , "C" - ; . , , , . , , - . , , POWER - POWER(X,N) /* RAISE X N-TH POWER; N > 0; VERSION 2 */ INT X,N; { INT P; FOR (P = 1; N > 0; --N) P = P * X; RETURN (P); } N ; - , . I . N POWER , - POWER. , . /- , /, - . - 5. , , , . / /. . - - . 1.9.  - "C" . - , , - . : WHILE ( ) IF ( ) , . , , , . , . GETLINE, ; - GETCHAR. , . GETLINE - ; - , . , - ; , , 1. , , - . , COPY , - . , GETLINE COPY . : #DEFINE MAXLINE 1000 /* MAXIMUM INPUT LINE SIZE */ MAIN() /* FIND LONGEST LINE */ { INT LEN; /* CURRENT LINE LENGTH */ INT MAX; /* MAXIMUM LENGTH SEEN SO FAR */ CHAR LINE[MAXLINE]; /* CURRENT INPUT LINE */ CHAR SAVE[MAXLINE]; /* LONGEST LINE, SAVED */ MAX = 0; WHILE ((LEN = GETLINE(LINE, MAXLINE)) > 0) IF (LEN > MAX) { MAX = LEN; COPY(LINE, SAVE); } IF (MAX > 0) /* THERE WAS A LINE */ PRINTF("%S", SAVE); } GETLINE(S,LIM) /* GET LINE INTO S,RETURN LENGTH */ CHAR S[]; INT LIM; { INT C, I; FOR(I=0;I<LIM-1 && (C=GETCHAR())!=EOF && C!='\N';++I) S[I] = C; IF (C == '\N') { S[I] = C; ++I; } S[I] = '\0'; RETURN(I); } COPY(S1, S2) /* COPY S1 TO S2; ASSUME S2 BIG ENOUGH */ CHAR S1[], S2[]; { INT I; I = 0; WHILE ((S2[I] = S1[I] != '\0') ++I; } MAIN GETLINE - , . GETLINE CHAR S[]; INT LIM; , , - . S , MAIN . GETLINE RETURN - , POWER. ; , COPY, - . , GETLINE \0 / , /. - "C": "C" - "HELLO\N" , , \0, - , PRINTF, : ------------------------------------------- ! H ! E ! L ! L ! O ! \N ! \0 ! ------------------------------------------- %S , PRINTF - , . COPY, , , \0, S2. / , \0 /. , , , , - . , MAIN, , - ? GETLINE : - , - . , MAIN , , , . . GETLINE - , . GETLINE . - COPY / /, - , .  1-14 ----------------- , .  1-15 ----------------- 80 - .  1-16 ----------------- , , , .  1-17 ----------------- REVERSE(S), - S . , . 1.10. :  MAIN(LINE, SAVE ..) - MAIN, MAIN . ; , I GETLINE I COPY. - , - , , - . , , . - . / 4 - , - /. - , , . , . - , , .. , - , . ( "COMMON" "EXTERNAL" PL/1). - , - . , , , , , , - . - ; . - , ; EXTERN, . , - , LINE, SAVE MAX . , . #DE