从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构,分支结构,循环结构。这三种基本结构可以组成所有的各种复杂程序。
C语言基本语句介绍
C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的。
C语句可分为以下五类:
1.表达式语句:表达式语句由表达式加上分号“;”组成,其一般形式为:
表达式;
执行表达式语句就是计算表达式的值;
2.函数调用语句:由函数名,实际参数加上分号“;”组成,其一般形式为:
函数名(实际参数表);
执行函数语句就是调用函数体并把实际参数赋予函数定义中的形式参数,然后执行被调用函数体中的语句,求取函数值。
3.控制语句:控制语句用于控制程序流程,以实现程序的各种结构方式。它们由特定的语句定义符组成。C语言有九种控制语句。可分为以下三类:
1)条件判断语句:if语句,switch语句;
2)循环执行语句:do while语句,while语句,for语句;
3)转向语句:break语句,goto语句,continue语句,return语句。
4.复合语句:把多个语句用{}括起来组成的一个语句称为复合语句。在程序中应把复合语句看成是单条语句,而不是多条语句。
5.空语句:只有分号“;”组成的语句称为空语句。空语句是什么也不执行的语句。在程序中空语句可用来作循环体。
赋值语句:
赋值语句是由赋值表达式加上分号构成的表达式语句。
一般形式为:变量=表达式;
赋值语句的功能和特点都与赋值表达式相同。它是程序中使用最多的语句之一。
在赋值语句的使用中需注意以下几点:
1.由于在赋值符号“=”右边的表达式又可以是一个赋值表达式,因此,以下形式:
变量=(变量=表达式);是成立的,从而形成嵌套情形。其展开之后的一般形式为:
变量=变量=…=表达式;
例:a=b=c=d=e=5;按照赋值语句的右结合性,实际上等效于:
e=5;d=e;c=d;b=c;a=b;
2.赋值表达式和赋值语句的区别:
赋值表达式是一种表达式,它可以出现在任何允许表达式出现的地方,而赋值语句则不能。
下述语句是合法的:
if((x=y+5)>0)z=x;
语句的功能是若表达式x=y+5大于0则z=x。
下述语句是不合法的:
if((x=5+y;)>0)z=x;
因为x=y+5;是语句,不能出现的表达式中。
数据输入输出的概念及在C语言中的实现:
putchar函数(字符输出函数)
putchar函数是字符输出函数,其功能是在显示器上输出单个字符。
其一般形式为:putchar(字符变量);
例:putchar('A');(输出大写字母A)
putchar(x);(输出字符变量x的值)
putchar('\101');(输出大写字母A)
putchar('\n');(换行)
对控制字符则执行控制功能,不在屏幕上显示。使用putchar函数前必须要用文件包命令
#include<studio.h>或#include"studio.h"
例:
#include<studio.h>
void main()
{
char a='B',b='o',c='k';
putchar(a);putchar(b);putchar(c);putchar('t');
putchar(a);putchar(b);
putchar('\n');
putchar(b);putchar(c);
}
getchar函数(键盘输入函数)
getchar 函数的功能是从键盘上输入一个字符。
其一般形式为:getchar();
通常把输入的字符赋予一个字符变量,构成赋值语句。
例:char c;
c=getchar();
例:
#include<studio.h>
void main()
{
char c;
printf("input a character\n");
c=getchar();
putchar(c);
}
printf函数(格式输出函数)
printf函数称为格式输出函数,其功能是按用户指定的格式,把指定的数据显示到显示屏幕中。printf是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求使用printf函数之前必须包含stdio.h文件。
printf函数调用的一般格式为:
printf(“格式控制字符串”,输出表列);
其中格式控制字符串用于指定输出格式。格式控制字符串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型,形式,长度,小数数位等。
如:%d表示按十进制整型输出
%ld表示按十进制长整型输出
%c表示按字符型输出
非格式字符串在输出时原样照印,在显示中起提示作用。
输出表列中给出了各个输出项,要求格式字符串和输出项在数量和类型上应一一对应。
例:
#include<stdio.h>
void main()
{
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);
}
格式的输入与输出
1.输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际数输出,若实际位数少于定义的宽度则补以空格或0;
2.精度:精度格式以“.”开头,后跟十进制整数。意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度,则截去超过部分。
3.长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。
例:
#include<stdio.h>
void main()
{
int a=15;
float=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,%5.4f,%e\n",c,c,c);
printf("d=%c,%8c\n",d,d);
}
使用printf函数时还要注意一个问题,那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可以从右到左。
例1:
#include<stdio.h>
void main()
{
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,i++,i--,-i++,-i--);
}
例2:
#include<stdio.h>
void 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语句输出,但从结果可以看出是不同的。