C语言学习C语言学习
,运算符,
单目算符,~运~~++~--~-~*~&~sizeof
双运目算符+~-~*~/~%~~>=~>~&~^~|~&
&~||~=。
三目算符,, 运
2、单合性单先单与
右合性:结结结结单目运算符
单单运算符
条件运算符:表达式:表达式结结结结结1,表达式2:表达式3, 注意:1、当一
个表达式中出多个条件运算符,将位于最右的结结结结结结结结结结结结结结结结结结结结
号与离它最近的冒号配,并按一原正确区分各条件运结结结结结结结结结结结结结结结结
算符的运算象。如:结结结结结w . left to
ri...
C语言学习
,运算符,
单目算符,~运~~++~--~-~*~&~sizeof
双运目算符+~-~*~/~%~<~>~>=~<=~==~,=~<<~>>~&~^~|~&
&~||~=。
三目算符,, 运
2、单合性单先单与
右合性:结结结结单目运算符
单单运算符
条件运算符:表达式:表达式结结结结结1,表达式2:表达式3, 注意:1、当一
个表达式中出多个条件运算符,将位于最右的结结结结结结结结结结结结结结结结结结结结
号与离它最近的冒号配,并按一原正确区分各条件运结结结结结结结结结结结结结结结结
算符的运算象。如:结结结结结w
. left to
right
! ~ ++ -- + - * (type) sizeof right to left
* / % left to
right
+ - left
to right
<< >> left to
right
< <= > >= left to
right
== != left to
right
&
left to right
^
left to right
| left
to right
&& left
to right
|| left
to right
?: right
to left
= += -= *= /= %= &= ^= |= <<= >>= right to left
, left
to right
3、C单言特有的算和算符运运
A.自增;++,、自;减--,算,运
;1,前置算??算符放在单量之前,,,单量、,,单量运运
先使单量的单增;或,,~然后再以单化后的单其算减参与它运~即减运先增、后算。
;2,后置算??算符放在单量之后,单量,,、单量,,运运
单量先其算~然后再使单量的单增;或,,~先参与它运减即运
算、后增。减
注意,自增、自减运算符,不能用于常量和表达式。例如~5++、--(a+b)等都是非法的。
B.逗算;~,及其表式号运达
1.一般形式
表式,达, 表式,达, ……, 表式达n
2.求解单程
自左至右~依次单算各表式的单~“表式达达n” 的单单整逗即个
号达表式的单。
例如~逗表式“号达a = 3 * 5, a * 4”的单=60,先求解a
= 3 * 5~得a=15~再求a * 4 = 60~所以逗表式的单号达
=60。
注意,不是任何地方出单的逗~都是逗算符。多情下~逗并号号运很况
号单用作分隔符。
,数据型:单单单单单
结结结结结结结结结结结 原:箭是方向char,short->int->unsigned->long,float->double
1,横向向左的箭,表示必的。结结结结结结结结结结char和short 型必成结结结结 int 型,float型必结结结成double型。
int型与double型数据行混合运算,先将结结结结结结结结结结int型数据成结结结double型,然后在两个同结型的数据行运算,果结结结结结结结结结double型
2,制型:数据型强强结结结结结结结结结结结结结结结结制的一般格式:
(要成的数据型结结结结结结结结)(被的表达式结结结结结结),如:
(double)a ,等价于(double)(a)) /*将量结结a的成结结结结double型*/
(int)(x + y) /*将x+y的果成结结结结结int型
*/
(float)5 / 2,等价于(float)(5)/2,/*将5结结结结结结结结成型,再除以
2,=2.5,*/
(float)(5 / 2) /*将5整除2的果结结2结结成
结型2.0*/
注意:制型得到的是一个所需型的中量,原表达强结结结结结结结结结结结结结结结结结结结结结结
式型并不生化。例如,结结结结结结结结结结结结(double)a 只是将量结结a的成一个结结结结结结double型的中量,结结其数据型并未成结结结结结结结double型。即后面用到a的候,依然是原数据型。结结结结结结结结结结结结,单单算运,
1.赋赋运算
单单符“号=”就是单单算符~的作用是一表式的单单单一单量运它将个达个。
单单算符的一般形式单, 运 单量 = 单单表式达
例如~x = 5
y = (float)5 / 2 2.赋赋赋赋赋合运算
单合单单算符是由单单算符之前再加一目算符成的。运运个双运构
单合单单算的一般格式单, 运
单量 目算符 双运= 表式 达
???????
单合单单算符运
它,单量 = 单量 目算符 双运(表式达)。例如,等价于
x += 3 /* 等价于x=x+3 */ y *= x + 6/* 等价于y=y*(x+6)~而不是y=y*x+6 */
C单言单定的10单单合单单算符如下,运
+=~-=~*=~/=~%=~ /*单合算单算符;运5,个*/&=~^=~|=~<<=~>>=~/*单合位算符;运5,个*/3.赋赋表达式
由运算符或合运算符,将一个量和一个表达结结结结结结结结结结结结结结结结结结结结结结结结
式接起来的表达式,称表达式。结结结结结结结结结结结结结结结结结
,1,一般格式
结 结结结 量,合,运算符表达式
,2,表达式的结结结结结结结
任何一个表达式都有一个,表达式也不例外。结结结结结结结结结结结结被量的,就是单单单单单单单单单单
单单表达式的。
,赋赋赋赋赋赋赋序构程序
1.格式化出赋赋——printf()函数
printf()函数的一般格式如下:
printf("格式字符串" [,出表赋赋赋赋]),
a)格式字符串。格式字符串也称控制字符串,可以包含三字符:“”“结结”结结结结
,1,格式指示符。格式指示符的一般形式如下:
%[赋志][赋度][.精度][F|N|h|L][赋型] 结结结结结结结结结结结结结结结结结结结结出不同型的数据,要使用不同的型字符。
1,赋赋赋赋赋型字符d??以符号的十制整数形式出赋赋赋赋赋赋赋赋赋赋赋赋赋
2,赋赋赋赋赋型字符f??以小数形式、按系默的度,出精度赋赋赋赋赋赋赋赋赋赋赋赋
和双精度数。赋赋赋
3,赋赋赋赋赋型字符c??赋赋赋赋出一个字符,只占一列度,
4,赋赋赋赋赋型字符s??赋出一个字符串
,2,字符结结结结
printf()函数中的'\n'就是字符,出生一个结结结结结“结”结结结行操作。
,3,普通字符除格式指示符和字符之外的其它字符。格??结结结结结结结结结结结结结
式字符串中的普通字符,原出。结结结结“printf("radius=%f\n", radius);”结句中的“radius=”,“printf("length=%7.2f,area=%7.2f\n", length,area);”结“句中的length=”、“area=”等都是普通字符。
b)结结结出表
结结结结结结结结结结结结结结结结结结出表是可的。如果要出的数据不止1个,相结2个之用逗结结结
号分。下面的结结结结结printf()函数都是合法的:
,1,printf("I am a student.\n");
,2,printf("%d",3+2);
,3,printf("a=%f b=%5d\n", a, a+3);
必赋赋强:格式字符串中的格式指示符,必与出表中、出的数“”结“结结”结结结结结据型结结一致,否会引起出。结结结结结结结结结
使用明赋赋
,1,printf()可以出常量、量和表达式的。但格式控制中结结结结结结结结结结结结结结结结结结结结的格式明符,必按从左到右的序,与出表中的结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结个数据一一,否出。每
,2,格式字符跟在结结结“%”后面就作格式字符,否将作普通结结结结结结结结结结结结结字符使用,原出,。例如,结结结结结结结结“printf(”c=%c, f=%f\n“, c, f);”中的第一个c和f,都是普通字符。
2.格式化入赋赋——scanf()函数
scanf()函数的功能:从上接收格式化入结结结结结结结结结结
scanf()函数的一般格式
scanf("格式字符串", 赋赋赋赋赋赋入首地址表);
,1,格式字符串。格式字符串可以包含3结结型的字符:a)格式指示符、b)空白字符,空格、Tab结结结结结和回,和c)非空白字符,又称普通字符,。
格式指示符与printf()函数的相似,空白字符作相结结结2个入数据的缺省分结结结结结结结结隔符,非空白字符在入有效数据,必原一起入。结结结结结结结结结结结结结结结结结
a)格式指示符
结结 格式指示符的一般形式:% [*] [赋度] [F|N] [h|l] 赋型字符
1,型字符赋赋赋赋
结型字符如表3-6所示。例如,格式字符串“%f%f”。
2,度赋赋n
结结结结结结结结结结结指定入数据所占列数n。
结结结结结结结结结结结结结结句,取入数据中相的n位,但按需要的位数相的量,多结结结结结结结结结余部分被舍弃。
例如,scanf("%3c%3c",&ch1,&ch2);
printf("ch1=%c,ch2=%c\n",ch1,ch2);
结结结“假入abcdefg”,系将取的结结结结结结结“abc”中的“a”结结结量ch1,将取的结结结“def”中的“d”结结结量ch2,所以printf()函数的出果:结结结结结结ch1=a,ch2=d。
3,抑制字符赋赋赋赋赋赋[*]
结结结结结结结结结结结结结结结结结结结结结结结结结表示本入的数据入后,不相的量,量由
下一个格式指示符入,。结结结结
例如,scanf("%2d%*2d%3d",&num1,&num2);
printf("num1=%d,num2=%d\n",num1,num2);
结结结“假入123456789”,系将取结结结结结结“12”并结结结num1,取结结“34”、但舍弃掉,“*”的作用,,取结结“567”并结结结num2。所以,printf()函数的出果:结结结结结结num1=12,num2=567。
,2,入首地址表结结??结结结结结结结结结结结由若干个入首地址成,相2个入首地址之,结结结结结结结结用逗号分。结结
结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结入首地址表中的地址,可以是量的首地址,也可以是字符数名或指量。结 量首地址的表示方法:&赋量名 “,其中&”是地址运算符。,
数据入操作赋赋赋赋
1,如果相结2个格式指示符之,不指定数据分隔符,如逗号、结结结结结结结结结结结结结结冒号等,,相的结结结结2个入数据之,至少用一个空格分,或者用结结结结结结结结结结结结结结结结结结结结Tab结结结分,或者入结结1个数据后,按回,然后再入下结结结结结结结结1个数据。
例如,scanf("%d%d",&num1,&num2);
结结假num1结入12,结num2结入36,正确的入操作:结结结结结结结结结结12?36?
或者:12?
36?
注:使用?符号表示按回操作,在入数据操作中的“”结结结结结结结结结结结结结结
作用是,系入操作束。结结结结结结结结
2,格式字符串中出的普通字符,包括字符形式的“”结结结结结结结结结结结结结结结结
字符,,必原入。结结结结结结结
例如,scanf("%d,%d",&num1,&num2);
结结假num1结入12,结num2结入36,正确的入操作:结结结结结结12,36?
另外,scanf()函数中、格式字符串内的字符结结结结(如\n),系并不把它当结结结结结结结结字符来解,从而生一个控制操作,而是将其普通字符,所以也要原入。结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结
例如:scanf("num1=%d,num2=%d\n",&num1,&num2);
结结假num1结入12,结num2结入36,正确的入操作:结结结结结结
num1=12,num2=36\n?
3,入数据,遇到以下情况,系数据束:结结结结结结结结结结结结结结结结结结结结结结结
,1,遇到空格,或者回,或者结结结结结Tab结。
,2,遇到入域度束。例如结结结结结结结结结结“%3d”,只取3列。
,3,遇到非法入。例如,在入数数据,遇到字母等非数符号结结结结结结结结结结结结结结结结结结结结结结结结结(数符结结号由数字字符结结结结结结0-9、小数点和正号构成结结结结)。
4,使用格式明符结结结“%c”结结结结 结结结结结结入个字符,空格和字符均作有效字符
被入。结结结
例如,scanf("%c%c%c",&ch1,&ch2,&ch3);
printf("ch1=%c,ch2=%c,ch3=%c\n",ch1,ch2,ch3);
结结结结假入:A?B?C?,系将字母结结结结结结'A'结结结ch1,空格'?'结结结ch2,字母'B'结结结ch3
3.赋赋赋赋赋——个字符入出getchar()和putchar()函数
1,putchar()函数的格式: putchar(ch);
其中ch可以是一个字符量或常量,也可以是一个字符。结结结结结结结结结结结结结结结结结
2,putchar()函数的作用:向端出一个字符。结结结结结结结结结
,1,putchar()函数只能用于个字符的出,且一次只能出一结结结结结结结结结结结结结结结结个字符。另外,从功能角度来看,printf()函数可以完全代替putchar()函数。,2,在程序中使用putchar()函数,必牢:在程序,或文件,结结结结结结结结结结结结结的加上理命令,也称包含命令,,即:结结结结结结结结结结结结结结结结结结结结结结
#include "stdio.h"
表示要使用的函数,包含在准入出,结结结结结结结stdio,文件,结结结结.h,中。
3.getchar()函数的格式:getchar();
4.getchar()函数的作用:从系含的入,如,入一个字结结结结结结结结结结结结结结结结结结符。另外,从功能角度来看,scanf()函数可以完全代替getchar()函数。
,1,getchar()函数只能用于个字符的入,一次入一个字符。结结结结结结结结结结结结结结结结结
,2,程序中要使用getchar()函数,必在程序,或文件,的加结结结结结结结结结结结结结上理命令:结结结结结结结结
#include "stdio.h“
4.赋赋赋赋赋赋赋序构程序
在序构程序中,各句,或命令,是按照位置的先结结结结结结结结结结结结结结结结结结结结结结结
后次序,序行的,且结结结结结结结结结结结结结结结结结个句都会被行到。每
在序构程序中,一般包括以下几个部分:结结结结结结结结结结结结结结结结结结结
1,程序的理命令。结结结结结结结结结结结
结结结结结结结结结结结结结在程序中要使用准函数,又称函数,,除printf()和scanf()外,其它的都必结使用理命令,将相的文件包含来。。结结结结结结结结结结结结结结结结结结结结结
2,序构程序的函数体中,是完成具体功能的各个句和运算,主要包括:结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结
,1,量型的明。结结结结结结结结
,2,提供数据句。结结结
,3,运算部分。
,4,出部分。结结结结结
,赋赋赋赋赋构程序
要构程序,要考两个方面的:一是在结结结结结结结结结结结结结结结结结结结结结结结C结言中如何来表示条件,二是在C结结结结结结结结结结结结结言中构用什句。
在C结结结结结结结结结结结结结结结结结结结结言中表示条件,一般用系表达式或表达式,构用if结句或switch结句。
(1)赋系运算及其表达式
所系运算上就是比运算结“结”结结“结”结结结结结结结结,即将两个数据行比,判定两
个数据是否符合定的系。结结结结结结
例如,“a > b”中的“>”表示一个大于系运算。如果结结结结结结结a的是结结5,b的是结结3,结
大于系运算结结结结“>”的果真,即条件成立,如果结结“”a的是结结2,b的是结结3,结
大于系运算结结结结“>”的果假,即条件不成立。结结“”
1)赋赋赋赋赋系运算符及其先次序
C结言提供6结结系运算符:
<(小于), <=(小于或等于), >(大于),
>=(大于或等于), ==(等于), !=(不等于)
注意:在,言中,结“”结“等于系运算符是双等号= =”,而不是等号结结结“= ”,结结运算符,。
结结先;
,1,在系运算符中,前结结结结结结结结4个先相同,后结结结结结结结2个也相同,且前4个高于后2个。
,2,与其它运算符的先系结结结结结结结结结结结
结结结结结结结结结结结结结结结结结结结结结系运算符的先,低于算运算符,但高于运算符
2)赋系表达式
所系表达式是指,用系运算符将两个表达结结结结结结结结结结结结结结结结结结结结
式接起来,行系运算的式子。结结结结结结结结结结结结结结结
结结结结结结结结结结结例如,下面的系表达式都是合法的:
a>b,a+b>c-d,(a=3)<=(b=5),'a'>='b',(a>b)= =(b>c)
结结——结结结“”“”系表达式的,非真即假,。
由于,言结结结“”“结结”“”“结,没有型数据,所以用整数表示真,用整数:表示结”假。
结例如,假num1=3,num2=4,num3=5,:结结
,1,num1>num2的结=0。
,2,(num1>num2)!=num3的结=1。
,3,num1=0”。如果需要描述“x>=0”、同结
“x<10”,就要借助于表达式结结结结结结结了。
1,赋赋赋赋赋赋运算及其先次序
C结结结结结结结结言提供三运算符:
&&结结“结”与,相当于同,
||结结“”或,相当于或者,
!结结“”非,相当于否定,
运算结结
1,&&:当且当两个运算量的都结结结“”结结结“”结结“”真,运算果真,否假。
2, || :当且当两个运算量的都结结结“”结结结“”结结“”假,运算果假,否真。
3, ! :当运算量的真,运算果假,当运算量的假,运算结结“”结结结“”结结“”结结
果真。结“”
例如,假定x=5,结(x>=0) && (x<10)的真,结结“”(x<-1) || (x>5)的假。结结“”
赋赋赋赋赋运算符的运算先
,1,非的先最高,与次之,或最低,即:结结结结结结结结结结结结结结结结结结结结结结结结:,非, ? &&,与, ? ||,或,
,2,与其它运算符的先系结结结结结结结结结结
? 结 ? 结 ? :算运算系运算&&? || ? 结结运算
2,赋赋表达式
所表达式是指,用运算符将结结结结结结结结结结结结结结结结1个或多个表达式接起来,结结结结结结行运算的式子。在结结结结结结结结结C结结结结结结结结结结结结结结结结言中,用表达式表示多个条件的合。
例如,(year%4==0)&&(year%100!=0)||(year%400==0)就是一个判断一个年份是否是结结结结结结结结结年的表达式。
结结结结结结“”“”结结表达式的也是一个,非真即假,。
3,,明赋赋
,1,运算符两的操作数,除可以是结结结结结结结结结结结结结结结结结结结:和非:的整数外,也可以是其它任何型的数据,如型、字符型等。结结结结结结结结结结结结结结结,2,在算表达式,只有在必行下一个表达结结结结结结结结结结结结结结结结结结结结结式才能求解,结结结结结结结结结结结结结结结结结才求解表达式,即并不是所有的表达式都被求解,。句:结结结结结
1,于与运算,如果第一个操作数被判定结结结结“”结结结结结假,系不再判定
或求解第二操作数。
2,于或运算,如果第一个操作数被判定结结结结“”结结结结结真,系不再判定
或求解第二操作数。
结例如,假n1、n2、n3、n4、x、y的分结结结结1、2、3、4、1、1,结结结结求解表
达式“(x=n1>n2)&&(y=n3>n4)”后,x的结结结结结结:,而y的不,结结结结结结结仍等于1:
(3) if赋句和条件运算符
if结句的一般格式
if(表达式)
{
赋赋句1;
}
[else
{
赋赋句2;
} ]
,1,if结“”结结“句中的表达式必用(”和“)”括起来。
,2,else子句,可,是结结结if结结结句的一部分,必与if配使用,不能结结结结结结结结结结结独使用。,3,当if和else下面的句,由一条句构成,也可不结结结结结结结结结结结结结结结结结使用合句形式,即结结结结结结结结结结结结结结结去掉花括号,。
2,if结结结结结句的行程
,1,缺省else子句结
“”结结结结当表达式的不等于0,即判定真,,行句结“结结”结结结结结结结结1,否结结结结直接向行下一条。结结结结结结
,2,指定else子句结
当表达式的不等于“”结结结结0,即判定真,,行句结“结结”结结结结结结结结1,然后向下一结结结结条句,否,行句结结结结结结结结结结结2。如结4-1(b)所示。
3,if结结句的嵌套与嵌套匹配原
if结结结结结结结句允嵌套。所if结“结结句的嵌套是指,在句1”或,和,句“结结2”中,又包含有if结句的情况。
if结结结句嵌套,else子句与if的匹配原:与在它上面、赋距它最近、且尚未匹配的if配。结结
结结结结结结结结结结结明确匹配系,避免匹配,强烈建赋:将内嵌的if结句,一律用花括号括起来。4,明结结
,1,if后面的表达式,除常的系表达式或表达式外,“”结结结结结结结结结结结结结结结
也允结结结结结结结结结结结结结结结结结结结结结结是其它型的数据,如整型、型、字符型等。
,2,if结结结结结结结结结结结结结结结结结结结结句允嵌套,但嵌套的数不宜太多。在程,结结结结结结结结结结结适当控制嵌套数(2,3结)。
,3,句“结结1”和句“结结2”,可以只包含一个句,也可以是合句。结结结结结结结结结结结结结结
单单必牢:不管是句,是合句中的各个句,结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结个句后面的分号必不可少每:
(4) 条件运算符
1,一般格式:表达式 1,表达式2:表达式3
“条件表达式中的表达式1”、表达式“2”、表达式“3”的型,可以各不相同。结结结结结结结结结结2,运算结结
“如果表达式1”的非结结结0(即真结结结),运算果等于 结结“表达式2”的,否,运结结结结结结算果等于结“表达式3”的。结结
3,运算符的先与合性结结结结结结结
结结结结结结结结结结结结结结结结结结结结结结结结结结结结结结条件运算符的先,高于运算符,但低于系运算符和算运算符。其合性从右到左,即右合性,。结“”结结结结结
(5) switch赋句
1,switch结句的一般形式
switch(表达式)
{ case 常量表达式1:句,赋赋赋赋break,
case 常量表达式2:句,赋赋赋赋break;
......
case 常量表达式,:句,赋赋赋赋break,
[default:句,赋赋赋赋[break; ]]
}
2,行程结结结结
,1,当switch后面表达式的,与“”结结结结结某个case后面的常量表达式的相同,“”结结结结
就行结结结case后面的句,,,当行到结结结结结结结结结结break结结结结结句,跳出switch结结结结句,向
行switch赋句的下一条。
,2,如果没有任何一个case后面的常量表达式的,与“”结“”结结结结结表达式的匹配,赋
行default 后面的句,,赋赋赋赋赋。然后,再行结结switch结句的下一条。
3,明结结
,1,switch后面的表达式,可以是“”int、char和枚结结结结结结结型中的一。
,2,个每case后面常量表达式的,必各不相同,否会出“”结结结结结结结结结结结结结结
相互矛盾的象,即表达式的同一,有两或两以上的行方结结结结结结结结结结结结结结结结结结结结结结结结结结结结案,。
,3,case后面的常量表达式起句号作用,并不行条件判单单单单单单单单单单单单单单单单单断。系一结结
旦找到入口结结结结结结结结结结结结结结结结结结结结结结结结结结结结号,就从此号始行,不再行号判断,所以必加上break
结结结句,以便束switch结句。
,4,各case及default子句的先后次序,不影响程序行果。结结结结结
,5,多个case子句,可共用同一句,,。结结结结结结
例如,在[案例4.5]中的“case 10: ”和“case 9: ”共用句结结“printf("grade=A\n");
break;”,“case 5: ”~“case 0: ”共用句结结“printf("grade=E\n"); break;”。
,6,用switch结结结结结结结结结结结结句的多分支构程序,完全可以用if赋句或if赋句的嵌套来
赋赋。
(6) 赋赋赋赋赋赋赋构程序例2+bx+c=0的解,a?0,。案例1 求一元二次方程ax
#include "math.h"
main()
{float a,b,c,disc,x1,x2,p,q;
scanf(“%f,%f,%f”, &a, &b, &c);
disc=b*b-4*a*c;
if (fabs(disc)<=1e-6)/*fabs():求赋赋赋赋赋赋函数*
/
printf(“x1=x2=%7.2f\n”, -b/(2*a));/*赋赋赋出两个相等的根*/
else
{if (disc>1e-6)
{x1=(-b+sqrt(disc))/(2*a);/*求出两个不相等的赋赋根*/
x2=(-b-sqrt(disc))/(2*a);
printf("x1=%7.2f,x2=%7.2f\n", x1, x2); }
else
{p=-b/(2*a);/*求出两个共赋赋
根*/
q=sqrt(fabs(disc))/(2*a);
printf(“x1=%7.2f + %7.2f i\n“, p, q);/*赋赋赋赋出两个共根*/
printf(”x2=%7.2f - %7.2f i\n“, p, q);
}
}
system(“pause”);}
单明:由于数在算结结结结结结结结结结结结结结结结结结结结结结结结结结结结结机中存,常会有一些微小差,所以本案例判断disc是否结0-6的方法是:判断disc的是否小于一个很小的数,例如结结结结结结结结结结结结结结结结10,。
案例2已知某公司工结结结结结结结结的保底薪水500,某月所接的利结profit,整数,与利结结结提成的系如下,量位:结结结结结结结结结结结结结元,:
profit?1000没有提成,
1000,profit?2000提成10%,
2000,profit?5000提成15%,
5000,profit?10000提成20%,
10000,profit提成25%。
赋赋赋赋赋 算法要点:
结使用switch结结结结结句,必将利profit与提成的系,成结结结结结结结结结结结结结某些整数与提成的系。分结结结结结结结结结结结结结结结结结结析本可知,提成的化点都是1000的整数倍,1000、2000、5000、,,……如果将利结profit整除1000,当:结结结
profit?1000结结0、1
1000,profit?2000结结1、2
2000,profit?5000结结2、3、4、5
5000,profit?10000结结5、6、7、8、9、10
10000,profit结结10、11、12、……
结结结结结结结结结结结结结结结结结结结结结结结解决相两个区的重叠,最的方法就是:利profit先减1,最小增量,,然后再整除1000即可:
profit?1000结结0
1000,profit?2000结结1
2000,profit?5000结结2、3、4
5000,profit?10000结结5、6、7、8、9
10000,profit结结10、11、12、……
程序:赋赋
main()
{long profit;
int grade;
float salary=500;
printf("Input profit: ");
scanf("%ld", &profit);
grade= (profit – 1) / 1000;/*将利结-1、再整除1000,化成结结结 switch结句中的case结号*/
switch(grade)
{ case 0: break;/*profit?1000 */
case 1: salary += profit*0.1; break;/*1000,profit?2000 */
case 2:
case 3:
case 4: salary += profit*0.15; break;/*2000,profit?5000 */
case 5:
case 6:
case 7:
case 8:
case 9: salary += profit*0.2; break;/*5000,profit?10000 */
default: salary += profit*0.25;/*10000,profit */
}
printf("salary=%.2f\n", salary);
}
,循赋赋赋赋赋赋赋构程序
求1~100的和:
,1,用for赋句。
,2,用do-while赋句。
,3,用while赋句。
,4,用goto和loop。
main()
{ int n=1, sum=0;
loop: sum += n; n++;
if (n<=100) goto loop;
printf(“sum=%d\n”, sum);
}
其中“loop:”结结结结结结结结句号,格式:赋号: 赋句行,,其命名遵循结结结结结结结结符命名。goto赋
句格式:goto 赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋号,功能:使系向号所在的句行行。
,一,for赋句和while赋句
1,for结句的一般格式
for([赋赋赋赋量初],[循赋赋赋赋赋条件],[循赋赋赋赋赋量增])
{ 循赋赋赋赋赋赋体句,},最好加“{}”,
2,for结结结结结句的行程
,1,求解量“结结结”初表达式。
,2,求解“结结结”结结循表达式。如果其非条件0,行,结结结3,,否,结结结
至,4,。
,3,行结结结结“结结结”结结循循量增表达式,然后向体句,并求解
,2,。
,4,行结结for结结结结句的下一条句。
3,明结结
,1,量“结结结”“结结结”“结结结”初、循条件和循量增部分均可缺省,甚至全部缺省,但其的分号不能省结结结结结结结结结略。
,2,当循结结结结结结结结结结结结结结结结结结体句由一条句构成,可以不
使用合句形式,如上例所示。结结结结结结结结结结结结结
,3,“结结结结”结结结结结结结结结结结结循表达式,量初既可以是循量初的表达式,也可以是与此无结结结结结结结结结结结结结结结结的其它表达式,如逗号表达式,。例如,for(sum=0;i<=100;i++) sum += i;
for(sum=0,i=1;i<=100;i++) sum += i;
,4,“结结结”结结结结结结结结结结结结循部分是一个量,除一般的系,或条件
结结结结结结结结结结结结结结结,表达式外,也允是数,或字符,表达式。
注意:for循赋“”,,如果加后的括号不加了表示for循赋“赋赋赋的循体句空句。赋”赋赋赋赋
4,while赋句
,1,一般格式
while(循赋赋赋赋赋条件)
{ 循赋赋赋赋赋赋体句,}
,2,行程结结结结
1,求解“结结结”结结结循表达式。如果其非条件0,结2,,否结结3,。
2,行结结结结结结结结结结结结循体句,然后1,。
3,行结结while结句的下一条。
结然,while循结结是for循结结结“结结结”“结结结结量的一化形式,缺省初和循量增表达式,。结”
5,循嵌套赋赋赋
,1,循结结结结结结结结结结结结结结结结结句的循体内,又包含另一个完整的循结结结结结结结结结结结结结结结结结结结构,称循的嵌套。循嵌套的概念,
结结结结结结结结结结所有高言都是一的。
,2,for结句和while结结结结结句允嵌套,do-while结 句也不例外。
,二,直到型循赋do-while赋句
1,一般格式
do
{ 循赋赋赋赋赋体句; }
while(循赋赋赋赋赋条件);/*本行的分号不能缺省*/当循赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋体句由一条句构成,可以不使用合句形式。2,行程结结结结
,1,行结结结结结结结结结循体句。
,2,算结“结结结”“结结结”结结结 循条件表达式。如果循表达式的非条件0,真,,向,结结结结1,行,否,向,结结结结结结结结结结结3,。,3,结行do-while的下一条句。结结结
do-while循赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋赋句的特点是:先行循体句,然后再判断循赋赋赋赋条件。
,三,break赋句与continue赋句
1,一般格式: break,
continue,
2,功能
,1,break:行束强结结结结结结结结结结结结结结结结结结结结循,向行循句的下一条句。,2,continue:于结结for循结结结结结结结结结结结结结结,跳循体其余句,向“循赋赋赋赋赋赋赋赋量增量表达式”结结,于while和do-while循结结结结结结结,跳循体其余句,但向结结结结结结循赋赋赋赋赋条件的判定。
3,break和continue结结结结结结结结结结结句循控制的影响如5-4所示。4,明结结
,1,break能用于循结结结结句和switch结句中,continue只能用于循结结
句中。
,2,循嵌套结结结结结,break和continue只影响包含它的最内赋赋赋赋赋赋赋循,与
外结结结结结结循无。
,数 赋
I.,一,一数的定和引用赋赋赋赋赋赋赋赋赋
数同量一,也必先定、后使用。结结结结结结结结结结结结结结结结结结
一数是只有结结结结结结1个下的数,结结结结结定形式如下:结结结结结结
数据型数名结 结结[常量表达式] [,数名结结2[常量表达式2]……],
,1,数据型是指数“结”结结结结结结结结结元素的数据型。
,2,数名,与量名一,必结结结结结结结结结结结结结结结结结结结结结结遵循符命名。
,3,“”结结结结结结结结结结结结结结结常量表达式必用方括号括起来,指的是数的
元素个数,又称数度,,它是一个整型,其中可结结结结结结结结结结结结结结结结
以包含常数和符号常量,但不能包含量结结。
注意:C赋赋言中不允赋赋赋赋赋定数,与定数不同,。赋赋赋赋赋赋赋赋赋
,4,数结结结结结结结结结结结结结结结结结结结结结结结结结结结元素的下,是元素相于数起始地址的偏移量,所以从0结结始
序号。结结结
,5,数名结结中存放的是一个地址常量,它代表整个数的首地址。结结结结结结
同一数中的所有结结结结结结结结结结结结结结结结结结结结元素,按其下的序占用一段
结结结结结 的存元。
,二,一数赋赋赋赋赋赋赋赋元素的引用
引用数中的任意一个结结结结结结结结结结结结结元素的形式:
结结数名[下表达式结结结结]
1,“下表达式结结结结”结结结结结结结结结结结可以是任何非整型数据,取范是0~,元素个数-1,。
别别特强:在运行C结结结结结结结结结结结结结结结结结结言程序程中,系并不自数元素的下是否结结结结结结结结结结结结结结结越界。因此在写程序,保结结结结结结结结结结结结结结数下不越界是十分重要的。
2,1个数结结结结结结结结结元素,上就是1个量,它具有和相同型个结结结结结结结结结结结结结结量一的结结结结结结结结结结结结结结结结结结结结结属性,可以它行和参与各运算。
3,在C结结结结言中,数作1个整体,不能参加数据运算,只能个的结结结结结结结元素行理。结结结
,三,一数赋赋赋赋赋赋赋赋赋元素的初始化
初始化格式:
数据型数名结 结结[常量表达式],{初结结表}
,1,如果数的全部结结结结结结结结结结结结结结结结结结结结结结结结结结元素以初,定可以不指定数度,即常量表达式可以不填,系结结结结结结结结结结结根据初个数自确定,。如果被定数的度,与结结结结结结结结结结结初个数不同,数度不能省结结结结结结结结结结略。
,2,“初结结表”结结结结结结结结结结结结结结结结结结结结结结结结结结中的初个数,可以少于元素个数,即允只部分元素初。,3,根据存结结结结结结结结结结结结结结结型的不同,数有静数,static,和数,结结结结结auto,之分,根据定的位置不同,数有内部数,在函数内部定的结结结结结结结结结结结结结结结结结结结结结结结
数,和外部数,在函数外部定的数,之分。结结结结结结结结结结结结结结结结结结结结结结
,四,一数赋赋赋赋赋赋赋案例例
[案例1]:从上任意入结结结结结结结10个整数,要求按从小到大的序在结结结结结屏幕
上示出来。结结结结结
排序的方法有很多,本结结结结结结结采用冒泡法。
冒泡法的基本思想:通相两个数之的比和结结结结结结结结结结结结结结结结交,使
排序,数,小的数结结结结结结结结结结结结结结结结结结结结结逐从底部移向部,排序
结结结结结结结结结结结结结结结结结结结结大的数逐从部移向底部。就像水底的气泡一
逐结结结结结结结结结结向上冒,故而得名。
程序如下:
#include "stdio.h"
#define NUM 10/*定符号常量,数据个数结结结结结结结结结结N,*/
main()
{ int data[NUM];/*定结1个1结结整型数data*/
int i,j,temp;/*定结结结结结结结结结结循量和量*/
/*结函数clrscr():清屏*/
printf("Please input 10 numbers:\n");
for(i=0; ii; j--) /*内循结结结结结结结:行趟比每*/
if(data[j]
本文档为【C语言学习】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。