You are on page 1of 227

c

1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10

1.11

1.12

1.13

Turbo C 2.0

1.13.1 Turbo C 2.0


1.13.2 Turbo C 2.0
1.13.3 File
1.13.4 Edit
1.13.5 Run
1.13.6

Compile
1

1.13.7 Project
1.13.8 Options
1.13.9 Debug
1.13.10

Break/watch

1.13.11 Turbo C 2.0

2.1

21

2.2
2.3

21
24

2.4

24

2.4.1

2.4.2

2.4.3

28

2.4.4

N-S 29

2.4.5

2.4.6

31

2.5

24
24

30

31

3.1
3.2

32

33
2

3.2.1

33

3.2.2

33

3.3 34
3.3.1

3.3.2

35

34

3.4 37
3.4.1

3.4.2

38

3.4.3

39

3.5

37

39

3.5.1

39

3.5.2

39

3.5.3

40

3.5.4

3.5.5

3.5.6

42

3.6

41

41

42

3.7
3.8

44

3.8.1

C 44

3.8.2

3.9

43

45

47
3

3.10

3.11

48

49

3.11.1

49

3.11.2 49
3.11.3 49
3.11.4 49
3.11.5

49

3.11.6 50

50

4.1

51

4.2 53
4.3 C
4.4

54

54

4.4.1

putchar 54

4.4.2

getchar 55

4.5 55
4.5.1

printf

4.5.2

scanf () 58

56

60

5.1

61

5.1.1

5.1.2

61

61

5.2

62

5.2.1

5.2.2

5.2.3

62

63
63

5.3 if 64
5.3.1

if

5.3.2

if 67

5.3.3

5.4 switch

64

69

70

5.5 71

6.1

71

6.2 goto goto

71

6.3 while 72
6.4 do-while 74
6.5 for

76

6.6

79
5

6.7 79
6.8 break continue
6.8.1

break 79

6.8.2

continue 80

79

6.9 81

7.1 82
7.1.1

82

7.1.2

83

7.1.3

84

7.1.4

84

7.2 86
7.2.1

86

7.2.2

7.2.3

87

7.2.4

89

86

7.3 89
7.3.1

89

7.3.2

7.3.3

90

7.3.4

89

91
6

7.3.5

7.3.6

92

91

7.4 94
97

8.1

98

8.2

99

8.3 100
8.3.1

8.3.2

8.4

101

102

106

8.4.1

8.4.2

106

8.4.3

107

106

8.5 108
8.6 109
8.7

110

8.8
8.8.1

113

8.8.2

119

112

8.9 120
7

8.9.1

8.9.2

auto 120

8.9.3

static 121

8.9.4

register 122

120

extern 123

9.1

124

9.2

125

9.2.1

126

9.2.2

127

9.3 128
9.4 130
9.5

10

10.1

10.2

10.2.1

131
132

133

10.2.2 133
10.2.3 137
10.2.4

140
8

10.3

10.3.1

141

142

10.3.2 143
10.3.3

146

10.3.4
10.4

148

150

10.4.1

152

10.4.2
10.5

10.6

10.7

158

159
160
161

10.7.1 161
10.7.2 164
10.7.3 main 166
10.8

10.8.1

167

167

10.8.2 167
10.8.3 void

11

168

11.1

11.2

170

172
9

11.3

11.4

174

11.5

11.6

175

11.7

174

175

177

11.7.1

177

11.7.2

179

11.7.3
11.8

11.9

180

181
182

11.10 184
11.10.1
11.10.2

184

185

11.11 typedef

12
12.1

12.1.1

191

12.1.2

192

12.1.3

189

192

12.1.4 193
12.1.5 193
10

12.1.6 193
12.2

12.3

13

194

13.1

13.2

198

13.3

197

199

13.3.1 (fopen ) 200


13.3.2 fclose 202
13.4

204

13.4.1 fgetc fputc 204


13.4.2 fgets fputs 208
13.4.3 fread fwtrite 209
13.4.4 fscanf fprintf
13.5

201

202

13.5.1 202
13.5.2 203
13.6

204

13.6.1 feof

204

13.6.2 205
11

13.6.3 0
13.7

208

13.8

206

12

2001 5 1

C
1 C
1.1
70 (AT&T)
B.W.Kernighan D.M.Ritchit THE C
PROGRAMMING LANGUAGEK&RK&R
K&R C American
National Standards Institute C
ANSI C

1.2
C UNIX
C

1.3

Microsoft C MS C
Borland Turbo C Turbo C
AT&T C
ANSI C

1.4
1C ANSI C 32 :
auto

break

case

char

const

continue

default

do

double

else

enum

extern

float

for

goto

if

int

long

register

return

short

signed

static

sizof

struct

switch

typedef

union

unsigned

void

volatile

while

9
Turbo C 11
asm
_cs
_ds
_es
_ss
cdecl
far

2001 5 1

huge interrupt near


pascal
C
2 34 C C

3
4
5
6C bit

7
8 C
C C

1.5
C Bjarne Strou-strup C++ C++
C++
Borland C++, Symantec C++ Microsoft VisualC++
C++

1.6
C C++C++
C++

1.7

C
1.1
main()
{
printf("\n");
}
z main
z C (main )
z printf

2001 5 1

z printf
1.2
#include<math.h>
#include<stdio.h>
main()
{
double x,s;
printf("input number:\n");
scanf("%lf",&x);
s=sin(x);
printf("sine of %lf is %lf\n",x,s);
}
z include
z .h
z
z
z x
z x , s
z
z main
x x main()
() include
<>""
.h

scanf
sin, printfsin math.h
include math.hscanf printf stdio.h
include stdio.h
C scanf printf
#include<stdio.h>
1.1 printf

1.1

BASIC C
xs sin sin
double

printf x
scanf x sin
s printf s x

input number

2001 5 1

1.8
scanf printf

scanf printf

printf

printf("sine of %lf is %lf\n",x,s);


%lf x s

1.3
int max(int a,int b);
/**/
main()
/**/
{
int x,y,z;
/**/
int max(int a,int b);
/**/
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
/* x,y */
z=max(x,y);
/* max */
printf("maxmum=%d",z);
/**/
}
int max(int a,int b)
/* max */
{
if(a>b)return a;else return b;
/**/
}

max
max max
()

/**/

scanf x,y max x,y max


a,b max a,b z
z

2001 5 1

1.9
1.
2.
3. main
4.(include )

5.}

6.

1.10

1.
2.{} {}

3.

1.11

1.
az 26
AZ 26
2.
09 10
3.

4.

1.12

2001 5 1

1.

C (AZaz)(09)
(_)

a, x, x3, BOOK_1, sum5

3s

s*T
*
-3x

bowy-1 -()

(1) C C
C

(2) BOOK book


(3)

2.

(1)
int,double
(2)
1.3 if else
(3)
include
3.

4.

int a; inta;C inta

5.
C

6.
C /**//**/

2001 5 1

1.13 Turbo C 2.0


1.13.1 Turbo C 2.0
Borland Turbo C 2.0 DOS
windows 98 DOS
D TC Turbo C 2.0 TC
LIB INCLUDE, LIB , INCLUDE

DOS windows 98 DOS Turbo C 2.0 , TC


TC Turbo C 2. 0
windows 98 d:\tc\tc tc
tc.exe Turbo C 2. 0
Turbo C Borland ,Borland
Turbo , Turbo BASIC, TurboPascal, Turbo Prolog,
1987 TurboC 1.0 ,
, ,
, 1988 , Borland Turbo C1.5 ,
, Turbo C 2.0 1989 Turbo C2.0
, Tiny .COM (
64K ) ( 8087/80287/80387 )
Borland Turbo C++, Turbo C 2.0
, 1991 Microsoft
Windows 3.0 , Borland Turbo C++ , Turbo C
Borlandc C++

1.13.2 Turbo C 2.0


Turbo C 2.0 , :

2001 5 1

Turbo C 2.0 , , ,
Turbo C 2.0 ,

Turbo C 2.0 , :
File Edit Run Compile Project Options Debug Break/watch
Edit , , Alt ,

1.13.3 File
Alt+F File , :

File 9
1. Load, DOS (*.C)

2001 5 1

, () F3, F3
, File
2. Pick 8 ,
, Alt-F3
3. New, NONAME.C,
4. Save, NONAME.C , ,
F2
5. Write to, ,

6. Directory,
7. Change dir,
8. Os shell Turbo C 2.0 DOS , DOS ,
Turbo C 2.0 , DOS EXIT
9. Quit Turbo C 2.0, DOS , Alt+X
:
,
Esc , Turbo C 2.0
,

1.13.4 Edit
Alt+E , , ,
wordstar , F1
1. :
F1
Turbo C 2.0
F5

F6

F10

2. :
PageUp
PageDn
Home

End

Ctrl+Y
Ctrl+T
Ctrl+KB
Ctrl+KK
Ctrl+KV
Ctrl+KC
Ctrl+KY
Ctrl+KR
Ctrl+KW
Ctrl+KP
Ctrl+F1 Turbo C 2.0 ,

Ctrl+Q[
Ctrl+Q]
:
1)

2)

2001 5 1

Turbo C 2.0
Turbo C 2.0

Turbo C 2.0 :
a) {}
b) <>
c) ()
d) []
e) /**/
f) "
g) '
Turbo C 2.0 , ,
, Ctrl+OL

1.13.5 Run
Alt+R Run ,

1. Run Project/Project name


, ()
, Ctrl+F9
2. Program reset, , Ctrl+F2
3. Go to cursor:,
, F4
4. Trace into, Trace into ,
, F7
5. Step over, ,
, F8
6. User screen Alt+F5

2001 5 1

1.13.6 Compile
Alt+C Compile ,

1. Compile to OBJ C .OBJ ,


Alt+F9
2. Make EXE file.EXE , .EXE .EXE

1) Project/Project name
2) , Primary C file
3) ,
3. Link EXE file.OBJ .EXE
4. Build all, .EXE
(,
, )
5. Primary C file, ,
C , , ,
C
6. Get info

2001 5 1

1.13.7 Project
Alt+P Project ,

1. Project name.PRJ ,
file1.c, file2.c, file3.c , 3 file.exe
, file.prj , :
file1.c
file2.c
file3.c
file.prj Project name ,
file.exe .OBJ

2001 5 1

, , .OBJ
:
file1.obj
file2.c
file3.c
file1.c ,
:
, , ,
, .LIB
2. Break make on WariningErrorsFatal Errors Link
Make
3. Auto dependencies on, .OBJ ,

4. Clear project Project/Project name
5. Remove messages

1.13.8 Options
Alt+O Options ,

1. Compiler,

1)
2)
3)

4)

5)

6)

2001 5 1

Model Tiny, small, medium, compact, large, huge


Define, ,

Code generation,

Calling convention C Pascal


Instruction set
8088/8086 80186/80286
Floating point

Default char type char


Alignonent

Merge duplicate strings ,


Standard stack frame
Test stack overflow
Line number
.OBJ
OBJ debug information .OBJ
Optimization
Optimize for
Use register variable
Register optimization
Jump optimization ,

Source
Indentifier length , 32
Nested comments
ANSI keywords only ANSI Turbo C2.0
Error
Error stop after , 25
Warning stop after , 100

2001 5 1

Display warning
Portability warning
ANSI Violations ANSI
Common error
Less common error
7) Names (segment)(group) (class), CODE, DATA,
BSS
2. Linker,

1) Map file menu .MAP


2) Initialize segments
3) Devault libraries
4) Graphics library graphics
5) Warn duplicate symbols
6) Stack warinig No stack
7) Case-sensitive link
3. Environment

1)

2001 5 1

Message tracking
Current file
All files
Off
2) Keep message Message
3) Config auto save on , Run, Shell , Turbo C 2.0
, off
4) Edit auto save Run Shell ,
5) Backup file(.BAK )
6) Tab size, 8
7) Zoomed windows, F5
8) Screen size
4. Directories,

2001 5 1

1 Include directories, ";"


2 Library directories, ";"
3 Output directoried(.OBJ, .EXE, .MAP )
4 Turbo C directoriedTurbo C
5 Pick file name pick , currentpick file
5. Arguments
6. Save options,
TCCONFIG.TC
7. Retrive options TC , TC

1.13.9 Debug
Alt+D Debug , ,

2001 5 1

1. Evaluate
1) Expression
2) Result
3) New value
2. Call stack Turbo C debuger
3. Find function Turbo C debugger
4. Refresh display

1.13.10 Break/watch
Alt+B Break/watch ,

1. Add watch

2.
3.
4.
5.
6.
7.

2001 5 1

Delete watch
Edit watch
Remove all watches
Toggle breakpoint
Clear all breakpoints
View next breakpoint

1.13.11 Turbo C 2.0


Turbo C 2.0 ,
Turbo C 2.0
1. Options Options/Save options ,
TC
DOS :
tc/c<>
Turbo C 2.0
2. Options/Environment/Config auto save on, ,
Turbo C 2.0 TCCONFIG.TC Turbo C

3. TCINST Turbo C , TC.EXE Turbo C ,


, TC.EXE

2001 5 1

z data
structure
z algorithm
Nikiklaus Wirth
+=

=+++
4
C

2.1

z
z

2.2
2.1 12345

1 12 2
2 1 2 3 6
3 6 4 24
4 24 5 120

S1: t=1
S2: i=2
S3: ti, t tit
S4: i +1 i+1i

2001 5 1

S5: i5, S3 S4 S5
100 S5: i5 i100
1357911
S1: 1t
S2: 3i
S3: tit
S4: i+2t
S5: i11, S3

S5 S5: i11, S3;


2.2 50 80
nniggi

S1: 1i
S2: gi80nigi
S3: i+1i
S4: i50, S2
2.3 2000 2500

