nullnull
C语言入门
网上资料整理 第一章 计算机语言与C语言概述 第一章 计算机语言与C语言概述 1.1 计算机语言概念
■计算机语言定义
计算机能够识别和接受的语言。
要使计算机按自己的意图工作,必须使用计算机所能接受、理解和执行的指令指挥计算机工作。null ■计算机语言的种类
机器语言
低级语言 汇编语言
(面向计算机)
BASIC 入门语言
F77 科学计算
高级语言 Foxpro 数据库管理
(面向问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
) C 多用途 计算机语言…………null•机器语言
最早问世,用二进制代码构成指令。
如: 100000 (+) 110000 (-)
用机器语言编程的缺点:
─繁琐、不直观、不易调试。
如计算y=2x2+3x-1需要七八条指令。
─移植性差。 依赖于计算机。 null•汇编语言
用符号构成指令,如:MOV、ADD
用汇编语言编程:
相对直观,但仍繁琐,仍是面向计算机的语言。
汇编语言是计算机间接接受的语言null•高级语言
与低级语言相比,有根本性的区别:
是面向问题的语言。
高级语言的一条指令(语句):
y=2*x*x+3*x-1; 对应于:y=2x2+3x-1
y=sin(x); 对应于:y=sinx
用高级语言编程:
直观、易懂、移植性好(不依赖于具体计算机)null上机运行高级语言程序需经过编译:
编译 执行
要上机完成一个计算问题,主要的任务就是用高级语言编写出相应的源程序。即至少要学会一种计算机语言。
高级语言源程序 机器指令
目的程序结果编译程序null1.2 C语言的特点
集高级语言和低级语言的优点于一身:
●能实现低级语言的大部分功能(如直接访问内存物理地址、进行位操作等)。
●图形功能强。
●运算符和数据结构丰富。
●语法限制不太严格,程序设计自由度大。
●生成目标代码质量高,程序执行效率高。
null1.3 简单的C程序介绍
例1:
main() 主函数
说明
关于失联党员情况说明岗位说明总经理岗位说明书会计岗位说明书行政主管岗位说明书
{ 程序框架
printf(“abcdef”); 函数体
} 语句
程序的功能是输出字符串:abcdef null例2:求两数之和。
main()
{ int a,b,c; a
a=100; b=50; b
c=a+b; c
printf(“\n c=%d”,c);
}
程序运行结果:c=150 null例3:求两数中的最大值。 函数类型 函数名 形参
main() int max (int x,int y)
{ int a,b,c; { int z;
scanf(“%d,%d”,&a,&b); if(x>y) z=x;
c=max(a,b); else z=y;
printf(“\nmax is:%d”,c); return(z);
} }
a x
b y
c z (两个函数组成)
353555null 总结上例可知:
(1) C程序由函数构成。
(2) 函数由两部分组成:
函数说明部分:函数名、函数类型、形参名、形参类型。
函数体:实现函数的具体操作;由语句构成。
(3) 程序总是从main函数开始执行。
(4) 书写格式自由。
(5)语句必须有分号。 : 第三章 数据类型、运算符
与 表达式
3.1 C 的数据类型
●基本类型 (整型、实型、字符型、枚举型)
●构造类型 (略)
●指针类型 (略)
●空类型 各类型包含常量与变量 第三章 数据类型、运算符
与 表达式
3.1 C 的数据类型
●基本类型 (整型、实型、字符型、枚举型)
●构造类型 (略)
●指针类型 (略)
●空类型 各类型包含常量与变量null 3.2 常量与变量
■常量与符号常量
常量
在程序运行过程中其值保持不变的量。
符号常量
用来代表一个常量的标识符。
#define PI 3.1415926
null 例:
#define PI 3.1415926
main()
{
float r=2,c;
c=2*PI*r;
printf(“%f”,c);
}
null ■变量
其值可以改变的量。
变量的三要素:
① 变量名
每个变量有一个名字,作为识别该变量的标识符。
② 变量的值
每个变量有一个值,变量的值是随时可以改变的。
null
③变量的存储单元
每个变量占据一个内存单元,用于存放变量的值。
变量名
a
变量值
存储单元
3null 变量的命名
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
:
由字母、数字和下划线组成
以字母或下划线开头
a、x1、y_2、_b1、_1c 合法
1x、a+2、Ф、Ω 不合法
变量必须先定义后使用。
程序中何时使用常量?何时使用变量?null 3.3 整型数据
■整型常量
即整常数,c的整常数有三种形式:
①十进制整数
与数学中的整数一致,如:100,123,15等。
②八进制整数
以0开头的整数,如:010,07,020等。
③十六进制整数
以0x开头的整数,如:0x10,0xff,0x2a等。null ■整型变量
用于存放整数的变量。
分4种类型:
①基本型:int a
16位,可表示的数值范围:-32768—32767
②短整型:short int b
16位,可表示的数值范围:-32768—32767
③长整型:long int c
32位,数值范围:-2147483648—2147483647null ④无符号型:加上 unsigned
只存放正数。
如:unsigned int x
变量x为无符号整数,16位全表示数码,
数值范围:0—65535
在程序设计中,如果要使用整型变量,必须首先选择以上类型符来定义变量,然后才能使用; null 例:
main() 定义
{ int a,b,c;
a=100; b=50; 使用
c=a+b;
printf(“%d”,c);
}
一般根据什么原则选择变量的类型?
null 3.4 实型数据
■实型常量
可使用两种形式表示:
①小数形式:如 1.23, 3.1415926 15.48
②指数形式:如 1e-20 1.23e5
null ■实型变量
用于存放实数的变量
分单精度和双精度两种:
float a,b
定义a和b为单精度型变量
32位,7位有效数字,10-38—1038
double x,y
定义x和y为双精度型变量
64位,15位有效数字,10-308—10308null 例:
main()
{ float r,c; double r,c;
r=5;
c=2*3.1415926*r;
printf(“%f”,c);
}
null
3.5 字符型数据
■字符常量
用单引号括起来的一个字符。
’a’,’x’,’*’,’1’等
除此外,以’\’开头的字符如’\n’,’\t’等
称为转义字符,祥见书表3.3
null
■字符型变量
用于存放字符的变量。
char c1,c2 定义c1和c2为字符型变量
c1=’a’; c2=’b’; 字符赋值
字符型变量存放一个字符,占据一个字节
null ■字符型数据的存储形式
存放ASCII码 不是 而是
如字符’a’在内存中存放97,’b’ 存放98。
与整数的存储形式一致,它们之间可以通用
一个字符数据既可以作字符用,也可以作整数用(取其ASCII代码)。
如:32+’a’相当于 32+97
若 int x; char c;
则 x=’a’; c=97; x=97; c=’a’; 都允许 a97null ■字符串常量
用双引号括起来的字符序列。
如:”abcde”,”china”
”a”也属字符串。 注意”a”与’a’的区别。
对于:
char c;
c=”a”; 用法错误
null 字符串中每个字符各占一个字节,并且在字符串结尾加上一个结束标记’\0’
如:”china” 在内存中占6个字节。
c h i n a \0
C语言中专门的字符串变量,可用字符数组存放(以后介绍)。
null 3.6 变量赋初值
在定义变量的同时给相应的变量赋初值。
如:
int a=3; a
float b=5.2;
char c=’a’;
int x=y=z=6;
效果:
在给变量分配内存单元的同时在相应的单 元中存放初值。
3null 3.7 各数值型数据间的混合运算
整型、实型、字符型数据间可以进行混合运算,如:
10-‘a’*1.5
运算时,参加运算的两个数据如果类型不同,则首先将其类型转换成一致再运算,转换规则是:
将优先级低的类型转换到优先级高的类型
null
数据类型的优先级:
高
double float
long
unsignde
低
int char
null 3.8 算术运算符与算术表达式
■基本的算术运算符
+ - * / %
■算术表达式
用算术运算符将运算对象连接起来的式子
用于表达数学公式的式子
如:2*x+y-1/a
表达式经过运算最终得到一个值:
算术表达式的值
null ■运算符的优先级与结合性
优先级:
在对表达式求值时,如果存在多个运算符,则运算的先后次序按运算符的优先级别从高到底进行。
运算符的优先级关系为:
高:* / %
低:+ -
如:a-2*x 先算 *
2*(a+2) 有括号的情况?
null 结合性:
如果在一个运算对象两边的运算符的优先级相同,则按规定的“结合方向”处理。
如:a-b+c
b与-结合是从左到右,称“左结合性”。
b与+结合是从右到左,称“右结合性”。
每个运算符都有相应的优先级和结合性。
基本算术运算符都是左结合性。
null
■强制类型转换
可以用强制类型转换运算符将一个表达式的值转换成所需类型:
如:
(int)(x+y)
(float)(7%3)
null
应用举例:
int a=200,b=300,c;
c=a*b/100; ?
可知,有自动转换和强制转换,
当自动转换达不到目的时,可用强制转换。
c=(long)a*b/100;c=(long)(a*b)/100;null ■自增、自减运算符
自增运算符:++ 使变量值加1
自减运算符:-- 使变量值减1
两种用法:
++i, --i 先加(减)后用
i++, i-- 先用后加(减)
两种用法对i效果一样,但表达式的值不同。
例:假设i的原值为5:
j=++i; j=? j=i++; j=?
null 注意:
●++和--只能用于变量。
如:3++和(a+1)++ 不合法
●++和--为右结合性。
(-i)++
-i++
-(i++)
若i的原值是5,则该表达式的值是多少?
null
例:分析执行下列语句后的结果:
a=5; a b c d
b=a++;
c=--a-b++;
d=(a++)-(++b)+c--;
5565067-26-1null 两种特殊情况:
① k=(i++)+(i++)+(i++)
② i+++j
是 i+(++j) 还是 (i++)+j ?
i++虽然与i=i+1等效,但使用自增自减运算符的代码优化程度好,因而经常使用;但用时需特别小心。
null 3.9 赋值运算符和赋值表达式
■赋值运算符
“=”称赋值运算符,其作用是将一个数据赋给一个变量。
如: a=5
不要理解为“等号”。
执行赋值运算的结果,是将右边的数据存入左边变量所对应的内存单元中。null ■赋值规则
如果赋值运算符两侧的类型不一致,则在赋值时要进行类型转换,转换规则为:
●实型→整变量
舍去小数部分。
int a=5.5; a中为5。
●整型→实变量
数值不变,以浮点形式存储。
●字符型→整变量
放在整形变量低8位。保持原值不变原则。
int a=‘A’;null ■复合赋值运算符
在赋值运算符前加上其它运算符,可以构成复合赋值运算符。
a+=3 —— a=a+3
b-=x+5 —— b=b-(x+5)
x*=c-6 —— x=x*(c-6)
y/=a*4 —— y=y/(a*4)
k%=b-2 —— k=k%(b-2)
属于高效率运算符。
null ■赋值表达式
主要实现赋值运算的表达式。
一般形式:
<变量>=<表达式>
如: a=5 y=2*x+3 a=a+1 不是衡等
作用:将右边表达式的值赋给左边的变量。
赋值表达式的值取左边变量的值。null 赋值表达式右边的<表达式>可以是任何表达式,如:
a=(b=5) 赋值表达式中包含赋值表达式
赋值运算符的优先级低于所有算术运算符,且是右结合性。
a=(b=5) 与 a=b=5 等效。
null 例:计算以下表达式的值:
a=b=c=5
a=5+(c=6)
a=(b=4)+(c=6)
a=(b=4.5)+(c=6.5) (a、b、c为整型变量)
a+=a-=a*a (设a的原值为3)
null
赋值表达式是C语言中的一个重要成分,在赋值表达式后加一分号就成为常用的赋值语句。如 y=2*x+1;
赋值表达式作为表达式的一种,可以出现在任何表达式中,如:
x+2-(b/3-(a=k-5)+’b’
null 3.10 逗号表达式
逗号也是一种运算符,用它对两个表达式实现连接运算。
3+5,6+8 称逗号表达式。
逗号表达式的一般形式:
表达式1,表达式2
取表达式2的值作为整个逗号表达式的值。
如: a=3*5,a*4
逗号表达式的值为:60
null 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如:
(a=3*5,a*4),a+5
因此,逗号表达式的一般形式可以扩展为:
表达式1,表达式2,表达式3,……, 表达式n
取表达式n的值作为整个逗号表达式的值。
逗号运算符的优先级最低,且是左结合性。
逗号运算符只起到连接作用,没有实际操作。
第四章 最简单的C程序设计
第四章 最简单的C程序设计
C 程序最基本的成分是语句
目前我们已掌握的语句:
变量说明语句: int a,b,c;
表达式语句: x+y;
特别地: a=5; 赋值语句null 可以编写简单程序如:
main()
{ int x,y;
x=5;
y=2*x*x+3*x-1;
}
该程序语法上完整,但还缺少输出。 null ■数据的输出
用输出函数实现,其中的两种输出函数:
1.putchar 函数 (字符输出函数)
用于输出一个字符。
如:
putchar (‘a’);
putchar (100);
char c=’b’; putchar (c);
null 例:输出单词Boy的完整程序:
#include “stdio.h” 注意该语句的作用
main()
{ char a, b, c;
a=’B’; b=’o’; c=’y’;
putchar (a);
putchar (b);
putchar (c);
}null 2. printf函数(格式输出函数)
任意类型、任意格式、任意个数。
例如:
int a=100,b=56;
printf(“a=%d,b=%d”,a,b);
普通字符 格式说明 格式控制 输出表列
输出结果:a=100,b=56
“%” 后的字符称格式字符,不同格式字符对应不同的数据类型。null d格式符:按整数格式输出
几种用法:
%d 不指定宽度,按实际宽度输出
%md 按指定宽度输出,m为宽度
%ld 用于输出长整型数
null 例:
int a=125,b=453;
long c=65535;
printf(“a=%d,b=%5d,c=%ld”,a,b,c);
输出结果:
a=125,b= 453,c=65535
null %ld也可以按指定宽度输出:
printf(“c=%8ld”,c);
输出结果:c = 65535
注意:格式字符的类型要与对应的输出对象的类型一致。
null c格式符:用于输出字符
char c=’A’;
printf(“c=%c,%c”,c,’B’);
输出结果:c=A,B
输出对象既可以是字符变量、字符常量,还可以是整型表达式。
null 如:
int a=100;
char b=’A’;
printf(“\n%d,%c”,a,a);
printf(“\n%c,%d”,b,b);
输出结果:
100,d
A,65null s格式符:用于输出字符串
%s 不指定宽度
%-ms 指定宽度,左靠齐
%ms 指定宽度,右靠齐
%m.ns 指定宽度m,只取左端n个字符,
右靠齐
%-m.ns 指定宽度m,只取左端n个字符,
左靠齐null例:
printf(“1:%s”,”abcd”);
printf(“2:%8s”,”abcd”);
printf(“3:%-8s”,”abcd”);
printf(“4:%8.3s”,”abcd”);
printf(“5:%-8.3s”,”abcd”);
1:abcd2: abcd3:abcd 4: abc5:abc null f格式符:按小数形式输出实数
%f 由系统指定宽度(6位小数)
%m.nf 指定宽度m,小数位数n,右靠齐
%-m.nf 指定宽度m,小数位数n,左靠齐
注意:宽度包括符号和小数点。 null例:
float a=3.141592654,b=14.326795,
c=-125.2468;
printf(“\na=%f,b=%8.3f,c=%-10.2f”,a,b,c);
输出结果:
a=3.141592,b= 14.326,c=-125.24
完整前面的程序:完整前面的程序:main()
{ int x,y;
x=5;
y=2*x*x+3*x-1;
printf(“\n y=%d”,y);
}null ■数据的输入
getchar函数(字符输入)
#include “stdio.h”
main()
{ char c;
c=getchar(); 等待键盘输入
putchar(c);
}
scanf 函数(格式输入) scanf 函数(格式输入) 与printf函数相反。
用于输入若干任意类型的数据。
scanf(“%d%d%d”,&a,&b,&c);
格式控制 地址列表
null scanf(“%d%d%d”,&a,&b,&c);
执行此函数时,等待从键盘输入三个整数给a,b,c
若从键盘输入 3 5 8
则系统即从键盘缓冲区取出这三个数分别赋给a,b,c
注意与printf的区别,注意格式的匹配null如:
scanf(“%3d%2d%4d”,&a,&b,&c);
若从键盘输入123456789
a=123,b=45,c=6789
若想使a=12,b=5,c=100
则键盘输入应为: 12 5 100
方便的输入格式一般不 指定宽度,
如:
scanf(“%d%d%d”,&a,&b,&c);
null 在键盘输入时,用分隔符把每个数据隔开,
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的分隔符是空格。
如:123 150 23
若想用逗号作分隔符,则:
scanf(“%d,%d,%d”,&a,&b,&c);
不要随便使用普通字符,如使用:
scanf(“a=%d,b=%d c=%d”,&a,&b,&c)
对应数据输入:
a=123,b=150,c=23求三角形面积求三角形面积#include “math.h”
main()
{ float a,b,c,area,s;
scanf ( “%f,%f,%f”, &a,&b,&c);
s=1.0/2*(a+b+c);
area=sqrt (s*(s-a)*(s-b)*(s-c));
printf(“\n area=%f”,area);
}
使用数学函数使用三角函数使用三角函数#include “math.h”
main()
{ float x, y;
scanf ( “%f”, &x);
y=sin(x*3.1415926/180); 以弧度为单位
printf(“\n y=%f”,y);
}第五章 选择结构程序设计第五章 选择结构程序设计 对于如下的函数计算,算法上属于一个选择结构。
y=
用于实现选择结构的主要是if语句。
1/x 当x≠0时 10000 当x=0时
nullif语句的最常见形式为:
if(关系表达式)语句1;
else 语句2;
如: if(x!=0) y=1/x;
else y=10000;
其中
x!=0 就是一个关系表达式
!= 就是一个关系运算符
null5.1 关系运算符和关系表达式
1、关系运算符
用于进行比较运算的运算符。共有六种:
< <= > >= = = !=
■优先级与结合性:
① 前4种大于后两种。
② 低于算术运算符而高于赋值运算符。
③ 左结合性。
null2、关系表达式
一般形式:
〈表达式〉〈关系运算符〉〈表达式〉
如:a>b a+b>b+c
经过关系运算后最终有一个值--关系表达式的值。
关系表达式的值只有 0(假)或1(真)
null例:设 a=2, b=4, c=1 计算以下关系表达式的值:
a>b
a+b>b+c
‘a’>’b’ 可以是字符表达式
(x=2)>(y=5) 可以是赋值表达式
(a
(by
xz==x>z
y>x>z
(x==y-2)x+1
null5.2 逻辑运算符和逻辑表达式
有时,只用一个简单的关系表达式无法完整地表达一个条件,如:
y=
其中的条件需要用逻辑表达式来表达:
x!=0 &&a!=0
&&就是一种逻辑运算符。
1/x+1/a 当x≠0,a≠0时 10000 其它
null1、逻辑运算符
&& 逻辑与
两个操作数都为真时&&运算结果为真。
|| 逻辑或
两个操作数之一为真时即为真。
! 逻辑非 (单目运算)
操作数为真(假)时为假(真)。
如:若 a=2, b=3, c=0 则:
ac+10
例:设 a=2, b=3, c=0 , 计算以下表达式的值:
a&&b b&&c a||c
!a+c&&b+c
!c+a==b||bc+10
null对于逻辑表达式的两种基本技能:
① 逻辑表达式的计算。
② 逻辑表达式的构造。null逻辑表达式的构造举例:
a≥b≥c
a和b之一为0,但不同时为0
a>=b>=c 5>=4>=3a>=b&&b>=ca==0&&b!=0 || a!=0&&b==0a*b==0a*b==0&&a+b!=0null对于 a==0 && b!=0 || a!=0 && b==0
a==0可以用!a代替
a!=0可以直接用a
!a && b || a && !b
但必须是运算结果作为逻辑量的情况下。
y=(a!=0) 与 y=a 不等效null5.3 if语句
1、if语句的三种形式
① if(表达式)语句;
有一分支为空。
scanf(“%d”,&score);
if(score>=60) printf(“pass”); null
② if(表达式)语句1;
else 语句2;
if(x!=0) y=1/x;
else y=10000;
null
③ if(表达式1)语句1;
else if(表达式2)语句2;
else if(表达式3)语句3;
┇
else 语句n;
if(score==100) printf(“A”);
else if(score>=90) printf(“B”);
else if(score>=80) printf(“C”);
else if(score>=70) printf(“D”);
else if(score>=60) printf(“E”);
else printf(“F”);
null 对于:
1/x 当x≠0时
10000 当x=0时
一般用:
if(x!=0) y=1/x;
else y=10000;
也可用:
y=10000;
if(x!=0) y=1/x;
y=?
y=1/x;
if(x==0)y=10000
null
例:(习题5.5):
x (x<1)
2x-1 (1≤x<10) 3x-11 (x≥10)
y=null main()
{
float x,y;
scanf(“%f”,&x);
if(x<1) y=x;
else if(x<10) y=2*x-1;
else y=3*x-11;
printf(“\n y=%f”,y);
}null说明:
① 语句中的表达式可以是任意表达式:
if(x) y=1/x;
else y=10000;
② 一个if结构不可分割:
if(x) y=1/x;
z=10;
else y=10000;
③一个分支中包含多个语句时,要用{ }:
if(a<0) { x=1; y=2;}
else {x=10; y=20;}
null分支程序设计举例(基本技巧和算法)
例:从键盘输入三个整数到变量a,b,c,输出其中最大的数。
两种典型算法:
①枚举法(将各种可能性枚举出来)。
②选择法(先假设后判断更新)。 null选择法
main()
{
int a,b,c,max;
scanf(“%d,%d,%d”,&a,&b,&c);
max=a;
if(b>max) max=b;
if(c>max) max=c;
printf(“\n max=%d”,max);
}}
null 例:从键盘输入三个整数到变量a,b,c,要求按从大到小的顺序输出。
两种典型算法:
①枚举法(将各种可能的排列枚举出来)。
②换位法(将a,b,c中的数据换位)。
null换位法
main()
{
int a,b,c,t;
scanf(“%d,%d,%d”,&a,&b,&c);
if(a=80)
if(score>=90) printf(“A”);
else printf(“B”);
else
if(score>=60) printf(“C”);
else printf(“D”);
注意else与if的匹配null3、条件运算符
如果两个分支的内容都是给同一个变量赋值,则可用简单的条件运算符处理:
if(a>b) max=a;
else max=b;
可用: max=a>b ? a : b;
赋值运算符右边为一条件表达式。
条件表达式的一般形式:
表达式1 ? 表达式2 : 表达式3
null条件表达式的执行过程: a>b ? a : b
优先级:低于关系运算符,高于赋值运算符。
结合性:右结合性。
表达式1条件表达式
取表达式3的值条件表达式
取表达式2的值 非00null
例:求a,b,c中的最大值:
max= a>b ? (a>c?a:c) : (b>c?b:c) ;null5.4 switch语句(多分支)
适用于根据一个表达式的值就可确定走哪个分支的情况。
switch(表达式)
{
常量表达式1: 语句1
常量表达式2: 语句2
┋
常量表达式n: 语句n
default: 语句n+1
}
null例:成绩分档:
switch(score/10)
{
case 10: printf(“A”);
case 9: printf(“B”);
case 8: printf(“C”);
case 7: printf(“E”);
case 6: printf(“F”);
default : printf(“G”);
}
注:应使用break.
nullswitch(score/10)
{
case 10: printf(“A”); break;
case 9: printf(“B”); break;
case 8: printf(“C”); break;
case 7: printf(“E”); break;
case 6: printf(“F”); break;
default : printf(“G”);
}
null第六章 循环控制
6.1 概述
所谓循环控制,就是如何实现循环结构的控制问题。有4种
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
:
① 用goto语句和if构成循环。 ② 用while语句。 ③ 用do-while语句。 ④ 用for语句。null6.2 用goto语句和if语句构成循环
例: 对于计算 s=1+2+3+4+5+6+7+8+9+100 s1 is+i → s
i+1 → i
i≤10
输出s
ynnull s=0;
i=1;
lable:s+=i;
i++;
if(i<=10) goto lable;
printf(“%d”,s) ;
语句标号 无条件转向语句 goto 语句可以构造循环,但不主张用,因为它容易破坏结构化程序设计。
goto 语句可以构造循环,
但不主张用,因为它容易破
坏结构化程序设计。
null 6.3 while语句
while语句是专门用于实现循环控制的语
句之一。
其一般形式为:
while (表达式) 语句
含义:当表达式的值为非0时,执行循环体,否则执行后续语句。语句关键 表达循环条件的表达式循环体
语句关键字
null
执行过程:
while (表达式) 语句
表达式循环体0非0nulli≤10? s=0
i=1s=s+i
i=i+1例:用while语句实现前面算法:
main()
{ int i=1,s=0;
while(i<=10)
{
s=s+i;
i++;
}
printf(“\n %d”,s);
}
注意与if语句的区别。
循环体中要有使循环条件趋于成立的条件ynnull while(i<=10)
{
s=s+i;
i++;
}
可简写为:
while(i<=10) s+=i++;null非0(真)0(假)表达式循环体 6.4 do-while语句
do-while语句主要用于实现直到型循环。
其一般形式为:
do
循环体
while(表达式);
执行过程:
null真s=0
i=1i≤10?s=s+i
i=i+1假例:用do-while语句实现前面算法:
main()
{ int i=1,s=0;
do
s+=i++;
while(i<=10);
printf(“\n%d”,s);
}
注意与while语句的区别。
null假表达式2求解表达式1循环体求解表达式3真 6.5 for 语句
for语句是一种使用最为灵活,
并且是用得最多的循环控制语句,
其一般形式为:
for(表达式1;表达式2;表达式3)
循环体
大体含义:
对于()的情况执行循环体内容。
null例:用for语句实现前面的算法:
s=0;
for(i=1;i<=10;i++) s+=i; 标准形式表达式1 表达式2表达式3循环体可以理解:
循环变量i从初值1开始到终值10,步长为1,重复执行循环体。
nullfor语句的常见变化:
s=0; i=1;
for(;i<=10;i++)s+=i;
s=0; for(i=1;i<=10;)s+=i++; s=0;i=1; for(;i<=10;)s+=i++; 省略表达式1省略表达式3省略表达式1和3null
s=0; i=1;
for(;;)
{
s+=i++;
if(i>10) break;
}
s=10;i=10;
for(;--i;) s+=i;
省略表达式2
表达式2是任意表达式null
s=0;
for(i=1,j=10;imax) max=a;
}
printf(“\n max=%d”,max);
}
循环体中没有引用循环变量。i的作用?
求任意个数中的最大值?for(i=1; ;i++) if(a==-9999)break;max=-32768;null外重循环内重循环执行200次要掌握多重循环执行的全过程6.6 循环的嵌套
循环体内又包含另一个完整的循环结构(多重循环)。
for(i=1;i<=10;i++)
{
for(j=1;j<=20;j++)
{
s+=i+j;
}
}
null以上多重循环结构可以简写为:
for(i=1;i<=10;i++)
for(j=1;j<=20;j++)
s+=i+j;
null例:找出行号乘以列号等于100的座位。
main()
{
int i,j;
for(i=1;i<=30;i++)
for(j=1;j<=20;j++)
if(i*j==100)
printf(“\n%d,%d”,i,j);
}
注意循环的关系null例:百钱买百鸡问题。
给定100块钱,要求正好买100只鸡,已知公鸡5元/只,母鸡3元/只,小鸡1元/3只,问公鸡、母鸡和小鸡应各买多少只?
若考虑用方程组:
x+y+z=100
5x+3y+z/3=100
是一多解问题。null用测试法求解的程序:
main()
{
int x,y,z;
for(x=1;x<=100;x++)
for(y=1;y<=100;y++)
for(z=1;z<=100;z++)
if(x+y+z==100&&5*x+3*y+z/3.0==100)
printf(“\n%d,%d,%d”,x,y,z);
}null程序可进一步简化为:
main()
{
int x,y,z;
for(x=1;x<=20;x++)
for(y=1;y<=33;y++)
{ z=100-x-y;
if(5*x+3*y+z/3.0==100)
printf(“\n%d,%d,%d”,x,y,z);
}
}
用测试法求解问题的典型例子null
测试法求解的程序设计有两个要点:
⑴通过循环列出所有可能的解。
⑵对所有列出的可能的解进行条件测试。
null第七章 数 组
7.1 数据结构与数组的概念
影响程序设计的因素除算法外还有数据结构。
■数据结构概念
编写一个程序除了重视算法的设计外,还需重视数据类型的选择,即选择合适的数据类型来存放要处理的数据。在程序设计中,数据类型就称为数据结构,选择合适的数据类型实际上就是进行数据结构的设计。
null在程序设计中有格言:
数据结构+算法=程序
说明数据结构与算法同等重要,算法依赖于数据结构,对于同一个问题的求解,可以采用不同的数据结构和不同的算法,对不同的数据结构有不同的算法,其复杂程度也会不同,选择合适的数据结构,可以降低算法的复杂程度。因此,在程序设计中应重视数据结构的设计。
null例:求任意100个数中的最大值。
main()
{ int i,a,max;
max=-32768
for(i=1;i<=100;i++)
{
scanf(“%d”,&a);
if(a>max) max=a;
}
printf(“\n max=%d”,max);
}用一个简单变量作为数据结构,合理,算法简单null 对于三个数的排序:
main()
{
int a,b,c,t;
scanf(“%d,%d,%d”,&a,&b,&c);
if(a
本文档为【C语言入门】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。