投影3 省二级C等级考试基础考点2基本语句.docx
- 文档编号:29959564
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:20
- 大小:23.66KB
投影3 省二级C等级考试基础考点2基本语句.docx
《投影3 省二级C等级考试基础考点2基本语句.docx》由会员分享,可在线阅读,更多相关《投影3 省二级C等级考试基础考点2基本语句.docx(20页珍藏版)》请在冰豆网上搜索。
投影3省二级C等级考试基础考点2基本语句
C语言的基本语句
C程序有三种基本结构:
(1)顺序结构
顺序结构由一组顺序执行的语句组成
实现顺序结构的语句:
表达式语句、复合语句、空语句、函数调用语句。
(2)条件选择结构
条件选择结构由一个条件和几个供选择的语句组成
条件判断语句:
if语句和switch语句
(3)循环结构
循环结构由一个条件和一个或一组供重复执行的语句组成
循环执行语句:
while语句,do-while语句,for语句
辅助控制语句:
break语句、continue语句和return语句。
实现顺序结构的语句
1.实现顺序结构的语句(*****)
1)表达式语句(*****)
表达式语句由表达式加上分号“;”组成,其一般形式为:
表达式;
分号“;”是C语句不可缺少的组成部分。
执行表达式语句就是计算表达式的值。
最典型的表达式语句是赋值语句,由赋值表达式加分号组成。
变量=表达式;
a=3;
i++;
嵌套
变量=(变量=表达式);
赋值运算符是右结合的,所以括号可以缺省。
2)函数调用语句(*****)
由函数名、实际参数加上分号“;”组成,其一般形式为:
函数名(实际参数表);
func();
printf(“Hello,world!
\n”);
3)空语句(*****)
只由分号“;”组成的语句称为空语句。
什么也不执行,必不可少
4)复合语句(*****)
把多个语句用花括号“{……}”括起来的一组语句,称为复合语句。
复合语句看作单条语句,不是多条语句
复合语句中的各条语句都必须有分号“;”,但在“}”外没有分号。
复合语句在语法上和单一语句相同,而且可以嵌套。
例如,下面程序段的花括号中就是一个复合语句。
inta=5,b=3;intt;
if(a>b)
{t=a;a=b;b=t;}
2.标准设备文件输入输出函数(****)
简单说来,一个程序都包括3个部分:
输入、计算、输出。
C语言中,所有数据的输入输出都是由库函数实现的,属于函数调用语句。
使用标准输入输出库函数时要用到“stdio.h”文件:
#include
或者:
#include"stdio.h"
由于printf()函数和scanf()函数使用频繁,系统允许直接使用这两个函数。
其它的输入输出函数都必须有上述预编译命令。
1)格式输出函数printf()(*****)
按指定格式向显示器输出数据,printf函数一次可以输出多个不同类型的数据。
格式:
printf("格式控制串",输出表);
(1)格式控制串:
1格式说明:
%[修饰符]格式字符,用于指定输出格式
2普通字符或转义字符序列:
原样输出
(2)输出表:
要输出的数据,一般用变量名表示,也可以没有,输出多个数据时以“,”分隔。
例如:
inta=3,b=4;
printf("a=%d,b=%d\n",a,b);
输出结果:
?
?
?
printf函数的格式说明字符
数据类型
格式字符
含义
整型
d或i
以十进制显示int类型整数
u
以十进制显示unsignedint类型整数
o
以八进制显示int类型整数
x或X
以十六进制显示int类型整数
实型
f
以小数形式输出float或double型数值
e或E
以指数形式输出float或double型数值
g或G
选用%f或者%e格式,按较短的输出
字符和字符串
c
输出单个字符
s
输出字符串
格式修饰符:
%ld:
输出长整型数
%md:
m为一个整数,输出的整数占m列,不足左边补空格,不够全部输出
%-md:
与%md的区别是不足有右边补空格,即左对齐
%m.nf:
输出的实数占m列,小数点也算一列,其中小数有n位,采用四舍五入的方式,不足左边补空格。
%.nf:
输出的实数保留n位小数。
不指定总共占多少列。
1格式字符要用小写。
2格式字符与输出项个数应相同,按先后顺序一一对应。
格式字符个数小于输出表列个数时,多余的输出表列的项不输出。
3输出“%”、“\”、“"”、“'”:
采用“%%”、“\\”、“\"”、“\”。
4输出转换
unsignedintu=65535;
printf("%d,%o,%x,%u\n",u,u,u,u);
输出结果:
?
?
?
?
2)格式输入函数scanf()(*****)
按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束。
格式:
scanf(“格式控制串”,地址表列)
地址表列:
变量的地址,常用取地址运算符“&”。
格式字符:
与printf函数类似,主要有d,o,x,u,c,s,f,e。
例如:
scanf("%d",&a);
scanf("%d,%d",&a,&b)
scanf("%d%d",&a,&b)
1scanf与printf格式的区别就是在scanf的变量名前必须有“&”。
2输入分隔符的指定:
一般以空格、TAB键或回车键作为分隔符。
若是格式符“%c”则不需分隔符。
3在写程序的时候尽量不要在scanf中有原样字符并指定宽度。
4对于长整型,即超过-32768~32767范围的整数,要用“%ld”格式输入。
如:
scanf("%ld",&a);
5当格式控制为“%s”时,数组名前就不再需要“&”了。
如:
scanf("%s",str);
6当格式控制为“%s”时,输入的字符串中不能有空格。
若要输入空格可以用循环语句和“%c”格式或者gets函数输入。
3)字符输入函数getchar()(***)
功能:
从键盘读一字符。
格式:
getchar();
例如:
c=getchar();
1本函数没有参数。
2getchar()赋给的变量可以是char或者int型的。
3getchar()只读取当前字符,即使是空白字符或回车也照读不误。
有时用来吸收多余的回车。
4getchar()一次只接收一个字符,不需分隔符,输入数字也按字符处理,输入多于一个字符时,只接收第一个字符。
4)字符输出函数putchar()(***)
功能:
把一个字符输出到显示器上。
格式:
putchar(c);
参数c为字符型或整型数据,可以为字符常量、转义字符、变量或表达式。
例如:
c=65;putchar(c);
a='B';putchar(a);
putchar(‘C’);
putchar('\n');
5)字符串输入函数gets()(****)
从键盘输入一以回车结束的字符串放入字符数组中,并自动加‘\0’。
gets(str);
例如:
charstring[20];
gets(string);
1括号中的参数为数组名。
2输入串长度应小于字符数组维数。
3能输入空格。
6)字符串输出函数puts()(****)
功能:
向显示器输出字符串(输出完,换行)
puts(str);
例如:
puts(string);
1括号中的参数为数组名。
2字符数组必须以‘\0’结束。
实现选择结构的语句
实现选择结构的语句也叫分支语句
所谓分支,指的是根据不同的条件完成不同的动作
有if语句和switch语句两种。
1.if语句(*****)
1)if语句的形式(*****)
(1)最简单的if语句
if(表达式)语句
如果表达式非0,就执行语句,否则什么都不执行。
例如:
if(a>0)count++;
(2)带else的if语句
if(表达式)语句1else语句2
如果表达式非0,就执行语句1,否则执行语句2。
例如:
if(x>0)y=x;
elsey=-x;
(3)多分支的if语句
if(表达式1)语句1
elseif(表达式2)语句2
elseif...
elseif(表达式n)语句n
else语句n+1
这个if语句尽管很长,但只能算一个语句。
其功能是:
依次判断表达式的值,当出现某个值为真时,执行其相应的语句。
如果所有的表达式都不成立,则执行语句n+1。
例如:
if(mark>=90)grade='A';
elseif(mark>=80)grade='B';
elseif(mark>=70)grade='C';
elseif(mark>=60)grade='D';
elsegrade='E';
1if之后的括号是语句的一部分,不是表达式的一部分,所以是必不可少的。
2if语句中的“语句”可以是任何语句,包括复合语句,也可以又是一个if语句。
2)if语句的嵌套(*****)
如果if语句中的“语句”也是if语句,那就构成了嵌套的if语句。
嵌套的if语句有很多种形式,其中的任何一个语句都可以是if语句,这就形成了很复杂的逻辑关系。
如果嵌套的if语句中有多个if和多个else,那么,else究竟与哪个if配对呢?
if-else的配对原则:
else总是和它前面离它最近的未配对的if配对。
例如,请看下面的程序段,其中的else与哪个if配对?
if(a==b)
if(b==c)
printf("a==b==c");
elseprintf("a!
=b");
若进行如下修改:
if(a==b)
{if(b==c)
printf("a==b==c");
}
elseprintf("a!
=b");
else与哪个if配对?
?
?
1else不能单独使用,必须与if配对使用。
2要实现if与else的正确配对,在需要的时候加一对花括号{}。
2.switch语句和break语句(****)
如果将多分支的if语句用switch语句来表示,其逻辑关系看起来将更直观。
switch语句又称为开关语句。
1)switch语句的形式(***)
switch语句的一般形式如下:
switch(表达式)
{caseE1:
语句组1;break;
caseE2:
语句组2;break;
……
caseEn:
语句组n;break;
[default:
语句组;break;]
}
2)switch语句的执行过程(****)
首先计算switch括号中的表达式的值,与case后面的某个Ei进行比较,和哪个匹配,就执行该case后面的语句组。
如果与E1~En都不匹配时,则执行default后面的语句组。
例如:
根据输入字母输出字符串。
#include
main()
{intc;
printf("Entermornorhorother:
");
c=getchar();
switch(c)
{case'm':
printf("\nGoodmorning!
\n");break;
case'n':
printf("\nGoodnight!
\n");break;
case'h':
printf("\nHello!
\n");break;
default:
printf("\n?
?
?
?
?
?
?
?
\n");break;
}
}
当键盘输入为“m”的时候,输出为?
?
?
当键盘输入为“n”的时候,输出为?
?
?
当键盘输入为“h”的时候,输出为?
?
?
当输入为其他的字符时,输出为?
?
?
1switch、case、default都是关键字,case、default只能用在switch语句中。
2花括号中可以有任意多个开始于case的子句和一个可选的default子句。
3case后是一个常量表达式,只能有常量和运算符,不能有变量。
case与常量表达式之间必须有空格。
各整型常量表达式必须互不相同。
4语句组可以包含任意多条任意语句,不过最后一条通常是“break;”语句。
若无break,则继续执行后续语句,直到遇到break或者switch语句结束才终止。
5若无default语句,也没有和case相匹配的值,则什么也不执行,直接跳出switch语句。
6case与default的先后顺序可以变动,不会影响程序执行结果。
7case后可包含多个可执行语句,且不必加{}。
8多个case可共用一组执行语句。
9switch语句可嵌套。
10switch语句经常放在循环中。
3)switch语句的几种特殊情况(***)
(1)没有break语句的switch语句
switch(score)
{case5:
printf("Verygood!
");
case4:
printf("Good!
");
case3:
printf("Pass!
");
case2:
printf("Fail!
");
default:
printf("dataerror!
");
}
当score为5时,输出:
?
?
?
当score为3时,输出:
?
?
?
(2)多个case可共用一组执行语句
switch(c)
{case'A':
case'B':
case'C':
case'D':
printf("score>60\n");break;
default:
printf("Nopass\n");break;
}
(3)switch语句的嵌套
switch语句中的case后面的语句可以为任何语句,当然也可以为switch语句,这就形成了switch语句的嵌套形式。
voidmain()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("\na=%d,b=%d",a,b);
}
运行结果:
a=?
b=?
实现循环结构的语句
循环结构可以反复多次地执行有限条语句。
循环结构有2种:
当型循环和直到型循环。
C语言可实现循环的语句有:
用goto和if构成循环
while语句
do-while语句
for语句。
1.while语句(当型)(*****)
while语句的一般形式:
while(表达式)
循环体语句;
while语句的特点是:
先判断表达式,后执行循环体,循环体有可能一次也不执行。
while语句只有一个表达式和一个语句,为了实现通常的循环结构,要把初始化部分放在循环前。
例如:
用while求和:
sum=1+2+3+……+100
#include
main()
{inti,sum=0;
i=1;
while(i<=100)
{sum=sum+i;
i++;
}
printf("%d",sum);
}
1循环体可为任意类型的一条语句,常用复合语句。
2循环体中一般应该含有修改循环控制变量的值的语句,以便使循环能正常结束。
3下列情况,退出while循环:
● 条件表达式不成立(为零)。
● 循环体内遇break,return,goto语句。
4无限循环的形式:
while
(1)循环体;
2.do_while语句(直到型)(*****)
do_while语句的一般形式:
do
循环体语句;
while(表达式);
do-while语句的特点是:
先执行循环体,后判断表达式,不管循环条件是否成立,至少执行一次循环体。
例如:
用do-while求和:
sum=1+2+3+……+100
#include
main()
{inti,sum=0;
i=1;
do
{sum+=i;
i++;
}while(i<=100);
printf("%d",sum);
}
1当初始条件为真,while和do-while的功能是一样的;
当初始条件为假,while一次也不执行,而do-while执行一次。
2“while(表达式)”后面的分号不可省略。
3.for语句(*****)
for语句一般应用形式:
for(表达式1;表达式2;表达式3)
循环体语句;
for语句的执行过程如下:
第一步:
执行表达式1,初始化部分,只执行一次。
第二步:
执行表达式2,测试部分,进行条件判断,为0就退出循环,不为0则执行第三部。
第三步:
执行循环,并执行表达式3,修改循环条件。
重复上述第二步、第三步,直到表达式2为0时退出循环。
例如:
用for循环求和:
sum=1+2+3+……+100
#include
main()
{inti,sum=0;
for(i=1;i<=100;i++)
sum+=i;
printf("%d",sum);
}
1for语句中的表达式1一般用来表示循环变量赋初值,表达式2表示循环条件;表达式3表示循环变量增值。
2三个表达式可以为类型任意,超过一个语句时可用逗号表达式。
例如:
for(s=0,i=1;i<=100;i++)s=s+i;
3表达式1,表达式2,表达式3都可以省略,但分号“;”不可省。
●缺省表达式1的情况:
for(;i<=100;i++)s=s+i;
s,i应先赋值
●缺省表达式2的情况:
for(i=1;;i++)s=s+i;
此为无限循环,条件为“真”。
循环体中加上if语句和break,就可以结束循环,下述。
●缺省表达式3的情况:
for(s=0,i=1;i<=100;){s=s+i;i++;}
●缺省表达式表达式1和表达式3,相当于while语句:
for(;i<=100;)循环体
等价于while(i<=100)循环体
●三个表达式全部缺省,则为无限循环,形式如下:
for(;;)循环体
●循环体为空语句的情况,分号不能缺省:
for(s=0,i=1;i<=100;s=s+i,i++);
●循环变量i从1变到100,同样也可以从100变到1:
for(i=100,s=0;i>=1;i--)s+=i;
4.几种循环的比较(***)
(1)在很多情况下,三种循环可以实现相同的功能。
(2)for、while是当型循环,do_while是直到型循环,所以do_while至少会执行一次,而for和while有可能一次也不执行。
(3)相比而言,for循环最灵活,使用最多,一般在循环次数比较确定的情况下使用。
5.多重循环(*****)
循环可以嵌套,这就形成了多重循环。
编程输出以下的星形图案
*
***
*****
*******
*********
main()
{inti,j;
for(i=1;i<=5;i++)
{for(j=1;j<=(5-i);j++)printf("");
for(j=1;j<=i*2-1;j++)printf("*");
printf("\n");
}
}
其他语句
C语言的辅助控制语句主要有:
break语句、continue语句和return语句。
1.break(****)
功能:
终止并跳出循环体或switch开关体。
break语句的形式如下:
break;
1switch语句中,break语句会终止其后语句的执行,跳出switch语句,执行switch语句后第一个的语句。
2在循环中遇到break语句时,循环立即终止,程序转到循环体后的第一个语句去继续执行。
break语句在循环中使用时,总是与if一起使用,当条件满足(或不满足)时,负责退出循环。
3break不能用于循环语句和switch语句之外的任何其它语句中。
4如果循环体中使用switch语句,而break出现在switch语句中,则它只用于结束switch,而不影响循环。
5break语句只能结束包含它的最内层循环,而不能跳了多重循环。
当是嵌套的多层循环,break只是退出最内层的循环。
就是说break只能终止并跳出最近一层的结构。
6如果一个循环的终止条件非常复杂,那么使用break语句来实现某些条件比用一个循环表达式来表达所有的条件容易得多。
例如下面的程序结构,break语句的执行只能从while循环中退出,继续执行for循环的其它语句,而不是退出外层循环。
for()
{……
while()
{……
if()break;
……
}
……
}
例如:
输出圆面积,面积大于100时停止
#definePI3.14159
main()
{intr;
floatarea;
for(r=1;r<=10;r++)
{area=PI*r*r;
if(area>100)break;
printf("r=%d,area=%.2f\n",r,area);
}
}
又如:
小写字母转换成大写字母,直至输入非小写字母字符。
#include
main()
{inti,j;
charc;
while
(1)
{c=getchar();
if(c>='a'&&c<='z')putchar(c-'a'+'A');
elsebreak;
}
}
2.continue(***)
功能:
结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。
continue语句的形式如下:
continue;
下面程序的功能是从键盘输入十个整数,求正数的个数及其平均值。
#include
main()
{inti,num=0,a;
floatsum=0;
for(i=0;i<10;i++)
{scanf("%d",&a);
if(a<=0)continue;
num++;
sum+=a;
}
printf("%dplusinteger'ssum:
%6.0f\n",num,sum);
printf("Meanvalue:
%6.2f\n",sum/num);
}
1continue语句仅用于循环语句中,不能用在其它任何地方。
2continue与break语句的区别:
continue只是结束本次循环,而不是终止整个循环语句的执行
break则是终止整个循环语句的执行,转到循环语句后的下一条语句去执行。
3.return语句(*****)
return语句用于函数中,功能是从函数返回,使执行的函数返回到调用该函数的函数中。
在函数中,如果碰到return语句,那么程序就会返回调用该函数的下一条语句执行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 投影3 省二级C等级考试基础考点2基本语句 投影 二级 等级 考试 基础 考点 基本 语句