1)

4 100

2)

100 400

y
S1: 2000y
S2: y 4 y S6
S3: y 4 100 y S6
S4: y 100 400 y y
S6
S5: y
S6:y+1y
S7: y2500 , S2

2.4

2001 5 1

1 1 1
1
1
+ + ... +

2 3 4
99 100

S1: sigh=1
S2: sum=1
S3: deno=2
S4: sigh=(-1)sigh
S5: term= sigh(1/deno )
S6: term=sum+term
S7: deno= deno +1
S8: deno100 S4
2.5 3

S1: n
S2: i=2
S3: n i r
S4: r=0 n i n S5
S5: i+1i
S6: in-1 S3 n

S6:i n S3n;

2001 5 1

2.3
z
z
z
z
z

2.4
2.4.1

2.4.2

2.6 2.1 5!

2.7 2.2

2001 5 1

2.8 2.3

2001 5 1

2.9 2.4

1 1 1
1
1
+ + ... +

2 3 4
99 100

1.
2.
3.

2001 5 1

2.4.3
1.

2.

3.

2001 5 1

z
z
z
z

2.4.4 N-S
1973 N-S

2001 5 1

2.4.5

2001 5 1

2.4.6
z
z
2.20 12345 C
main()
{int i,t;
t=1;
i=2;
while(i<=5)
{t=t*i;
i=i+1;
}
printf(%d,t);
}

2.21
main()
{
int sigh=1;
float deno=2.0,sum=1.0,term;
while(deno<=100)
{ sigh= -sigh;
term= sigh/ deno;
sum=sum+term;
deno=deno+1;
}
printf(%f,sum);
}

2.5
z
z
z
z

2001 5 1

2001 5 1

3
3.1

2001 5 1

()

1.
2.

3.

2001 5 1

4.
max
int max(int a,int b);int
sin
s=sin (x);s sin
s
void

3.2

3.2.1

z ()
120-3
4.6-1.23
ab
z

#define
#define "#"

z
3.1
#define PRICE 30
main()
{
int num,total;
num=10;

2001 5 1

total=num* PRICE;
printf(total=%d,total);
}

3.2.2

3.3
3.3.1

1)

2)

09

237-568655351627

023 ( 0)23D ()

0 0
07

015( 13)0101( 65)0177777( 65535)

2001 5 1

256( 0)03A2()-0127()
3) 0X 0x 0~9A~F
a~f

0X2A( 42)0XA0 ( 160)0XFFFF ( 65535)

5A ( 0X)0X3H ()
4) 16 16
065535
-32768+32767 00177777
0X00XFFFF 0x00xFFFF
Ll

158L ( 158)358000L ( 358000)

012L ( 10)077L ( 63)0200000L ( 65536)

0X15L ( 21)0XA5L ( 165)0X10000L ( 65536)


158L 158 158L
4 158 2

Uu

358u,0x38Au,235Lu
0XA5Lu
A5 165

3.3.2
1.

i
int i;
i=10;

10
0

2001 5 1

-10
10
0

1-10
1

2.
1) int 2
2) short int short
3) long int long 4
4) unsigned

unsigned int unsigned


unsigned short
unsigned long

32767
0

65535
1

Turbo C

int

15

-2 ~2 -1

-32768~32767

unsigned int

16

0~2 -1

0~65535

short int

15

15

-2 ~2 -1

-32768~32767

unsigned short int

15

16

0~2 -1

0~65535

31

31

-2147483648~2147483647 -2 ~2 -1

long int
unsigned long

32

0~2 -1

0~4294967295

13
int
00

00

00

00

00

00

11

01

00

00

00

11

01

00

00

00

00

00

00

00

11

01

short int
00

00

00

long int
00

00

00

unsigned int
00

00

00

00

00

00

00

00

00

00

11

01

2
2
2
2
4
4

2001 5 1

unsigned short int


00

00

00

00

00

00

11

01

00

00

00

unsigned long int


00

00

00

00

00

00

00

00

00

00

00

11

01

...

int a,b,c; (a,b,c )


long x,y; (x,y )
unsigned p,q; (p,q )



3.2
main()
{
int a,b,c,d;
unsigned u;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(a+u=%d,b+u=%d\n,c,d);
}
3.

4.
3.3
main()
{
int a,b;
a=32767;
b=a+1;
printf("%d,%d\n",a,b);
}

32767:
0

-32768
1
3.4

2001 5 1

main(){
long x,y;
int a,b,c,d;
x=5;
y=6;
a=7;
b=8;
c=x+a;
d=y+b;
printf("c=x+a=%d,d=y+b=%d\n",c,d);
}

x, y a, b
cd

3.4
3.4.1

1) 0~ 9

0.025.05.7890.135.0300.-267.8230

2) eE

a E na n
a*10n

2.1E5 ( 2.1*105)
3.7E-2 ( 3.7*10-2)
0.5E7 ( 0.5*107)
-2.8E-2 (-2.8*10-2)

345 ()
E7 ( E )
-5 ()
53.-E3 ()

2001 5 1

2.7E ()
fF 356f 356.

3.5
main(){
printf("%f\n ",356.);
printf("%f\n ",356);
printf("%f\n ",356f);
}

3.4.2
1.
4 32 3.14159

.314159

z bit
z
2.
float double long double

Turbo C 4 32 3.4E-383.4E+38
8 64 1.7E-308
1.7E+308 16

float
double
long double

324

6~7

10-37~1038

64(8)

15~16

10-307~10308

128(16)

18~19

10-4931~104932

float x,y; (x,y )


double a,b,c; (a,b,c )
3.

3.6
main()
{float a,b;
a=123456.789e5;
b=a+20
printf("%f\n",a);

2001 5 1

printf("%f\n",b);
}

1.0/3*3 1
3.7
main()
{
float a;
double b;
a=33333.33333;
b=33333.33333333333333;
printf("%f\n%f\n",a,b);
}

z
z

b Turbo C

3.4.3
double

3.5

3.5.1

'a''b''=''+''?'

1)
2)
3)
'5' 5 '5'

2001 5 1

3.5.2
"\"

printf \n

ASCII

\n

10

\t

\b

\r

13

\f

12

\\

"\"

92

\'

39

34

\a

\ddd

13

\xhh

12

\ddd \xhh
ddd hh ASCII \101 "A"
\102 "B"\134 \XOA
3.8
main()
{
int a,b,c;
a=5; b=6; c=7;
printf( ab c\tde\rf\n);
printf(hijk\tL\bM\n);
}

3.5.3

char

char a,b;

2001 5 1

3.5.4
ASCII

x ASCII 120y ASCII 121 a,b 'x''y'

a='x';
b='y';
a,b 120 121
a
0

3.9
main()
{
char a,b;
a=120;
b=121;
printf("%c,%c\n",a,b);
printf("%d,%d\n",a,b);
}

ab ab
printf "c"
"d"
3.10
main()
{
char a,b;
a='a';
b='b';
a=a-32;
b=b-32;
printf("%c,%c\n%d,%d\n",a,b,a,b);
}

2001 5 1

ab
ASCII ASCII 32

3.5.5
"CHINA" C program
"$12.5"

1)
2)
3)
BASIC

4)
1"\0" (ASCII 0)

"C program"
C

\0

'a'"a"
'a'
a
"a"
a

\0

3.6

1= 1 2= 2

int a=3
int b,c=5;
float x=3.2,y=3f,z=0.75;
char ch1='K',ch2='P';
a=b=c=5
3.11
main()
{

2001 5 1

int a=3,b,c=5;
b=a+c;
printf("a=%d,b=%d,c=%d\n",a,b,c);
}

3.7

1)
2) int long
int long
3) float
double
4) char short int
5)

double

long
unsigned

int
3.12
main(){
float PI=3.14159;
int s,r=5;
s=r*r*PI;
printf("s=%d\n",s);

char,short

2001 5 1

PI sr s=r*r*PI r PI double
double s

() ()

(float) a
a
(int)(x+y)
x+y

1) ()(int)(x+y)
(int)x+y x int y
2)

3.13
main(){
float f=5.75;
printf("(int)f=%d,f=%f\n",(int)f,f);
}

f int f
(int)f 5() f 5.75

3.8

3.8.1 C

1. :(+)(-)(*)(/)(%)
(++)(--)
2. :(>)(<)(==) (>=)

3.
4.
5.
6.
7.
8.
9.
10.

2001 5 1

(<=)(!=)
:(&&)(||)(!)
:(&)(|)(~)
(^)(<<)(>>)
:(=)(+=,-=,*=,/=,%=)
(&=,|=,^=,>>=,<<=)
:(?:)
:()
:(*)(&)
:(sizeof)
:()[](.)

3.8.2
1.
z + a+b,4+8

z --
-x,-5
z *
z /

3.14
main(){
printf("\n\n%d,%d\n",20/7,-20/7);
printf("%f,%f\n",20.0/7,-20.0/7);
}

20/7-20/7 20.0/7 -20.0/7

z ()%:

3.15
main(){
printf("%d\n",100%3);
}

100 3 1
2.

2001 5 1

z C

a+b
(a*2)c
(x+r)*8-(a+b)7
++I
sin(x)+sin(y)
(++i)-(j++)+(k--)
z 15 1 15

z ()
() x-y+z
y - x-y +z

x=y=z,= y=z x=(y=z)

3.

() ()

(float) a
a
(int)(x+y)
x+y
4.
: 1 ++
1
1 -- 1
1 1
++i
i 1
--i
i 1
i++
i i 1
i-i i 1
i++ i--

3.16
main(){
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);

2001 5 1

printf("%d\n",-i--);
}

i 8 2 i 1 9 3 1 8 4 i
8 1( 9) 5 i 9 1( 8) 6 -8 1( 9)
7 -9 1( 8)
3.17
main(){
int i=5,j=5,p,q;
p=(i++)+(i++)+(i++);
q=(++j)+(++j)+(++j);
printf("%d,%d,%d,%d",p,q,i,j);
}

P=(i++)+(i++)+(i++) i P 15 i 1
3 i 8 q q=(++j)+(++j)+(++j) q
1 q 1 8 8 24j
8

3.9

:==

x=a+b
w=sin(a)+sin(b)
y=i+++--j

a=b=c=5

a=(b=(c=5))
C =

:
x=(a=5)+(b=8)
5 a8 b a,b x x 13

x=8;a=b=c=5
1.

2001 5 1

2.

1)
2) (
0)
3) ASCII
0

3.18
main(){
int a,b=322;
float x,y=8.88;
char c1='k',c2;
a=y;
x=b;
a=c1;
c2=b;
printf("%d,%f,%d,%c",a,x,a,c2);
}

a y 8.88
8x b 322 c1 a
b c2 (b 01000010 66 ASCII
B)
3.
= +=,-=,*=,
=,%=,<<=,>>=,&=,^=,|=

a+=5
a=a+5
x*=y+7
x=x*(y+7)
r%=p
r=r%p

3.10

2001 5 1

1 2
2
3.19
main(){
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);
}

y 2 x

1) 1 2

1( 2 3)

1 2 n
n
2)

3.11
3.11.1

3.11.2

char

int

-3276832767

short int

-3276832767

long int

-214783648214783647

unsigned

065535

unsigned long

04294967295

float

3/4E-383/4E+38

double

1/7E-3081/7E+308

2001 5 1

3.11.3
Ll
Uu
Ff

3.11.4

3.11.5
:

3.11.6

3.11.7

2001 5 1

4 C



4.1


C
1)
2)
3)
4)
5)
1.

2.

3.

4.

5.

2001 5 1

x=y+z;
y+z;

i++;
1 i 1

()

()

printf("C Program");


1) if switch
2) do while while for
3) break goto continue return
{}

{ x=y+z;
a=b+c;
printf(%d%dxa)
}

;}

while(getchar()!='\n')
;

4.2

=;

1. =

=(=);

2001 5 1

===;

a=b=c=d=e=5;

e=5;
d=e;
c=d;
b=c;
a=b;
2.

int a=5,b,c;
3.

int a=b=c=5

int a=5,b=5,c=5;

4.

if((x=y+5)>0) z=x;
x=y+5 0 z=x

if((x=y+5;)>0) z=x;
x=y+5;

4.3 C
1)
2)
3)
4)

#include

stdio.h

#include< stdio.h >

#include stdio.h
stdio standard input &outupt

2001 5 1

5) printf scanf
#include< stdio.h >

#include stdio.h

4.4
4.4.1 putchar
putchar

putchar()

putchar('A');
A
putchar(x);
x
putchar(\101); A
putchar('\n');

#include<stdio.h>

#include stdio.h
4.1
#include<stdio.h>
main(){
char a='B',b='o',c='k';
putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');
putchar(a);putchar(b);
putchar('\n');
putchar(b);putchar(c);
}

4.4.2 getchar
getchar

getchar();

char c;
c=getchar();

2001 5 1

4.2
#include<stdio.h>
void main(){
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}

getchar
1) getchar

2) stdio.h
3) TC TC
TC
4)
putchar(getchar());
printf(%c,getchar());

4.5
4.5.1 printf
printf f (format)

1. printf
printf stdio.h
printf stdio.h
printf
printf()

%%

%d
%ld
%c

4.3
main()

2001 5 1

{
int a=88,b=89;
printf("%d %d\n",a,b);
printf("%d,%d\n",a,b);
printf("%c,%c\n",a,b);
printf("a=%d,b=%d",a,b);
}

a,b
%d () a,b
printf
a,b a,b

2.
Turbo C
[][][.][]
[]

1)

()

( 0)

x,X

( Ox)

e,E

g,G

%f %e

2) -+#

()

c,s,d,u o , o x ,
0x e,g,f

3) :
0
4) :.

