Professional Documents
Culture Documents
《C语言程序设计》谭浩强
《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
Compile
1
1.13.7 Project
1.13.8 Options
1.13.9 Debug
1.13.10
Break/watch
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
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
204
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
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
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
()
/**/
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)
(_)
3s
s*T
*
-3x
bowy-1 -()
(1) C C
C
2.
(1)
int,double
(2)
1.3 if else
(3)
include
3.
4.
5.
C
6.
C /**//**/
2001 5 1
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 ,
2001 5 1
1.13.6 Compile
Alt+C Compile ,
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
Code generation,
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)
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.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
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
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
2001 5 1
256( 0)03A2()-0127()
3) 0X 0x 0~9A~F
a~f
5A ( 0X)0X3H ()
4) 16 16
065535
-32768+32767 00177777
0X00XFFFF 0x00xFFFF
Ll
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
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
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
00
00
00
00
00
11
01
00
00
00
00
00
00
00
00
00
00
00
00
00
11
01
...
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
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
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);
}
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
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("%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);
}
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
#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)
!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||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);
}
");
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);
}
2001 5 1
switch
+,-,*,/
2001 5 1
6
6.1
1) goto if
2) while
3) do-while
4) for
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
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);
}
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
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);
}
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]
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
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
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'
\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]
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
()
{
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
( )
()
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)
{
}
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!
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]);
}
2001 5 1
a a[5]a[6]a[7]
c.
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.
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
}
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
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)
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 ()
()
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=(x>y)?x:y;
x,y
1.
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++));
}
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
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
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
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
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";
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 ?
#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
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
inv x
10.17 10.16 inv x
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);
}
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
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 *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'
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";
char st[20];
st={"C Language"};
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)
() 11 pmax=max;
14 z=(*pmax)(x,y);
(*) ()
"(*)"*
10.6
()
*()
{
/**/
}
*
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()
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
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
2001 5 1
10.38
main(int argc,char *argv){
while(argc-->1)
printf("%s\n",*++argv);
}
e24.exe A
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
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
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);
}
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);
}
11.7
11.7.1
struct *
stu 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);
}
.
(*).
->
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);
}
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
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);
}
11.9
7.8
()
0
num
name sex score
struct stu
{ int num;
int score;
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;
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
char a1[20],a2[20],s1[20],s2[20]
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);
}
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)
{
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);
}
13.4.4
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);
}
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
TIME.H
asctimelocaltime gmtime ctime
difftime gmtime localtime stime
VALUE.H
Unix System V
13.8
1.
2.
3.
4.
5.
ASCII
6.
7.