计算机最基本的处理数据的单元就是计算机的指令,同时一系列计算机指令的有序组合就构成了程序。下面是计算机系统常见的7条指令:
假设该计算机指令系统的指令名(如 Store, Add 等),以及所涉及的数据X,Y,Z,P等。
指令一:Input X ; 将当前数据储存到X单元中
指令二:Output X ; 将X单元中的数据输出
指令三:Add X Y Z ; 将X与Y中的数据相加并储存到Z中
指令四:Sub X Y Z ; 将X与Y中的数据相减并储存到Z中
指令五:BranchEq X Y P ; 比较X与Y,若相等则程序跳转到P处执行,不等则继续执行下一条指令
指令六:Jump P ; 程序跳转到P处执行
指令七:Sex X Y ; 将Y单元值设为X
为了让计算机按我们的意愿处理数据,所以程序设计语言必须具有数据表达和数据处理(称为控制)的能力。
1. 数据表达
a.几种基本的数据类型可直接使用,如 整型(int), 实型又称浮点型(double),字符型等等,这些基本数据类型在程序中的具体对象主要为两种形式:变量(variable) 和 常量(constant)。
b.表达复杂的数据时还可以构造新的具体数据类型,如数组(array),结构(structure),文件(file),指针(pointer)等。
2.流程控制
下面是三种常见的基本控制结构:
(1)顺序控制结构:一个程序模块执行完自然到下一个模块
(2)分支控制结构:即判断条件,若条件满足则执行该程序模块,否则执行其他的程序模块
(3)循环控制结构:通过检测是否满足相应条件,若满足则重复执行该程序模块直到循环跳出即停止循环
为了让计算机能够理解在程序中所描述的工作,用程序设计语言所写的程序必须符合相应语言的语法(grammar)。
下面是C语言最主要的语言要素:
1.C语言中的词
(1)标识符,C语言中的标识符由字母,数字,和下划线组成,其中第一个字符必须为字母或下划线,如 _name。 且标识符的字母大小写的形式是有区别的。
C语言中最主要的标识符:
a.保留字 :赋予特定含义和专门的用途的标识符,它们主要与数据类型和语句有关,如int,float,double,char,typedef,以及与语句相关的if,else,while,for,break等等。
b.用户自定义标识符:其包括程序中定义的变量名,数据类型名,函数名和符号常量名。
(2)常量:定义的不变的量,但常量是有数据类型的。
(3)运算符:运算符表示对各种数据类型数据对象的运算。
如+(加),-(减),*(乘),/(除),%(取余),>(大于),>=(大于等于),==(等于),=(赋值)等。
(4)分隔符:用于词之间的分隔
常见的分隔符:如; , # [,] (,)等等。
2.C语言中的主要语法单位
(1)表达式:运算符与运算对象的有意义组合就形成了表达式。表达式中可以包含多种数据类型的运算符,且运算符有运算优先级。
(2)变量定义:变量也具有数据类型,在定义变量时需要说明相应变量的类型。
变量定义的基本形式:类型名 变量名;
如:int X; 即定义了X变量
(3)语句:语句是程序最基本的执行单位,程序的功能通过执行一系列语句来实现。
a.表达式语句:即最基本的变量之间的表达式形成的语句
b.分支语句:分支语句实现分支控制过程,根据不同的条件执行不同的语句。
具体有两种形式如下:
if-else语句:下面是一个级联的if-else语句
#include
int main()
{
printf("请输入类型:");
int type;
scanf("%d", &type);
if (type==5)
{
printf("我的纸飞机呀");
}
else if(type==2)
{
printf("飞呀飞");
}
else if(type==1)
{
printf("飞到了芦荡边");
}
else
{
printf("game over");
}
return 0;
}
switch语句:
#include
int main()
{
printf("请输入类型:");
int type;
scanf("%d", &type);
switch (type)
{
case 5:
printf("我的纸飞机呀");
break;
case 2:
printf("飞呀飞");
break;
case 1:
printf("飞到了芦荡边");
break ;
default:
printf("game over");
}
return 0;
}
c.循环语句:C语言实现循环控制的过程具体有三种形式,即while语句,for语句,do-while语句
while循环:读取位数问题
#include
int main()
{
printf("输入所需读取位数的数:");
int x;
int n=0;
scanf("%d", &x);
n++;
x/=10;
while (x>0)
{
n++;
x/=10;
}
printf("输入的数位数为:%d",n);
return 0;
}
for循环: 求阶乘问题
#include
int main()
{
int n;
scanf("%d", &n);
int value=1;
int i=1;
for (i=1 ; i<=n ; i++)
{
value *=i;
}
printf("求出的阶乘为:%d", value);
return 0;
}
do-while循环:猜数问题(其中含语句嵌套)
#include
#include
#include
int main()
{
srand(time(0));
int number=rand()%100+1;
int a;
int count;
printf("我已经想出一个1到100的数\n");
do {
printf("请猜出这个数:");
scanf("%d", &a);
count ++;
if (a>number)
{
printf("你猜的数大了\n");
}
else if(a
三大循环的区别于联系:
for循环:一般用于有限次循环
do-while循环:一般用于循环必须进行一次的循环
while循环:上述其他的循环一般用while循环
d.复合语句:一般用{}将若干语句顺序组合在一起形成一个复合语句。
(4)函数定义与调用:即开始时对所需的函数进行定义与调用。
(5)输入与输出:通过调用系统库函数中的有关函数(如printf()和scanf()函数)来实现数据的输入与输出。可以借鉴上述程序。
这里n项为有限个,则通过for循环去实现 ,先定义一个n的值进行有限次求和,再通过表达式去定义sum和i,最后通过for循环的语句进行求和。
#include
int main()
{
int n;
int i;
double sum;
int sign=1;
printf("请输入n的取值:");
scanf("%d", &n);
for (i=1; i<=n ; i++)
{
sum +=sign*1.0/i;
sign=-sign; //用于实现一正一负的项
}
printf("当n为%d时求和值为%f", n ,sum);
return 0;
}