5.: h,l h l
4.4

2001 5 1

main()
{
int a=15;
float b=123.1234567;
double c=12345678.1234567;
char d='p';
printf("a=%d,%5d,%o,%x\n",a,a,a,a);
printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);
printf("c=%lf,%f,%8.4lf\n",c,c,c);
printf("d=%c,%8c\n",d,d);
}

a %5d 5 a
15 b %f
%lf lf%5.4lf 5
4 5 4
%8.4lf 4 4
d%8c 8 p 7
printf
Turbo C

4.5
main(){
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
}

4.6
main(){
int i=8;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i++);
printf("%d\n",i--);
printf("%d\n",-i++);
printf("%d\n",-i--);
}

printf printf
printf
-i---8, i 1 7

2001 5 1

-i++-7 i 1 8i-- 8 i 1
7i++ 7 i 1 8 --ii 1
7 ++i i 1 8

4.5.2 scanf ()
scanf

1. scanf
scanf stdio.h printf
scanf stdio.h
scanf
scanf();
printf
&

:
&a, &b
a b
a,b

C

a=567
a 567 &a a
scanf
&a &&a

4.7
main(){
int a,b,c;
printf("input a,b,c\n");
scanf("%d%d%d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}

scanf printf
abc scanf TC
7 8 9 TC scanf
%d%d%d

2001 5 1

7 8 9

7
8
9
2.

%[*][][]
[]
1)

fe

()

2) *:,
:
scanf("%d %*d %d",&a,&b);
1
2
3 1 a2 3 b
3) :()

scanf("%5d",&a);
12345678
12345 a

scanf("%4d%4d",&a,&b);
12345678
1234 a 5678 b
4) : l hl (%ld) (%lf)h

scanf
1) scanf scanf("%5.2f",&a);
2
2) scanf scanf("%d",a);
scnaf("%d",&a);
3)
TAB C TAB(%d
12AA )
4)

2001 5 1

scanf("%c%c%c",&a,&b,&c);

d e
f
'd' a, ' ' b,'e' c

def
'd' a,'e' b,'f' c

:
scanf ("%c %c %c",&a,&b,&c);

4.8
main(){
char a,b;
printf("input character a,b\n");
scanf("%c%c",&a,&b);
printf("%c%c\n",a,b);
}

scanf "%c%c" M
MN
4.9
main(){
char a,b;
printf("input character a,b\n");
scanf("%c %c",&a,&b);
printf("\n%c%c\n",a,b);
}

N M MN

scanf "%c %c"


5)

scanf("%d,%d,%d",&a,&b,&c);
,
5,6,7

scanf("a=%d,b=%d,c=%d",&a,&b,&c);

a=5,b=6,c=7
6)
4.10

2001 5 1

main(){
int a;
printf("input a number\n");
scanf("%d",&a);
printf("%ld",a);
}

4.11
main(){
long a;
printf("input a long integer\n");
scanf("%ld",&a);
printf("%ld",a);
}

input a long integer


1234567890
1234567890

4.12
main(){
char a,b,c;
printf("input character a,b,c\n");
scanf("%c %c %c",&a,&b,&c);
printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
}

ASCII
4.13
main(){
int a;
long b;
float f;
double d;
char c;
printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b
),sizeof(f),sizeof(d),sizeof(c));
}

4.6
4.14
a,b,c

area = s( s a)(s b)(s c)


s = (a+b+c)/2

#include<math.h>
main()
{
float a,b,c,s,area;
scanf(%f,%f,%f,&a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n,a,b,c,s);
printf(area=%7.2f\n,area);
}

4.15ax2+bx+c=0 a,b,cb2-4ac>0

b+b4a x1 =

x1=

2a

b + b 2 4ac
2a

b2 4ac q =
q=
2a

b+b24a
x1=
2a

b 2 4ac
2a

x1=p+q
x2=p-q

#include<math.h>
main()
{
float a,b,c,disc,x1,x2,p,q;
scanf(a=%f,b=%f,c=%f,&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;

b
2 a

2001 5 1

printf(\nx1=%5.2f\nx2=%5.2f\n,x1,x2);
}

2001 5 1

2001 5 1

5
5.1

5.1.1

1) <

2) <=
3) >

4) >=
5) ==
6) !=

<,<=,>,>===!===
!=

5.1.2

a+b>c-d
x>3/2
a+1<c
-i-5*j==k+1

a>(b>c)
a!=(c==d)

10

5>0 1
(a=3)>(b=5) 3>5 0
5.1
main(){

2001 5 1

char c='k';
int i=1,j=2,k=3;
float x=3e+5,y=0.85;
printf("%d,%d\n",a+5<c,-i-2*j>=k+1);
printf("%d,%d\n",1<j<5,x-5.25<=x+y);
printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);
}

ASCII
k==j==i+5, k==j,
0 0==i+5 0

5.2
5.2.1

1) &&
2) ||
3) !

&&||!

&& ||

!&&()||()
&&||

a>b && c>d

(a>b)&&(c>d)
!b==c||d<a

((!b)==c)||(d<a)
a+b>c&&x+y<b
((a+b)>c)&&((x+y)<b)

5.2.2
10
1. &&

2001 5 1

5>0 && 4>2


5>0 4>2
2. ||

5>0||5>8
5>0
3. !

!(5>0)

10
00
5 3 0 5&&3 1

5||0 1

5.2.3

(a&&b)&&c

a&&b&&c
10
5.2
main(){
char c='k';
int i=1,j=2,k=3;
float x=3e+5,y=0.85;
printf("%d,%d\n",!x*!y,!!!x);
printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
}

!x !y 0!x*!y 0 0 x 0!!!x
0 x|| i && j-3 j-3 0 i && j-3 1
x||i&&j-3 1 i<j&&x<y i<j 1 x<y 0
10 0 i==5&&c&&(j=8) i==5 0
0 x+ y||i+j+k x+y 0

2001 5 1

5.3 if
if
if

5.3.1 if
1. if
if()

5.3
main(){
int a,b,max;
printf("\n input two numbers:
scanf("%d%d",&a,&b);
max=a;
if (max<b) max=b;
printf("max=%d",max);
}

");

a,b a max if max b


max b b max max max
2. : if-else
if()
1
else
2
1 2

5.4
main(){
int a, b;
printf("input two numbers:
scanf("%d%d",&a,&b);
if(a>b)
printf("max=%d\n",a);
else
printf("max=%d\n",b);
}

2001 5 1

");

if-else a,b a a b
3. if-else-if
if
if-else-if
if( 1)
1
else if( 2)
2
else if( 3)
3

else if( m)
m
else
n

if n
if-else-if 33

2001 5 1

5.5
#include"stdio.h"
main(){
char c;
printf("input a character:
");
c=getchar();
if(c<32)
printf("This is a control character\n");
else if(c>='0'&&c<='9')
printf("This is a digit\n");
else if(c>='A'&&c<='Z')
printf("This is a capital letter\n");
else if(c>='a'&&c<='z')
printf("This is a small letter\n");
else
printf("This is an other character\n");
}

ASCII
ASCII
ASCII 32 09AZ
az
if-else-if ASCII
g
4. if :

2001 5 1

1) if if

if(a=5)
if(b)
0
:
if(a=5)
0

if(a=b)
printf("%d",a);
else
printf("a=0");
b a 0 a=0

2) if
3) if
(){}}

if(a>b)
{a++;
b++;}
else
{a=0;
b=10;}

5.3.2 if
if if if

if()
if

if()
if
else
if
if if-else if else
if else

if( 1)

2001 5 1

if( 2)
1
else
2
else if ?

if( 1)
if( 2)
1
else
2

if( 1)
if( 2)
1
else
2
else if

5.6
main(){
int a,b;
printf("please input A,B:
");
scanf("%d%d",&a,&b);
if(a!=b)
if(a>b) printf("A>B\n");
else
printf("A<B\n");
else
printf("A=B\n");
}

if
A>BA<B A=B if-else-if
if
5.7
main(){
int a,b;
printf("please input A,B:
");
scanf("%d%d",&a,&b);
if(a==b) printf("A=B\n");
else if(a>b) printf("A>B\n");
else printf("A<B\n");
}

2001 5 1

5.3.3

1? 2 3
1 2
2

if(a>b) max=a;
else max=b;

max=(a>b)?a:b;
a>b a max b max

1)

max=(a>b)?a:b

max=a>b?a:b
2) ?
3)

a>b?a:c>d?c:d

a>b?a:(c>d?c:d)
3
5.8
main(){
int a,b,max;
printf("\n input two numbers:
");
scanf("%d%d",&a,&b);
printf("max=%d",a>b?a:b);
}

2001 5 1

5.4 switch
switch
switch(){
case 1: 1;
case 2: 2;

case n: n;
default
: n+1;
}


case case default

4.9
main(){
int a;
printf("input integer number:
");
scanf("%d",&a);
switch (a){
case 1:printf("Monday\n");
case 2:printf("Tuesday\n");
case 3:printf("Wednesday\n");
case 4:printf("Thursday\n");
case 5:printf("Friday\n");
case 6:printf("Saturday\n");
case 7:printf("Sunday\n");
default:printf("error\n");
}
}

3 case3
Wednesday
? switch switch case

switch case
if
break switch break break
case break
switch
4.10
main(){

2001 5 1

int a;
printf("input integer number:
");
scanf("%d",&a);
switch (a){
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n"); break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 7:printf("Sunday\n");break;
default:printf("error\n");
}
}

switch
1) case
2) case {}
3) case default
4) default

5.5
4.11
main(){
int a,b,c,max,min;
printf("input three numbers:
");
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{max=a;min=b;}
else
{max=b;min=a;}
if(max<c)
max=c;
else
if(min>c)
min=c;
printf("max=%d\nmin=%d",max,min);
}

a,b max min


c max c c max c min c min max

2001 5 1

min max min


4.12
main(){
float a,b;
char c;
printf("input expression: a+(-,*,/)b \n");
scanf("%f%c%f",&a,&c,&b);
switch(c){
case '+': printf("%f\n",a+b);break;
case '-': printf("%f\n",a-b);break;
case '*': printf("%f\n",a*b);break;
case '/': printf("%f\n",a/b);break;
default: printf("input error\n");
}
}

switch
+,-,*,/

2001 5 1

6
6.1

1) goto if
2) while
3) do-while
4) for

6.2 goto goto


goto , BASIC goto goto
:
goto
,:,
goto , goto
, goto if ,
,
goto ,,,,
goto
100

6.1gotoif, n =1
main()
{

loop:

int i,sum=0;
i=1;
if(i<=100)
{sum=sum+i;
i++;
goto loop;}
printf("%d\n",sum);

2001 5 1

6.3 while
while
while()

while ( 0)

100

6.2while n =1
N-S

2001 5 1

main()
{
int i,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
}

6.3
#include <stdio.h>
main(){
int n=0;
printf("input a string:\n");
while(getchar()!='\n') n++;
printf("%d",n);
}

getchar()!='\n',
n++

while
1) while ( 0)

6.4
main(){
int a=0,n;
printf("\n input n:
");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);

2001 5 1

n n 1 a++*2
(a*2a++)
2) {}

6.4 do-while
do-while :
do

while()
while :,
, , , do-while

100

6.5do-while n =1
N-S

main()
{
int i,sum=0;
i=1;
do
{
sum=sum+i;
i++;
}
while(i<=100)
printf("%d\n",sum);
}

, "{""}"
6.6while do-while
1main()
{int sum=0,i;
scanf(%d,&i);
while(i<=10)
{sum=sum+i;
i++;
}

2001 5 1

2001 5 1

printf(sum=%d,sum);
}

2main()
{int sum=0,i;
scanf(%d,&i);
do
{sum=sum+i;
i++;
}
while(i<=10);
printf(sum=%d,sum);
}

6.5 for
C for while :
for( 1 2 3)

1) 1
2) 2 0 for
30 5
3) 3
4) 2
5) for

2001 5 1

for
for()
, ;
,

:
for(i=1; i<=100; i++)sum=sum+i;
i 1, i 100, , 1,
, i>100 ,

i=1;
whilei<=100
{ sum=sum+i;
i++;
}
for while
1
while 2
{
3
}
:
1) for 1 2() 3(

2)
3)

4)

5)

6)

7)

8)

9)

2001 5 1

), ,
1,
2(),

for(i=1;;i++)sum=sum+i;

i=1;
while(1)
{sum=sum+i;
i++;}
3(), ,

for(i=1;i<=100;)
{sum=sum+i;
i++;}
1 3()

for(;i<=100;)
{sum=sum+i;
i++;}

while(i<=100)
{sum=sum+i;
i++;}
3

for()

while(1)
1

for(sum=0;i<=100;i++)sum=sum+i;
1 3
for(sum=0,i=1;i<=100;i++)sum=sum+i;

for(i=0,j=100;i<=100;i++,j--)k=i+j;
2

for(i=0;(c=getchar())!=\n;i+=c);

for(;(c=getchar())!=\n;)
printf(%c,c);

2001 5 1

6.6
6.7
main()
{
int i, j, k;
printf("i j k\n");
for (i=0; i<2; i++)
for(j=0; j<2; j++)
for(k=0; k<2; k++)
printf(%d %d %d\n", i, j, k);
}

6.7
1)
2)
3)

goto

while do-while for


while do-while while do-while
for 1

6.8 break continue


6.8.1 break
break break switch ,
switch switch break ,
break switch ,

break do-whileforwhile ,
, break if
6.8
main()
{
int i=0;
char c;
while(1)
/**/
{
c='\0';
/**/

2001 5 1

while(c!=13&&c!=27) /* Esc */
{
c=getch();
printf("%c\n", c);
}
if(c==27)
break;
/* Esc */
i++;
printf("The No. is %d\n", i);
}
printf("The end");
}

:
1) break if-else
2) , break

6.8.2 continue
continue continue
forwhiledo-while , if ,

1) while( 1)
{
if( 2)break;

}
2) while( 1)
{
if( 2)continue;

6.9
main()
{
char c;
while(c!=13)
/**/
{
c=getch();
if(c==0X1B)
continue; /* Esc */
printf("%c\n", c);
}
}

6.9

6.10 4

= 1

1 1 1
+ + ...
3 5 7

2001 5 1

N-S
#include<math.h>
main()
{
int s;
float n,t,pi;
t=1,pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
}

6.11 m
N-S
#include<math.h>
main()
{
int m,i,k;
scanf(%d,&m);
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
printf(%d is a prime number\n,m);
else
printf(%d is not a prime number\n,m);
}

6.12 100 200


#include<math.h>
main()
{
int m,i,k,n=0;
for(m=101;m<=200;m=m+2)
{
k=sqrt(m);
for(i=2;i<=k;i++)

2001 5 1

if(m%i==0)break;
if(i>=k+1)
{printf(%d,m);
n=n+1;}
if(n%n==0)printf(\n);
}
printf(\n);
}

2001 5 1

2001 5 1

7.1
7.1.1

[]

int a[10];
a 10
float b[10],c[20];
b 10 c 20
char ch[20];
ch 20

1)

2)
3)

main()
{
int a;
float a[10];

4) a[5] a 5
0 5 a[0],a[1],a[2],a[3],a[4]
5)

2001 5 1

#define FD 5
main()
{
int a[3+2],b[7+FD];

main()
{
int n=5;
int a[n];

}
6)

int a,b,c,d,k1[10],k2[20];

7.1.2

[]
C

a[5]
a[i+j]
a[i++]

10
for(i=0; i<10; i++)
printf("%d",a[i]);

printf("%d",a);
7.1
main()
{
int i,a[10];
for(i=0;i<=9;i++)

2001 5 1

a[i]=i;
for(i=9;i>=0;i--)
printf("%d ",a[i]);
}

7.2
main()
{
int i,a[10];
for(i=0;i<10;)
a[i++]=i;
for(i=9;i>=0;i--)
printf("%d",a[i]);
}

7.3
main()
{
int i,a[10];
for(i=0;i<10;)
a[i++]=2*i+1;
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n%d %d\n",a[5.2],a[5.8]);
}

a
for 3 i++
for
printf a[5]

7.1.3

[]={}
{ }

2001 5 1

int a[10]={ 0,1,2,3,4,5,6,7,8,9 };


a[0]=0;a[1]=1...a[9]=9;

1)
{ }

int a[10]={0,1,2,3,4};
a[0]a[4]5 5 0
2)
1
int a[10]={1,1,1,1,1,1,1,1,1,1};

int a[10]=1;
3)

int a[5]={1,2,3,4,5};

int a[]={1,2,3,4,5};

7.1.4
scanf

7.4
main()
{
int i,max,a[10];
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<10;i++)
if(a[i]>max) max=a[i];
printf("maxmum=%d\n",max);
}

for 10 a a[0] max


for a[1] a[9] max max
max max
max
7.5
main()
{

2001 5 1

int i,j,p,q,s,a[10];
printf("\n input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) { p=j;q=a[j]; }
if(i!=p)
{s=a[i];
a[i]=a[p];
a[p]=s; }
printf("%d",a[i]);
}
}

for for
for 10 for
i i p
a[i] q a[i+1] a[i]
a[i] p qp q
ip p,q a[i] a[p]
a[i] i+1

7.2
7.2.1

[ 1][ 2]
1 2

int a[3][4];
a
34
a[0][0],a[0][1],a[0][2],a[0][3]
a[1][0],a[1][1],a[1][2],a[1][3]

2001 5 1

a[2][0],a[2][1],a[2][2],a[2][3]

a[0] a[1] a[2]


a int )

7.2.2

[][]

a[3][4]
a

7.6 5

Math

80

61

59

85

76

75

65

63

87

77

Foxpro

92

71

70

90

85

a[5][3] v[3]
average
main()
{
int i,j,s=0,average,v[3],a[5][3];
printf("input score\n");
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
{ scanf("%d",&a[j][i]);
s=s+a[j][i];}
v[i]=s/5;
s=0;
}
average =(v[0]+v[1]+v[2])/3;
printf("math:%d\nc languag:%d\ndbase:%d\n",v[0],v[1],v[2]);

2001 5 1

printf("total:%d\n", average );
}

5 v[i]
v
v[0],v[1],v[2] 3

7.2.3

a[5][3]
1) :
int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };
2) :
int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};

7.7
main()
{
int i,j,s=0, average,v[3];
int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
for(i=0;i<3;i++)
{ for(j=0;j<5;j++)
s=s+a[j][i];
v[i]=s/5;
s=0;
}
average=(v[0]+v[1]+v[2])/3;
printf("math:%d\nc languag:%d\ndFoxpro:%d\n",v[0],v[1],v[2]);
printf("total:%d\n", average);
}

1) 0

int a[3][3]={{1},{2},{3}};
0
1 0 0
2 0 0

2001 5 1

3 0 0
int a [3][3]={{0,1},{0,0,2},{3}};
:
0 1 0
0 0 2
3 0 0
2)

int a[3][3]={1,2,3,4,5,6,7,8,9};

int a[][3]={1,2,3,4,5,6,7,8,9};
3)

a[3][4]
a[0]
a[1]
a[2]
4
a[0] a[0][0],a[0][1],a[0][2],a[0][3]
a[0],a[1],a[2]

7.2.4
7.3

7.3.1

char c[10];
int c[10] 2

char c[5][10];

2001 5 1

7.3.2

char c[10]={c, , p, r, o, g, r, a,m};

C
c[0]c
c[1]
c[2]p
c[3]r
c[4]0
c[5]g
c[6]r
c[7]a
c[8]m
c[9]p 0

char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`};


C 9

7.3.3
7.8
main()
{
int i,j;
char a[][5]={{'B','A','S','I','C',},{'d','B','A','S','E'}};
for(i=0;i<=1;i++)
{
for(j=0;j<=4;j++)
printf("%c",a[i][j]);
printf("\n");
}
}

2001 5 1

7.3.4

'\0'
'\0''\0'

char c[]={'c', ' ','p','r','o','g','r','a','m'};

char c[]={"C program"};


{}
char c[]="C program";
'\0'
c
C

\0

\0' C \0'

7.3.5

printf scanf

7.9
main()
{
char c[]="BASIC\ndBASE";
printf("%s\n",c);
}

printf %s

printf("%s",c[]);
7.10
main()
{
char st[15];
printf("input string:\n");
scanf("%s",st);
printf("%s\n",st);
}

2001 5 1

15 15
`\0`
scanf

input string:
this is a book

this

7.11
main()
{
char st1[6],st2[6],st3[6],st4[6];
printf("input string:\n");
scanf("%s%s%s%s",st1,st2,st3,st4);
printf("%s %s %s %s\n",st1,st2,st3,st4);
}

scanf &a,&b
?

char c[10]
C[0]

C[1]

C[2]

C[3]

C[4]

C[5]

C[6]

C[7]

C[8]

C[9]

c 2000 c[0] 2000 c


c & scanf("%s",&c);
printf("%s",c) c
'\0'

7.3.6


"stdio.h"
"string.h"

2001 5 1

1. puts
puts ()

7.12
#include"stdio.h"
main()
{
char c[]="BASIC\ndBASE";
puts(c);
}

puts puts
printf printf
2. gets
gets ()

7.13
#include"stdio.h"
main()
{
char st[15];
printf("input string:\n");
gets(st);
puts(st);
}

gets
scanf
3. strcat
strcat ( 1 2)
2 1
1 \0 1
7.14
#include"string.h"
main()
{
static char st1[30]="My name is ";
int st2[10];
printf("input your name:\n");
gets(st2);

2001 5 1

strcat(st1,st2);
puts(st1);
}

1
4. strcpy
strcpy ( 1 2)
2 1 \0
2
7.15
#include"string.h"
main()
{
char st1[15],st2[]="C Language";
strcpy(st1,st2);
puts(st1);printf("\n");
}

5. strcmp
strcmp( 1 2)
ASCII
1 20
2 20
1 20

7.16
#include"string.h"
main()
{ int k;
static char st1[15],st2[]="C Language";
printf("input a string:\n");
gets(st1);
k=strcmp(st1,st2);
if(k==0) printf("st1=st2\n");
if(k>0) printf("st1>st2\n");
if(k<0) printf("st1<st2\n");
}

2001 5 1

st2 k k
dbase ASCII dBASEC Language k0,
st1>st2
6. strlen
strlen()
(\0)
7.17
#include"string.h"
main()
{ int k;
static char st[]="C language";
k=strlen(st);
printf("The lenth of the string is %d\n",k);
}

7.4
7.18

i
i

main()
{
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++)
{ p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i)
{
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d ",a[i]);
}
printf("\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i])

2001 5 1

{for(s=9;s>=i;s--) a[s+1]=a[s];
break;}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
}

a 10
n for n n>a[i]
i ( a[9] a[i])
i n a[i]
i=10 n a[10]

47 47 54 28
7.19 a b
a=( 3 16 87 65
4 32 11 108
10 25 12 37)
b=(87 108 37)
A B

main()
{
int a[][4]={3,16,87,65,4,32,11,108,10,25,12,27};
int b[3],i,j,l;
for(i=0;i<=2;i++)
{ l=a[i][0];
for(j=1;j<=3;j++)
if(a[i][j]>l) l=a[i][j];
b[i]=l;}
printf("\narray a:\n");
for(i=0;i<=2;i++)
{ for(j=0;j<=3;j++)
printf("%5d",a[i][j]);
printf("\n");}
printf("\narray b:\n");
for(i=0;i<=2;i++)
printf("%5d",b[i]);
printf("\n");
}

2001 5 1

for for
0 l l l
l l l b[i]
b a for a b
7.20

main()
{
char st[20],cs[5][20];
int i,j,p;
printf("input country's name:\n");
for(i=0;i<5;i++)
gets(cs[i]);
printf("\n");
for(i=0;i<5;i++)
{ p=i;strcpy(st,cs[i]);
for(j=i+1;j<5;j++)
if(strcmp(cs[j],st)<0) {p=j;strcpy(st,cs[j]);}
if(p!=i)
{
strcpy(st,cs[i]);
strcpy(cs[i],cs[p]);
strcpy(cs[p],st);
}
puts(cs[i]);}printf("\n");
}

for gets
cs[5][20]
cs[0]cs[1]cs[2]cs[3]cs[4] gets cs[i]
for for
cs[i] st i
P st cs[i] st
st p p i cs[i]
cs[i] st cs i

2001 5 1

7.5
1.()

2.
3.()

4.

2001 5 1

8
8.1

main()

( Turbo CMS C )

1.
1)

printfscanfgetcharputchargetsputsstrcat
2)

2.

1)

2)

void
3.
1)

2) (
)()

4.
1) ASCII

2) ()

2001 5 1

3)
4)
5)
6)
7) DOSBIOS
8)
9)
10)
11)
12)
13)

main

main
main main main
main

8.2
1.
()
{

{}

void

void Hello()
{
printf ("Hello,world \n");
}
main Hello Hello
Hello world
2.

2001 5 1

()
{

int max(int a, int b)


{
if (a>b) return a;
else return b;
}
max a,b,
a,b {}
max return a(
b) return
main
main

max main main


8.1
int max(int a,int b)
{
if(a>b)return a;
else return b;
}
main()
{
int max(int a,int b);
int x,y,z;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}

1 5 max max
max ( 8 )
12
max x, y max a, bmax (a b)

2001 5 1

z z

8.3
8.3.1

1.

2.

3.
4.

8.2
main()
{
int n;
printf("input number\n");
scanf("%d",&n);
s(n);
printf("n=%d\n",n);
}
int s(int n)
{
int i;
for(i=n-1;i>=1;i--)

2001 5 1

n=n+i;
printf("n=%d\n",n);
}

snin
s n(
n)printf n
nnsprintf nn
n 0n 100n 100sn
100n 5050n
100

8.3.2

8.1 max (
)
1) return
return
return

return ()
return
return
2)

3)
4) void
8.2 s
void s(int n)
{
}

s
sum=s(n);

2001 5 1

8.4
8.4.1

()

8.4.2

1.
z=max(x,y) max
z
2.
printf
("%d",a);scanf ("%d",&b);
3.

printf("%d",max(x,y));
max printf

printf
8.3
main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n",++i,--i,i++,i--);
}

8
7
7
8
printf ++i--ii++i--
9
8
8

2001 5 1

9

Turbo C
8778

8.4.3

( )

()

8.1 main max


int max(int a,int b);
:
int max(int,int)

1)
8.2 s

2)
8.1 max main
main max int max(int a,int b)
3)

char str(int a);


float f(float b);
main()
{

}
char str(int a)
{

}
float f(float b)
{

}
str f

2001 5 1

str f
4) include

8.5

main a
a a b b b a
a main
2

8.4s=2

!+32!

f1
f2 f1 f1 f2
f1
long f1(int p)
{
int k;
long r;
long f2(int);
k=p*p;
r=f2(k);
return r;
}
long f2(int q)
{
long c=1;
int i;
for(i=1;i<=q;i++)

2001 5 1

c=c*i;
return c;
}
main()
{
int i;
long s=0;
for (i=2;i<=3;i++)
s=s+f1(i);
printf("\ns=%ld\n",s);
}

f1 f2 f1
2

f2 if1 i f1
2

f2 i f2f2 i

f2 C(i

!)f1f1

8.6

f
int f(int x)
{
int y;
z=f(y);
return z;
}

8.5 n!
n!
n!=1
(n=0,1)
n(n-1)!
(n>1)

2001 5 1

long ff(int n)
{
long f;
if(n<0) printf("n<0,input error");
else if(n==0||n==1) f=1;
else f=ff(n-1)*n;
return(f);
}
main()
{
int n;
long y;
printf("\ninput a inteager number:\n");
scanf("%d",&n);
y=ff(n);
printf("%d!=%ld",n,y);
}

ff ff ff
n<0,n==0 n=1 ff
n-1 n-1 n n-1 1 n
1
5

5!

y=ff(5) ff n=5, 0 1 f=ff(n-1)*n, f=ff(5-1)*5


ff ff(4)
ff 1
ff(1) 1ff(2) 1*2=2ff(3) 2*3=6
ff(4) 6*4=24 ff(5) 24*5=120
8.5 1 2 3
n
Hanoi
8.6Hanoi
ABCA 64
5.4 64 A C
B

A n
n=1 A C
n=2
1. A n-1( 1) B
2. A C
3. B n-1( 1) C

2001 5 1

n=3
A. A n-1( 2 n`) B( C)
(1) A n`-1( 1) C
(2) A B
(3) C n`-1( 1) B
B. A C
C. B n-1( 2 n`) C( A)
(1) B n`-1( 1) A
(2) B C
(3) A n`-1( 1) C

n 2
A n-1 B
A C
B n-1 C
n=3 n`-1
n`=n-1
move(int n,int x,int y,int z)
{
if(n==1)
printf("%c-->%c\n",x,z);
else
{
move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
main()
{
int h;
printf("\ninput number:\n");
scanf("%d",&h);
printf("the step to moving %2d diskes:\n",h);
move(h,'a','b','c');
}

,move n,x,y,zn
x,y,z move x n z n==1
x z xz n!=1 move n-1
x y xz move n-1 y z
n=n-1 n n=1 n=4

2001 5 1

input number:
4
the step to moving 4 diskes:
ab
ac
bc
ab
ca
cb
ab
ac
bc
ba
ca
bc
ab
ac
bc

8.7

()
1.

5.4
8.7 0 0 0

void nzp(int v)
{
if(v>0)
printf("%d ",v);
else
printf("%d ",0);
}
main()
{
int a[5],i;
printf("input 5 numbers\n");
for(i=0;i<5;i++)
{scanf("%d",&a[i]);
nzp(a[i]);}
}

2001 5 1

nzp v
v main for
nzp a[i] v nzp
2.

1)

2)

a a 2000
b
a b b 2000 ab
2000 a b
() a[0]
b[0] 2000 2001 a[0] b[0] a[i] b[i]
8.8 a 5
float aver(float a[5])
{
int i;
float av,s=a[0];
for(i=1;i<5;i++)
s=s+a[i];
av=s/5;
return av;
}
void main()

2001 5 1

{
float sco[5],av;
int i;
printf("\ninput 5 scores:\n");
for(i=0;i<5;i++)
scanf("%f",&sco[i]);
av=aver(sco);
printf("average score is %5.2f",av);
}

aver a 5
aver main
sco sco aver av av

3)

5.4 5.6
8.9 8.7
void nzp(int a[5])
{
int i;
printf("\nvalues of array a are:\n");
for(i=0;i<5;i++)
{
if(a[i]<0) a[i]=0;
printf("%d ",a[i]);
}
}
main()
{
int b[5],i;
printf("\ninput 5 numbers:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
printf("initial values of array b are:\n");
for(i=0;i<5;i++)
printf("%d ",b[i]);
nzp(b);
printf("\nlast values of array b are:\n");

2001 5 1

for(i=0;i<5;i++)
printf("%d ",b[i]);
}

nzp a 5 b
5 b b b
nzp nzp 0 a
b b
b a

a.
b.

()
8.10 8.9
void nzp(int a[8])
{
int i;
printf("\nvalues of array aare:\n");
for(i=0;i<8;i++)
{
if(a[i]<0)a[i]=0;
printf("%d ",a[i]);
}
}
main()
{
int b[5],i;
printf("\ninput 5 numbers:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
printf("initial values of array b are:\n");
for(i=0;i<5;i++)
printf("%d ",b[i]);
nzp(b);
printf("\nlast values of array b are:\n");
for(i=0;i<5;i++)
printf("%d ",b[i]);
}

8.9 nzp 8for


i<8 a b

2001 5 1

a a[5]a[6]a[7]
c.

void nzp(int a[])

void nzp(int a[]int n)


a n n

8.10 8.11
8.11
void nzp(int a[],int n)
{
int i;
printf("\nvalues of array a are:\n");
for(i=0;i<n;i++)
{
if(a[i]<0) a[i]=0;
printf("%d ",a[i]);
}
}
main()
{
int b[5],i;
printf("\ninput 5 numbers:\n");
for(i=0;i<5;i++)
scanf("%d",&b[i]);
printf("initial values of array b are:\n");
for(i=0;i<5;i++)
printf("%d ",b[i]);
nzp(b,5);
printf("\nlast values of array b are:\n");
for(i=0;i<5;i++)
printf("%d ",b[i]);
}

nzp a n main
nzp(b5) 5 n
d.

int MA(int a[3][10])

int MA(int a[][10])

2001 5 1

8.8

8.8.1

int f1(int a)
/* f1*/
{
int b,c;

}
a,b,c
int f2(int x)
/* f2*/
{
int y,z;

}
x,y,z
main()
{
int m,n;

}
m,n
f1 a b,c f1 a,b,c
a,b,c f1 x,y,z f2 m,n
main
1)

2)
3)
n

4)

2001 5 1

main()
{
int s,a;

{
int b;
s=a+b;

}
8.12
main()
{
int i=2,j=3,k;
k=i+j;
{
int k=8;
printf("%d\n",k);
}
printf("%d\n",k);
}

/*b */
/*s,a */

main i,j,k k
k 8 k main
k k 4 k
main 5 7 k k
8 8 9 ik i 7
i 3 3 9 k main
k k 4 5 5

8.8.2

extern

int a,b;
/**/
void f1()
/* f1*/
{

float x,y;
int fz()
{

}
main()
{

2001 5 1

/**/
/* fz*/

/**/

}
abxy x,y
f1 f1 x,y f1 a,b
f1,f2 main
8.13 l,w,h x*y,x*z,y*z
int s1,s2,s3;
int vs( int a,int b,int c)
{
int v;
v=a*b*c;
s1=a*b;
s2=b*c;
s3=a*c;
return v;
}
main()
{
int v,l,w,h;
printf("\ninput length,width and height\n");
scanf("%d%d%d",&l,&w,&h);
v=vs(l,w,h);
printf("\nv=%d,s1=%d,s2=%d,s3=%d\n",v,s1,s2,s3);
}

8.14
int a=3,b=5;
/*a,b */
max(int a,int b) /*a,b */
{int c;
c=a>b?a:b;
return(c);
}
main()
{int a=8;
printf("%d\n",max(a,b));
}

2001 5 1

8.9
8.9.1

1)
2)
3)

1)
2) static
3)

8.9.2 auto
static

auto

int f(int a)
/* f a */

2001 5 1

{auto int b,c=3;


/* bc */

}
a bc c 3 f abc

auto auto

8.9.3 static

static
8.15
f(int a)
{auto b=0;
static c=3;
b=b+1;
c=c+1;
return(a+b+c);
}
main()
{int a=2,i;
for(i=0;i<3;i++)
printf("%d",f(a));
}

1)

2)

3) 0

8.16 1 5
int fac(int n)
{static int f=1;
f=f*n;
return(f);
}
main()
{int i;
for(i=1;i<=5;i++)

2001 5 1

printf("%d!=%d\n",i,fac(i));
}

8.9.4 register
C CPU
register
8.17
int fac(int n)
{register int i,f=1;
for(i=1;i<=n;i++)
f=f*i
return(f);
}
main()
{int i;
for(i=0;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
}

1)
2)
3)

8.9.5 extern

extern

8.18 extern
int max(int x,int y)
{int z;
z=x>y?x:y;
return(z);
}
main()
{extern A,B;

2001 5 1

printf("%d\n",max(A,B));
}
int A=13,B=-8;

1 AB
main main AB main
extern A B A
B

9
9.1
##include
#define

()

9.2

9.2.1

#define
##define

#define M (y*y+3*y)
M (y*y+3*y)(y*y+3*y)
M (y*y+3*y)
M
9.1
#define M (y*y+3*y)
main(){

int s,y;
printf("input a number:
scanf("%d",&y);
s=3*M+4*M+5*M;
printf("s=%d\n",s);

");

M (y*y+3*y), s=3*M+4*M+5* M

s=3*(y*y+3*y)+4*(y*y+3*y)+5*(y*y+3*y);
(y*y+3*y)

#difine M y*y+3*y

s=3*y*y+3*y+4*y*y+3*y+5*y*y+3*y

3y +3y+4y +3y+5y +3y

1)

2)
3)
# undef

#define PI 3.14159
main()
{

}
#undef PI
f1()
{

}
PI main f1
4)
9.2

#define OK 100
main()
{
printf("OK");
printf("\n");
}

OK 100 printf OK
OK OK
5)

#define PI 3.1415926
#define S PI*y*y
/* PI */

printf("%f",S);

printf("%f",3.1415926*y*y);
6)
7)

#define STU struct stu


STU
STU body[5],*p;
#define INTEGER int
INTEGER
INTEGER a,b;
typedef
typedef

#define PIN1 int *


typedef (int *) PIN2;

PIN1PIN2
PIN1 a,b;:
int *a,b;
a b

PIN2 a,b;
a,b PIN2

8)

9.3
#define P printf
#define D "%d\n"
#define F "%f\n"
main(){
int a=5, c=8, e=11;
float b=3.8, d=9.7, f=21.08;
P(D F,a,b);
P(D F,c,d);
P(D F,e,f);
}

9.2.2

#define ()

()

#define M(y) y*y+3*y


/**/

k=M(5);

/**/

5 y
k=5*5+3*5
9.4
#define MAX(a,b) (a>b)?a:b
main(){
int x,y,max;
printf("input two numbers:
");
scanf("%d%d",&x,&y);
max=MAX(x,y);
printf("max=%d\n",max);
}

MAX (a>b)?a:b a,b


max=MAX(x,y) x,y a,b


max=(x>y)?x:y;
x,y

1.

#define MAX(a,b) (a>b)?a:b

#define MAX (a,b) (a>b)?a:b


MAX (a,b) (a>b)?a:b

max=MAX(x,y);

max=(a,b)(a>b)?a:b(x,y);

2.

3.
9.5
#define SQ(y) (y)*(y)
main(){
int a,sq;
printf("input a number:
");
scanf("%d",&a);
sq=SQ(a+1);
printf("sq=%d\n",sq);
}

y a+1
a+1 y(y)*(y) SQ
sq=(a+1)*(a+1);

4.
(y)*(y) y

9.6
#define SQ(y) y*y
main(){
int a,sq;
printf("input a number:
");

scanf("%d",&a);
sq=SQ(a+1);
printf("sq=%d\n",sq);
}

input a number:3
sq=7
3?

sq=a+1*a+1;
a 3 sq 7

9.7
#define SQ(y) (y)*(y)
main(){
int a,sq;
printf("input a number:
");
scanf("%d",&a);
sq=160/SQ(a+1);
printf("sq=%d\n",sq);
}

sq=160/SQ(a+1);
3 10
input a number:3
sq=160
?
sq=160/(a+1)*(a+1);
a 3 /* 160/(3+1) 40 40*(3+1)
160
9.8
#define SQ(y) ((y)*(y))
main(){
int a,sq;
printf("input a number:
");
scanf("%d",&a);
sq=160/SQ(a+1);
printf("sq=%d\n",sq);
}


5.

9.9
main(){
int i=1;
while(i<=5)
printf("%d\n",SQ(i++));
}
SQ(int y)
{
return((y)*(y));
}

9.10
#define SQ(y) ((y)*(y))
main(){
int i=1;
while(i<=5)
printf("%d\n",SQ(i++));
}

9.9 SQ Y((y)*(y)) 9.10 SQ


y(y)*(y)) 9.9 SQ(i++) 9.10
SQ(i++)
9.9 i y 1
5 15 9.10 SQ(i++)
((i++)*(i++)) i 1 i
1 i 1 2 2 i 2 2 i
1 3i 3 i 3
i 4 12 i 1 5 i 5
5*6 30i 1 6

6.

9.11
#define SSSV(s1,s2,s3,v) s1=l*w;s2=l*h;s3=w*h;v=w*l*h;
main(){
int l=3,w=4,h=5,sa,sb,sc,vv;

SSSV(sa,sb,sc,vv);
printf("sa=%d\nsb=%d\nsc=%d\nvv=%d\n",sa,sb,sc,vv);
}

SSSV 4 4 4
4

9.3
C

#include""

#include"stdio.h"
#include"math.h"

1.

#include"stdio.h"
#include<math.h>
(
)

2. include
include
3.

9.4

1.
#ifdef
1

#else
2
#endif
#define 1
2 2()#else

#ifdef

#endif
9.12
#define NUM ok
main(){
struct stu
{
int num;
char *name;
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));
ps->num=102;
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
#ifdef NUM
printf("Number=%d\nScore=%f\n",ps->num,ps->score);
#else
printf("Name=%s\nSex=%c\n",ps->name,ps->sex);
#endif
free(ps);
}

16 NUM
printf NUM printf

NUM OK

#define NUM
printf
2.
#ifndef
1
#else

2
#endif
ifdefifndef
#define 1 2

3.
#if
1
#else
2
#endif
( 0) 1 2

9.13
#define R 1
main(){
float c,r,s;
printf ("input a number: ");
scanf("%f",&c);
#if R
r=3.14159*c*c;
printf("area of round is: %f\n",r);
#else
s=c*c;
printf("area of square is: %f\n",s);
#endif
}

R 1

1
2

9.5
1.

2.

3.

4.


5.

6.

7.

2001 5 1

10

10.1

2 1

CK(ASCII 75)C 011A


() P 011A P C
P C

2001 5 1

10.2

*
i_pointer *i_pointer i_pointer

i=3;
*i_pointer=3;
3 i_pointer

10.2.1

(1)
(2)
(3) ()

*
*

int *p1;
p1 p1
p1 p1

int *p2;
/*p2 */
float *p3;
/*p3 */
char *p4;
/*p4 */
P3

2001 5 1

10.2.2

1) &:
2) *
&

&
&a a &b b
p a p
(1)
int a;
int *p=&a;
(2)
int a;
int *p;
p=&a;

int *p;
p=1000;
**p=&a
:
int i=200, x;
int *ip;
i,x, ipi,x
, ip i ip:
ip=&i;
ip i, i 1800,

ip i,:
x=*ip;
* ip , ip i ,,*ip

2001 5 1

1800 (, 1800 ), i
,
x=i;
,,,
,
int i,j,*p1,*p2;
i='a';
j='b';
p1=&i;
p2=&j;
:

:
p2=p1
p2 p1 i,*p2 i, j,:

:
*p2=*p1;
p1 p2 ,

2001 5 1

,
,,,(),
"*p2=*p1;""j=i;",,
,,,

,
int x,y*px=&x;
px x,*px x :
y=*px+5; /* x 5 y*/
y=++*px; /*px 1 y++*px ++(*px)*/
y=*px++; /* y=*px; px++*/
10.1
main()
{ int a,b;
int *pointer_1, *pointer_2;
a=100;b=10;
pointer_1=&a;
pointer_2=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pointer_1, *pointer_2);
}

1) pointer_1 pointer_2
56
pointer_1 apointer_2 b

2001 5 1

2) *pointer_1 *pointer_2 a b printf

3) *pointer_1 *pointer_2
4) 56 pointer_1=&a pointer_2=&b*pointer_1=&a
*pointer_2=&b
&*
1) pointer_1=&a&*pointer_1
2) *&a
3) (pointer_1)++ pointer_1++
10.2 a b a b
main()
{ int *p1,*p2,*p,a,b;
scanf("%d,%d",&a,&b);
p1=&a;p2=&b;
if(a<b)
{p=p1;p1=p2;p2=p;}
printf("\na=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1, *p2);
}

10.2.3

10.3 10.2

swap(int *p1,int *p2)


{int temp;
temp=*p1;
*p1=*p2;

2001 5 1

*p2=temp;
}
main()
{
int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}

swap a bswap
p1p2 main a b a b
pointer_1 pointer_2 pointer_1 apointer_2 b

if ab swap pointer_1 pointer_2

p1 &ap2 &b p1 pointer_1 ap2


pointer_2 b

swap *p1 *p2 a b

2001 5 1

p1 p2

main a b
*p1 *p2
swap(int *p1,int *p2)
{int *temp;
*temp=*p1;
/**/
*p1=*p2;
*p2=temp;
}
a b
swap(int x,int y)
{int temp;
temp=x
x=y;
y=temp;
}
main swap(a,b) swap

10.4
swap(int *p1,int *p2)
{int *p;
p=p1;

p1=p2;
p2=p;
}
main()
{
int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",*pointer_1,*pointer_2);
}

10.5 abc3
swap(int *pt1,int *pt2)
{int temp;
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
exchange(int *q1,int *q2,int *q3)
{ if(*q1<*q2)swap(q1,q2);
if(*q1<*q3)swap(q1,q3);
if(*q2<*q3)swap(q2,q3);
}
main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b; p3=&c;
exchange(p1,p2,p3);
printf("\n%d,%d,%d \n",a,b,c);
}

2001 5 1

2001 5 1

10.2.4

1.
1) &:&
scanf &
2) *:*
*
**
**

10.6
main(){
int a=5,*p=&a;
printf ("%d",*p);
}

p a printf("%d",*p) a
2.
1)

int a,*pa;
pa=&a;
/* a pa*/

int a,*pa=&a,*pb;
pb=pa;
/* a pb*/
pa,pb

int a[5],*pa;
pa=a;
( pa)

pa=&a[0];
/*
pa*/

int a[5],*pa=a;

2001 5 1

char *pc;
pc="C Language";

char *pc="C Language";

int (*pf)();
pf=f;
/*f */
2)
n pa a
pa+n,pa-n,pa++,++pa,pa--,--pa n
() n
1 1
1 1
1
int a[5],*pa;
pa=a;
/*pa a a[0]*/
pa=pa+2; /*pa a[2] pa &pa[2]*/

3)


()()
pf1 pf2 pf1 2010Hpf2
2000H 4 pf1-pf2
(2000H-2010H)/4=4 pf1 pf2 4
pf1+pf2 ?

pf1==pf2 pf1 pf2


pf1>pf2 pf1
pf1<pf2 pf2
0
p p==0 p
p!=0 p
0

#define NULL 0
int *p=NULL;

2001 5 1

0
0

10.7
main(){
int a=10,b=20,s,t,*pa,*pb; /* pa,pb */
pa=&a;
/* pa pa a*/
pb=&b;
/* pb pb b*/
s=*pa+*pb;
/* a+b ,(*pa a,*pb b)*/
t=*pa**pb;
/* a*b */
printf("a=%d\nb=%d\na+b=%d\na*b=%d\n",a,b,a+b,a*b);
printf("s=%d\nt=%d\n",s,t);
}

10.8
main(){
int a,b,c,*pmax,*pmin;
/*pmax,pmin */
printf("input three numbers:\n"); /**/
scanf("%d%d%d",&a,&b,&c);
/**/
if(a>b){
/**/
pmax=&a;
/**/
pmin=&b;}
/**/
else{
pmax=&b;
/**/
pmin=&a;}
/**/
if(c>*pmax) pmax=&c;
/**/
if(c<*pmin) pmin=&c;
/**/
printf("max=%d\nmin=%d\n",*pmax,*pmin); /**/
}

10.3

10.3.1

()

2001 5 1

int a[10] /* a 10 */
int *p
/* p */
int int

p=&a[0];
a[0] pp a 0

C 0

p=&a[0];
p=a;

int *p=&a[0];

int *p;
p=&a[0];

int *p=a;

p,a,&a[0] a 0 a[0]
p a,&a[0]

2001 5 1

10.3.2
C p p+1

p &a[0],
1) p+i a+i a[i] a i

2) *(p+i)*(a+i) p+i a+i a[i]


*(p+5)*(a+5)
a[5]
3) p[i]*(p+i)

1) a[i]
2) *(a+i)*(p+i) a
p p=a
10.9

main(){
int a[10],i;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<5;i++)
printf("a[%d]=%d\n",i,a[i]);
}

10.10

main(){
int a[10],i;
for(i=0;i<10;i++)
*(a+i)=i;

2001 5 1

for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*(a+i));
}

10.11

main(){
int a[10],I,*p;
p=a;
for(i=0;i<10;i++)
*(p+i)=i;
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*(p+i));
}

10.12
main(){
int a[10],i,*p=a;
for(i=0;i<10;){
*p=i;
printf("a[%d]=%d\n",i++,*p++);
}
}

1) p++ a++ a

2)
10.13
main(){
int *p,i,a[10];
p=a;
for(i=0;i<10;i++)
*p++=i;
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*p++);
}

10.14
main(){
int *p,i,a[10];

2001 5 1

p=a;
for(i=0;i<10;i++)
*p++=i;
p=a;
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,*p++);
}

3) 10

4) *p++++**(p++)
5) *(p++)*(++p) p a*(p++) a[0]*(++p) a[1]
6) (*p)++ p 1
7) p a i
*(p--) a[i--]
*(++p) a[++i]
*(--p) a[--i]

10.3.3

main()
{int array[10];

f(array,10);

}
f(int arr[],int n);
{

}
array arr

2001 5 1

10.15
float aver(float *pa);
main(){
float sco[5],av,*sp;
int i;
sp=sco;
printf("\ninput 5 scores:\n");
for(i=0;i<5;i++) scanf("%f",&sco[i]);
av=aver(sp);
printf("average score is %5.2f",av);
}
float aver(float *pa)
{
int i;
float av,s=0;
for(i=0;i<5;i++) s=s+*pa++;
av=s/5;
return av;
}

10.16 a n
a[0] a[n-1] a[1] a[n-2] , a[(n-1/2)]
a[n-int((n-1)/2)]i ji
0j n-1 a[i] a[j] i 1j 1 a[i] a[j]
i=(n-1)/2

2001 5 1

void inv(int x[],int n) /*x*/


{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=m;i++)
{j=n-1-i;
temp=x[i];x[i]=x[j];x[j]=temp;}
return;
}
main()
{int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
inv(a,10);
printf("The array has benn inverted:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}

inv x
10.17 10.16 inv x

void inv(int *x,int n)


/*x*/
{
int *p,temp,*i,*j,m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{temp=*i;*i=*j;*j=temp;}
return;
}
main()
{int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");

2001 5 1

for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
inv(a,10);
printf("The array has benn inverted:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
}

10.18 0

int max,min;
/**/
void max_min_value(int array[],int n)
{int *p,*array_end;
array_end=array+n;
max=min=*array;
for(p=array+1;p<array_end;p++)
if(*p>max)max=*p;
else if (*p<min)min=*p;
return;
}
main()
{int i,number[10];
printf("enter 10 integer umbers:\n");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
max_min_value(number,10);
printf("\nmax=%d,min=%d\n",max,min);
}

1) max_min_value max min

2) max_min_value
max=min=*array;
array numuber
*array *&array[0] max=min=array[0];
3) for p array+1, p array[1] p++,
p *p max min max min

2001 5 1

4) max_min_value array

10.19
int max,min;
/**/
void max_min_value(int *array,int n)
{int *p,*array_end;
array_end=array+n;
max=min=*array;
for(p=array+1;p<array_end;p++)
if(*p>max)max=*p;
else if (*p<min)min=*p;
return;
}
main()
{int i,number[10],*p;
p=number;
/*pnumber*/
printf("enter 10 integer umbers:\n");
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=number;
max_min_value(p,10);
printf("\nmax=%d,min=%d\n",max,min);
}

1)

main()
{int a[10];

f(a,10)

2)
main()
{int a[10];

f(a,10)

2001 5 1

f(int x[],int n)
{

f(int *x,int n)
{

}
3)
4)
10.20 n
void inv(int *x,int n)
{int *p,m,temp,*i,*j;
m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--)
{temp=*i;*i=*j;*j=temp;}
return;
}
main()
{int i,arr[10]={3,7,9,11,0,6,7,5,4,2},*p;
p=arr;
printf("The original array:\n");
for(i=0;i<10;i++,p++)
printf("%d,",*p);
printf("\n");
p=arr;
inv(p,10);
printf("The array has benn inverted:\n");
for(p=arr;p<arr+10;p++)
printf("%d,",*p);
printf("\n");
}

main p

10.21 10

2001 5 1

main()
{int *p,i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;i++)
printf("%d,",a[i]);
printf("\n");
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
{printf("%d ",*p);p++;}
printf("\n");
}
sort(int x[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k])k=j;
if(k!=i)
{t=x[i];x[i]=x[k];x[k]=t;}
}
}

sort
sort(int *x,int n)

10.3.4

1.
a[3][4]
0 1 2 3
4 5 6 7
8 9 10 11

int a[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}}
a 1000

2001 5 1

a
a[0]a[1]a[2]

a[0] a[0][0]a[0][1]a[0][2]a[0][3]

a a
0 1000a+1 1008

a[0] 1000*(a+0)*a a[0]


a[0]0 1000&a[0][0] a 0 0
1000aa[0]*(a+0)*a&a[0][0]
a+1 1 1008a[1]
1008&a[1][0] a 1 0 1008
a+1,a[1],*(a+1),&a[1][0]
a+ia[i]*(a+i)&a[i][0]
&a[i] a[i]&a[i] a[i]
a[i] a i
a[i]&a[i]*(a+i) a+i
a[0] a[0]+0 a[0] 0 a[0]+1
a[0] 1 a[i]+j a[i] j
&a[i][j]

2001 5 1

a[i]=*(a+i) a[i]+j=*(a+i)+j*(a+i)+j a i j
*(*(a+i)+j)
10.22
main(){
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
printf("%d,",a);
printf("%d,",*a);
printf("%d,",a[0]);
printf("%d,",&a[0]);
printf("%d\n",&a[0][0]);
printf("%d,",a+1);
printf("%d,",*(a+1));
printf("%d,",a[1]);
printf("%d,",&a[1]);
printf("%d\n",&a[1][0]);
printf("%d,",a+2);
printf("%d,",*(a+2));
printf("%d,",a[2]);
printf("%d,",&a[2]);
printf("%d\n",&a[2][0]);
printf("%d,",a[1]+1);
printf("%d\n",*(a+1)+1);
printf("%d,%d\n",*(a[1]+1),*(*(a+1)+1));
}

2.
a a[0],a[1],a[2] p

int (*p)[4]
p 4
a[0] a,a[0]&a[0][0] p+i a[i]
*(p+i)+j i j *(*(p+i)+j) i j

2001 5 1

(*)[]

*
(*
)()

10.23
main(){
int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
int(*p)[4];
int i,j;
p=a;
for(i=0;i<3;i++)
{for(j=0;j<4;j++) printf("%2d ",*(*(p+i)+j));
printf("\n");}
}

10.4
10.4.1
C
1)
10.24
main(){
char string[]=I love China!;
printf("%s\n",string);
}

string

2001 5 1

2)
10.25
main(){
char *string=I love China!;
printf("%s\n",string);
}

char c,*p=&c;
p c

char *s="C Language";


s s
string string(
) string

char *ps="C Language";

char *ps;
ps="C Language";
10.26 n
main(){
char *ps="this is a book";
int n=10;
ps=ps+n;

2001 5 1

printf("%s\n",ps);
}

book
ps ps ps= ps+10 ps
b"book"
10.27k
main(){
char st[20],*ps;
int i;
printf("input a string:\n");
ps=st;
scanf("%s",ps);
for(i=0;ps[i]!='\0';i++)
if(ps[i]=='k'){
printf("there is a 'k' in the string\n");
break;
}
if(ps[i]=='\0') printf("There is no 'k' in the string\n");
}

10.28 printf
printf PF

main(){
static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
char *PF;
PF="%d,%d,%d,%d,%d\n";
printf(PF,a,*a,a[0],&a[0],&a[0][0]);
printf(PF,a+1,*(a+1),a[1],&a[1],&a[1][0]);
printf(PF,a+2,*(a+2),a[2],&a[2],&a[2][0]);
printf("%d,%d\n",a[1]+1,*(a+1)+1);
printf("%d,%d\n",*(a[1]+1),*(*(a+1)+1));
}

10.29
strcpy cprstr pss
pds (*pds=*pss)!=`\0'
cpystr(char *pss,char *pds){
while((*pds=*pss)!='\0'){

2001 5 1

pds++;
pss++; }
}
main(){
char *pa="CHINA",b[10],*pb;
pb=b;
cpystr(pa,pb);
printf("string a=%s\nstring b=%s\n",pa,pb);
}

pss pds
`\0'
pds pss 1 pa,pb
cprstr pa pss,pb pds
cprstr cprstr
cprstr(char *pss,char*pds)
{while ((*pds++=*pss++)!=`\0');}
`\0' ASC
0
while 0 0 !=`\0'

cprstr (char *pss,char *pds)


{while (*pdss++=*pss++);}
0

10.30
cpystr(char *pss,char *pds){
while(*pds++=*pss++);
}
main(){
char *pa="CHINA",b[10],*pb;
pb=b;
cpystr(pa,pb);
printf("string a=%s\nstring b=%s\n",pa,pb);
}

10.4.2

1.
\0

2001 5 1

2.
char *ps="C Language";

char *ps;
ps="C Language";

static char st[]={"C Language"};

char st[20];
st={"C Language"};

char *ps="C Langage";

char *ps;
ps="C Language";

10.5

()

(*)();

(* )*

int (*pf)();
pf ()
10.31
int max(int a,int b){
if(a>b)return a;
else return b;
}
main(){
int max(int a,int b);
int(*pmax)();

2001 5 1

int x,y,z;
pmax=max;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=(*pmax)(x,y);
printf("maxmum=%d",z);
}

1)
2)
3)
4)

a)
b)

9 int (*pmax)(); pmax

() 11 pmax=max;
14 z=(*pmax)(x,y);

(*) ()

"(*)"*

10.6

()

*()
{

/**/
}
*

int *ap(int x,int y)


{
......
/**/
}
ap
10.32 17
main(){
int i;
char *day_name(int n);
printf("input Day No:\n");

2001 5 1

scanf("%d",&i);
if(i<0) exit(1);
printf("Day No:%2d-->%s\n",i,day_name(i));
}
char *day_name(int n){
static char *name[]={ "Illegal day",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"};
return((n<1||n>7) ? name[0] : name[n]);
}

day_name
namename
n i
printf day_name i nday_name return
n 7 1 name[0]
Illegal day 7
(i<0)exit exit(1)
exit(0)

int(*p)() int *p()


int (*p)() p
(*p)
int *p() p
*p

int *p()

10.7
10.7.1

*[]

2001 5 1

int *pa[3]
pa
10.33

main(){
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
int i;
for(i=0;i<3;i++)
printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
for(i=0;i<3;i++)
printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));
}

pa a
*a[i] i 0 *(*(a+i)+i) i i
*pa[i] i 0 p a[0] p[i] 0 i *(p+i)
0 i

"(*)"
()"*"

int (*p)[3];
3
3
int *p[3]
p p[0]p[1]p[2]

10.32

char *name[]={"Illagal day",


"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"};
name[0] "Illegal day" name[1]

2001 5 1

"Monday"......

10.34 name
name name
day_name name name i
n day_ name pp1 pp2
pp1 name[0]
(*name)pp2 name[n]*(name+ n) pp1 pp2
ps i ps
main(){
static char *name[]={ "Illegal day",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"};
char *ps;
int i;
char *day_name(char *name[],int n);
printf("input Day No:\n");
scanf("%d",&i);
if(i<0) exit(1);
ps=day_name(name,i);
printf("Day No:%2d-->%s\n",i,ps);
}
char *day_name(char *name[],int n)
{
char *pp1,*pp2;
pp1=*name;
pp2=*(name+n);
return((n<1||n>7)? pp1:pp2);
}

10.35 5
#include"string.h"
main(){
void sort(char *name[],int n);
void print(char *name[],int n);
static char *name[]={ "CHINA","AMERICA","AUSTRALIA",
"FRANCE","GERMAN"};
int n=5;
sort(name,n);

2001 5 1

print(name,n);
}
void sort(char *name[],int n){
char *pt;
int i,j,k;
for(i=0;i<n-1;i++){
k=i;
for(j=i+1;j<n;j++)
if(strcmp(name[k],name[j])>0) k=j;
if(k!=i){
pt=name[i];
name[i]=name[k];
name[k]=pt;
}
}
}
void print(char *name[],int n){
int i;
for (i=0;i<n;i++) printf("%s\n",name[i]);
}

()

()

sort name
n print
sort main name
sort print sort
strcmp strcmp
name[k] name[j]

10.7.2

2001 5 1

name
Name name
name+1 mane[i]name+1
pP

char **p;
p *,*(*p)*p *
* p
*p p
name
name name
name+1 mane[i]name+1
pP

p=name+2;
printf(%o\n,*p);
printf(%s\n,*p);
printf name[2]
printf
%sGreat Wall
10.36
main()
{char *name[]={"Follow me","BASIC","Great Wall","FORTRAN","Computer desighn"};
char **p;
int i;
for(i=0;i<5;i++)
{p=name+i;

2001 5 1

printf("%s\n",*p);
}
}

p
10.37
main()
{static int a[5]={1,3,5,7,9};
int *num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
int **p,i;
p=num;
for(i=0;i<5;i++)
{printf("%d\t",**p);p++;}
}

10.7.3 main
main main main
main main
argc argvmain
main (argc,argv)
argc(),argv( )
main
main (int argc,char *argv[])
main
main ? ,main
DOS
main
DOS
C:\> ;
main
,main argc
()argc

C:\>E24 BASIC foxpro FORTRAN


E24 4 argc 4argv
()

2001 5 1

10.38
main(int argc,char *argv){
while(argc-->1)
printf("%s\n",*++argv);
}

e24.exe A

C:\>a:e24 BASIC foxpro FORTRAN

BASIC
foxpro
FORTRAN
4 main argc 4argv 4 4
while argv 1 argv 1
printf *++argv 1
argv[1] BASIC
e24

10.8
10.8.1

int i;
int *p
int a[n];
int *p[n];
int (*p)[n];
int f();
int *p();
int (*p)();
int **p;

i
p
a n
p n
p n
f
p
p
P

2001 5 1

10.8.2

1)
p++p--p+ip-ip+=ip-=i

2)
p=&a;
( a p)
p=array;
( array p)
p=&array[i];
( array i p)
p=max;
(max max p)
p1=p2;
(p1 p2 p2 p1)

p=1000;
3)
p=NULL;
4)

5)

10.8.3 void
ANSI void

11
11.1


structure

struct
{};

struct stu
{
int num;
char name[20];
char sex;
float score;
};
stu 4 num
name sex score

stu 4

11.2
stu
1.

struct stu
{
int num;

char name[20];
char sex;
float score;
};
struct stu boy1,boy2;
boy1 boy2 stu

#define STU struct stu


STU
{
int num;
char name[20];
char sex;
float score;
};
STU boy1,boy2;
2.

struct stu
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;

struct
{

};
3.

struct
{
int num;
char name[20];
char sex;
float score;
}boy1,boy2;

struct
{

};

boy1,boy2

boy1,boy2 stu stu

struct date
{
int month;
int day;
int year;
};
struct{
int num;
char name[20];
char sex;
struct date birthday;
float score;
}boy1,boy2;
date month()day()year()
boy1 boy2 birthday data

11.3
ANSI C

boy1.num

boy2.sex

boy1.birthday.month

11.4

11.1
main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1,boy2;
boy1.num=102;
boy1.name="Zhang ping";
printf("input sex and score\n");
scanf("%c %f",&boy1.sex,&boy1.score);
boy2=boy1;
printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}

num name
name scanf
sex score boy1 boy2
boy2

11.5

11.2
main()
{
struct stu
/**/
{
int num;
char *name;
char sex;
float score;
}boy2,boy1={102,"Zhang ping",'M',78.5};
boy2=boy1;

printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}

boy2,boy1 boy1 main


boy1 boy2 printf boy2

11.6

struct stu
{
int num;
char *name;
char sex;
float score;
}boy[5];
boy 5 boy[0]boy[4] struct
stu

struct stu
{
int num;
char *name;
char sex;
float score;
}boy[5]={
{101,"Li ping","M",45},
{102,"Zhang ping","M",62.5},
{103,"He fang","F",92.5},
{104,"Cheng ling","F",87},
{105,"Wang ming","M",58};
}

11.3
struct stu
{
int num;
char *name;

char sex;
float score;
}boy[5]={
{101,"Li ping",'M',45},
{102,"Zhang ping",'M',62.5},
{103,"He fang",'F',92.5},
{104,"Cheng ling",'F',87},
{105,"Wang ming",'M',58},
};
main()
{
int i,c=0;
float ave,s=0;
for(i=0;i<5;i++)
{
s+=boy[i].score;
if(boy[i].score<60) c+=1;
}
printf("s=%f\n",s);
ave=s/5;
printf("average=%f\ncount=%d\n",ave,c);
}

boy 5 main
for score s
score 60()
C 1
11.4
#include"stdio.h"
#define NUM 3
struct mem
{
char name[20];
char phone[10];
};
main()
{
struct mem man[NUM];
int i;
for(i=0;i<NUM;i++)
{
printf("input name:\n");
gets(man[i].name);
printf("input phone:\n");

gets(man[i].phone);
}
printf("name\t\t\tphone\n\n");
for(i=0;i<NUM;i++)
printf("%s\t\t\t%s\n",man[i].name,man[i].phone);
}

mem name phone


man mem for gets
for printf

11.7
11.7.1

struct *
stu stu pstu

struct stu *pstu;


stu pstu

boy
stu
pstu=&boy

pstu=&stu

&stu

(*).

->

(*pstu).num

pstu->num
(*pstu).*
*pstu.num *(pstu.num)

11.5
struct stu
{
int num;
char *name;
char sex;
float score;
} boy1={102,"Zhang ping",'M',78.5},*pstu;
main()
{
pstu=&boy1;
printf("Number=%d\nName=%s\n",boy1.num,boy1.name);
printf("Sex=%c\nScore=%f\n\n",boy1.sex,boy1.score);
printf("Number=%d\nName=%s\n",(*pstu).num,(*pstu).name);
printf("Sex=%c\nScore=%f\n\n",(*pstu).sex,(*pstu).score);
printf("Number=%d\nName=%s\n",pstu->num,pstu->name);
printf("Sex=%c\nScore=%f\n\n",pstu->sex,pstu->score);
}

stu stu boy1


stu pstu main pstu boy1
pstu boy1 printf boy1

.
(*).
->

11.7.2

ps ps 0 ps+1 1
ps+i i
11.6
struct stu
{
int num;

char *name;
char sex;
float score;
}boy[5]={
{101,"Zhou ping",'M',45},
{102,"Zhang ping",'M',62.5},
{103,"Liou fang",'F',92.5},
{104,"Cheng ling",'F',87},
{105,"Wang ming",'M',58},
};
main()
{
struct stu *ps;
printf("No\tName\t\t\tSex\tScore\t\n");
for(ps=boy;ps<boy+5;ps++)
printf("%d\t%s\t\t%c\t%f\t\n",ps->num,ps->name,ps->sex,ps->score);
}

stu boy main


ps stu for 1 ps boy
5 boy

ps=&boy[1].sex;

ps=boy;()

ps=&boy[0];( 0 )

11.7.3

ANSI C

11.7
struct stu
{
int num;
char *name;
char sex;
float score;}boy[5]={

{101,"Li ping",'M',45},
{102,"Zhang ping",'M',62.5},
{103,"He fang",'F',92.5},
{104,"Cheng ling",'F',87},
{105,"Wang ming",'M',58},
};
main()
{
struct stu *ps;
void ave(struct stu *ps);
ps=boy;
ave(ps);
}
void ave(struct stu *ps)
{
int c=0,i;
float ave,s=0;
for(i=0;i<5;i++,ps++)
{
s+=ps->score;
if(ps->score<60) c+=1;
}
printf("s=%f\n",s);
ave=s/5;
printf("average=%f\ncount=%d\n",ave,c);
}

ave psboy
main ps boy
ps boy ps ave ave

11.8

int n;
scanf("%d",&n);
int a[n];

1. malloc

(*)malloc(size)
"size"

(*)
size

pc=(char *)malloc(100);
100
pc
2. calloc
calloc

(*)calloc(n,size)
n size

(*)
calloc malloc n

ps=(struet stu*)calloc(2,sizeof(struct stu));


sizeof(struct stu) stu stu
2 stu ps
2. free

free(void*ptr);
ptr ptr
malloc calloc
11.8
main()
{
struct stu
{
int num;
char *name;
char sex;
float score;
} *ps;
ps=(struct stu*)malloc(sizeof(struct stu));

ps->num=102;
ps->name="Zhang ping";
ps->sex='M';
ps->score=62.5;
printf("Number=%d\nName=%s\n",ps->num,ps->name);
printf("Sex=%c\nScore=%f\n",ps->sex,ps->score);
free(ps);
}

stu stu ps stu


ps ps ps
printf free ps

11.9
7.8

()

0
num
name sex score

struct stu
{ int num;
int score;

struct stu *next;


}
next stu

1.
2.
3.
4.

11.9
creat
#define NULL 0
#define TYPE struct stu
#define LEN sizeof (struct stu)
struct stu
{
int num;
int age;
struct stu *next;
};
TYPE *creat(int n)
{
struct stu *head,*pf,*pb;
int i;
for(i=0;i<n;i++)
{
pb=(TYPE*) malloc(LEN);
printf("input Number and Age\n");
scanf("%d%d",&pb->num,&pb->age);
if(i==0)
pf=head=pb;
else pf->next=pb;
pb->next=NULL;
pf=pb;
}
return(head);
}
TYPE struct stu LEN
sizeof(struct stu)
stu
creat n stu
creat stu head pf
pb

11.10

11.10.1
1.
enum { };

weekday 7 weekday

2.

a,b,c weekday
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;

enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

11.10.2

1.
weekday
sun=5;
mon=2;
sun=mon;

2. 0 012
weekday sun 0mon 1,sat 6
11.10
main(){

enum weekday
{ sun,mon,tue,wed,thu,fri,sat } a,b,c;
a=sun;
b=mon;
c=tue;
printf("%d,%d,%d",a,b,c);
}

a=sum;
b=mon;

a=0;
b=1;

a=(enum weekday)2;
2 a
a=tue;

11.11
main(){
enum body
{ a,b,c,d } month[31],j;
int i;
j=a;
for(i=1;i<=30;i++){
month[i]=j;
j++;
if (j>d) j=a;
}
for(i=1;i<=30;i++){
switch(month[i])
{
case a:printf(" %2d %c\t",i,'a'); break;
case b:printf(" %2d %c\t",i,'b'); break;
case c:printf(" %2d %c\t",i,'c'); break;
case d:printf(" %2d %c\t",i,'d'); break;
default:break;
}
}
printf("\n");

11.11 typedef

typedef
a,b,
int a,b;
int int integer
typedef
typedef int INTEGER
INTEGER int

INTEGER a,b;

int a,b;
typedef

typedef char NAME[20];


NAME 20
NAME
NAME a1,a2,s1,s2;

char a1[20],a2[20],s1[20],s2[20]

typedef struct stu


{ char name[20];
int age;
char sex;
} STU;
STU stu STU
STU body1,body2;
typedef
typedef

typedef typedef

12

(bit)

12.1
&
|
^
~
<<
>>

12.1.1

"&"
1 1 0
9&5
00001001
(9 )
&00000101
(5 )
00000001
(1 )
9&5=1
0 a 0
a&255 ( 255 0000000011111111)
12.1
main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}

12.1.2

|
1 1

9|5
00001001
|00000101
00001101
( 13) 9|5=13
12.2
main(){
int a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}

12.1.3

^
1 9^5

00001001
^00000101
00001100
( 12)
12.3
main(){
int a=9;
a=a^5;
printf("a=%d\n",a);
}

12.1.4

9
~(0000000000001001)1111111111110110

12.1.5

<<<<
<< 0

a<<4
a 4 a=00000011( 3) 4 00110000(
48)

12.1.6

>>>>
>>

a=15
a>>2
000001111 00000011( 3)

0 1 0 1 Turbo C
1
12.4
main(){
unsigned a,b;
printf("input a number:
");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}

!
12.5
main(){
char a='a',b='b';
int p,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}

12.2

0 1

1.

struct
{ };

struct bs
{
int a:8;
int b:2;
int c:6;
};

struct bs
{
int a:8;
int b:2;
int c:6;
}data;
data bs a 8 b 2 c 6

1)

struct bs
{
unsigned a:4
unsigned :0
/**/
unsigned b:4
/**/
unsigned c:4
}
a 4 4 0 b
4 c 4
2)
8

3)

struct k
{
int a:1
int :2
/* 2 */
int b:3
int c:2
};

2.

12.6
main(){
struct bs
{
unsigned a:1;
unsigned b:3;
unsigned c:4;
} bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15;
printf("%d,%d,%d\n",bit.a,bit.b,bit.c);
pbit=&bit;
pbit->a=0;
pbit->b&=3;
pbit->c|=1;
printf("%d,%d,%d\n",pbit->a,pbit->b,pbit->c);
}

bs a,b,c bs bit
bs pbit 91011
() 12
13 bit pbit 14 a
0 15 "&="
pbit->b=pbit->b&3
b 7 3 3(111&011=011, 3)
16 "|="
pbit->c=pbit->c|1
15 17

12.3
1.

&=,|=,^=,>>=,<<=
2.

3.

4.

13
13.1 C

()
()

printf,putchar

scanf,getchar
ASCII ASCII
ASCII
5678
ASCII
00110101 00110110 00110111 00111000

5
6
7
8
4
ASCII
ASCII DOS TYPE

5678
00010110 00101110
C

()

13.2


FILE *
FILE
FILE

FILE *fp
fp FILE fp
fp

13.3

13.3.1

(fopen )

fopen
=fopen(,);

FILE

FILE *fp
fp=("file a","r");
file a fp

FILE *fphzk
fphzk=("c:\\hzk16","rb")
C hzk16
\\
12

rt

wt

at

rb

wb

ab

rt+

wt+

at+

rb+

wb+

ab+

1) r,w,a,t,b+
r(read):

w(write):

a(append):

t(text):

b(banary):

+:

2) r
3) w

4) a

5) fopen NULL

6)
if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror on open c:\\hzk16 file!");
getch();
exit(1);
}
C hzk16
error on open c:\ hzk16 file! getch()

exit(1)
7) ASCII
ASCII

8) ()()()

13.3.2

fclose

fclose
fclose()


fclose(fp);
fclose 0

13.4

fgetc fputc
fgets fputs
freed fwrite
fscanf fprinf
stdio.h

13.4.1

fgetc fputc

()

1. fgetc
fgetc
=fgetc()

ch=fgetc(fp);
fp ch
fgetc
1) fgetc
2)

fgetc(fp);

3)
fgetc
fgetc

13.1 c1.doc
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\jrzh\\example\\c1.txt","rt"))==NULL)

{
printf("\nCannot open file strike any key exit!");
getch();
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);

fp,
d:\\jrzh\\example\\ex1_1.c fp
12
( EOF)
EOF

2. fputc
fputc
fputc()

fputc('a',fp);
a fp
fputc
1)

2)
3) fputc EOF

13.2
#include<stdio.h>
main()
{
FILE *fp;
char ch;
if((fp=fopen("d:\\jrzh\\example\\string","wt+"))==NULL)
{
printf("Cannot open file strike any key exit!");

getch();
exit(1);
}
printf("input a string:\n");
ch=getchar();
while (ch!='\n')
{
fputc(ch,fp);
ch=getchar();
}
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}

6 string 13

19 rewind fp
20 25
13.3
()
#include<stdio.h>
main(int argc,char *argv[])
{
FILE *fp1,*fp2;
char ch;
if(argc==1)
{
printf("have not enter file name strike any key exit");
getch();
exit(0);
}
if((fp1=fopen(argv[1],"rt"))==NULL)
{
printf("Cannot open %s\n",argv[1]);
getch();

exit(1);
}
if(argc==2) fp2=stdout;
else if((fp2=fopen(argv[2],"wt+"))==NULL)
{
printf("Cannot open %s\n",argv[1]);
getch();
exit(1);
}
while((ch=fgetc(fp1))!=EOF)
fputc(ch,fp2);
fclose(fp1);
fclose(fp2);
}

main fp1 fp2


18
fp2 () 25 28
1 2
stdout
string OK DOS type OK

13.4.2

fgets fputs

1. fgets

fgets(,n,);
n n-1
'\0'

fgets(str,n,fp);
fp n-1 str
13.4 string 10
#include<stdio.h>
main()
{
FILE *fp;
char str[11];
if((fp=fopen("d:\\jrzh\\example\\string","rt"))==NULL)
{
printf("\nCannot open file strike any key exit!");
getch();
exit(1);

}
fgets(str,11,fp);
printf("\n%s\n",str);
fclose(fp);
}

str 11 string
10 str '\0'
str 13.1
fgets
1) n-1 EOF
2) fgets
2. fputs
fputs
fputs(,);

fputs(abcd,fp);
abcd fp
13.5 13.2 string
#include<stdio.h>
main()
{
FILE *fp;
char ch,st[20];
if((fp=fopen("string","at+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("input a string:\n");
scanf("%s",st);
fputs(st,fp);
rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)
{
putchar(ch);
ch=fgetc(fp);
}
printf("\n");
fclose(fp);
}

string 6
string fputs string 15
rewind

13.4.3

fread fwtrite

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);
:
buffer fread fwrite

size
count
fp

fread(fa,4,5,fp);
fp 4 () fa 5
5 fa
13.6

#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;
main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("d:\\jrzh\\example\\stu_list","wb+"))==NULL)
{

printf("Cannot open file strike any key exit!");


getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
fwrite(pp,sizeof(struct stu),2,fp);
rewind(fp);
fread(qq,sizeof(struct stu),2,fp);
printf("\n\nname\tnumber

age

addr\n");

for(i=0;i<2;i++,qq++)
printf("%s\t%5d%7d

%s\n",qq->name,qq->num,qq->age,qq->addr);

fclose(fp);
}

stu, boya boyb


pp qqpp boya,qq boyb 16 stu_list

13.4.4

fscanf fprintf

fscanf fprintf scanf printf


fscanf fprintf

fscanf(,,);
fprintf(,,);

fscanf(fp,"%d%s",&i,s);
fprintf(fp,"%d%c",j,ch);
fscanf fprintf 10.6 10.7
13.7 fscanf fprintf 10.6
#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boya[2],boyb[2],*pp,*qq;

main()
{
FILE *fp;
char ch;
int i;
pp=boya;
qq=boyb;
if((fp=fopen("stu_list","wb+"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
printf("\ninput data\n");
for(i=0;i<2;i++,pp++)
scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr);
pp=boya;
for(i=0;i<2;i++,pp++)
fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp->
addr);
rewind(fp);
for(i=0;i<2;i++,qq++)
fscanf(fp,"%s %d %d %s\n",qq->name,&qq->num,&qq->age,qq->addr);
printf("\n\nname\tnumber
age
addr\n");
qq=boyb;
for(i=0;i<2;i++,qq++)
printf("%s\t%5d %7d
%s\n",qq->name,qq->num, qq->age,
qq->addr);
fclose(fp);
}

10.6 fscanf fprintf


pp,qq
25 32

13.5

13.5.1

rewind fseek
rewind
rewind();

fseek
fseek
fseek(,,);

long 64KB
L

SEEK_SET

SEEK_CUR

SEEK_END

fseek(fp,100L,0);
100
fseek

13.5.2

fread fwrite

13.8 stu_list
#include<stdio.h>
struct stu
{
char name[10];
int num;
int age;
char addr[15];
}boy,*qq;
main()
{
FILE *fp;
char ch;

int i=1;
qq=&boy;
if((fp=fopen("stu_list","rb"))==NULL)
{
printf("Cannot open file strike any key exit!");
getch();
exit(1);
}
rewind(fp);
fseek(fp,i*sizeof(struct stu),0);
fread(qq,sizeof(struct stu),1,fp);
printf("\n\nname\tnumber
age
addr\n");
printf("%s\t%5d %7d
%s\n",qq->name,qq->num,qq->age,
qq->addr);
}

stu_list 13.6
boy stu qq boy
22 i 1 stu

13.6

13.6.1

feof

feof();
1 0

13.6.2

ferror
ferror();
ferror 0

13.6.3

clearerr

clearerr();
0

13.7
C ".h"
".h"


".h"
Turbo C ".h"
Turbo C
ALLOC.H
()
ASSERT.H
assert
BIOS.H
IBMPC ROM BIOS
CONIO.H
DOS I/O
CTYPE.H
( isalpha toascii )
DIR.H

DOS.H
MSDOS 8086
ERRON.H

FCNTL.H
open
FLOAT.H

GRAPHICS.H

IO.H
I/O
LIMIT.H

MATH.H
HUGE VAL matherr
matherr
MEM.H
( STRING.H )
PROCESS.H
spawn EXEC
SETJMP.H
longjmp setjmp jmp buf
SHARE.H

SIGNAL.H
SIG[ZZ(Z] [ZZ)]IGN SIG[ZZ(Z] [ZZ)]DFL
rajse signal
STDARG.H
( vprintf,vscarf )
STDDEF.H

STDIO.H
Kernighan Ritchie Unix System V
I/O stdin,stdout stderr I/O

STDLIB.H
/
STRING.H

SYS\STAT.H

SYS\TYPES.H ftime timeb


SYS\TIME.H
time[ZZ(Z] [ZZ)]t

TIME.H
asctimelocaltime gmtime ctime
difftime gmtime localtime stime
VALUE.H
Unix System V

13.8
1.
2.
3.
4.
5.

ASCII

6.
7.

You might also like