霜淮子的c语言程序设计,大家可以通过阅读我的文章学习c语言程序设计的一些基础知识,作者水平有限,如果发现错误,评论区留言!万分感谢!
欢迎订阅专栏《c语言程序设计》
目录
前言
阅读前面的文章你,相信大家已经安装好了c语言的编程软件。尝试了一些简单的程序了,拿这篇文章开始就讲述教大家如何运用c语言写一些程序。
2.1、变量
变量的定义
变量是一个保存数据的地方,用一个变量保存了数据,它才能参加到后面的计算当中。
变量定义的一般形式:
<类型名称><变量名称>
eg:
int price;
int amout;
int price amout;
- 变量 需要一个名字,变量的名字是一种“标识符”,意思它用来识别这个和那个的不同的名字。
- 标识符有标识符的构造规则。
基本原则是:
标识符只能由字母、数字、和下划线组成,数字不可以出现在第一个位置上,C语言的关键字不可以用作标识符。
赋值与初始化
赋值:
和数学不同,在数学中a=b表示关系,即a和b的值一样,而在计算机中表示的是一个动作,将b的值值赋给a,而不是他们相等。
关系是静态的,而动作的动态的,在数学中,a=b,b=a是等价的,而在程序设计中,意思是完全相反的。
初始化:
eg:
#include<stdio.h>
int main ()
{
int i=0;
int j;
j = j+10;
print("%d\n",j)
return 0;
}
当中, int i = 0;就是初始化,
c语言并没有强制要求所有的变量在定义的地方做初始化,但是所有的变量在第一次使用之前应该被赋值一次。
但是如果没有初始化呢?
当计算机没有找到 i 的值的时候,这个 i 在什么地方,这个地方原本有一些什么样的值在里面的话,这个 i 就是什么了,
变量的初始化形式:
<类型名称><类型变量>=<初始值>
eg:
int price = 0;
int amount = 100;
int price = 0,amount = 100;
组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值。
变量类型:
int price = 0;
在这一行,定义了一个变量,变量的名字是price,类型是int,初始值是0,
C是一种有类型的语言,所有的变量在使用前必须定义或者声明,所有的变量必须有确定的数据类型,数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定的数据,程序运行过程中也不能改变变量的类型。
对于C99,我们可以在程序的任意位置进行定义,只要是在它第一次使用之前都可以,而ANSI C只能在代码开头的地方定义变量,一旦开始了计算就不可以在定义变量了。
程序的输入
#include<stdio.h>
int main (){
int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
int change=100-price;
printf("找您%d元。\n",change);
return 0;
}
scanf("%d",&price);
要求scnaf这个函数读入下一个整数,读到的结果赋值给变量price
常量VS变量
在程序中,其值不能改变的量称为常量。
#include<stdio.h>
int main (){
const int AMOUNT=100; //定义了一个常量
int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
int change=AMOUNT-price; //直接用AMOUNT去减就ok
printf("找您%d元。\n",change);
return 0;
}
这样做有很多好处,当人们去看这个程序的时候一看AMOUNT就知道是金额的意思,而且当我们需要修改总金额的时候,我们只需要在开头的地方修改就可以了,
const是一个修饰符,加在int前面,用来给这个变量加上一个const(不变的)的属性,这个const属性表示这个变量的值一旦初始化,就不能在修改了
浮点数
带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包括分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中不会遇见定点数,人们借用浮点数这个词来表示所有带小数点的数。
#include <stdio.h>
int main(){
printf("%d\n",10/3);
return 0;
}
大家可以在程序中分别计算10/3=?和10.0/3=?
两个整数的运算的结果就只能是整数,
10和10.0在C语言中是完全不同的数,
10.0是浮点数
对于浮点数的输入我们需要用“%lf”输出用“%f”
2.2、表达式
表达式:运算符和算子,取余计算,程序就是数据加计算
一个表达式就是一系列的运算符和算子的组合;用来计算一个值;
在表达式中又有运算符和算子
运算符:
是指进行运算的动作,比如加法运算符“+”,减法运算符“-“’。
算子
是指参与运算的值,这个值可能是一个常数,还可能是一个方法的返回值。
eg:
a=b+5
a;b;5;都是算子,+;=;它们都是运算符
运算符 优先级
举例让我们求平均值
*写一个程序输入两个整数,输出它们的平均值,我们可以写出如下代码
int a,b;
scanf("%d %d",&a,&b);
double c =(a+b)/2.0; //除以2.0是为了保证它的精度
printf("%d 和%d的平均值=%f\n",a,b,c);//doble的变量需要用%f输出
在这个地方我们来看double=(a+b)/2.0这行代码,如果没有括号,那么这个程序就会先算b/2.0,
下面我们来看我们所学过的运算符的优先级别
在一个表达式当中,如果出现多个运算符那就需要遵循这个规律,而单目的运算符是优先于乘除的,结合关系是指在同一优先级别下,运算顺序从做向右一次进行,比如a+b+c,它会先算a+b,然后再加c。
赋值也是运算,也有结果。
a=6的结果就是a被赋的值,也就是6;
a=b=6;----------------a=(b=6).赋值这个运算是自右向左的结合,所以对于计算机来说,a是等于b=6的值,ok ,
交换变量和Dev的调试功能
假设已经有了
int a=8;
int b=5;
如何交换a和b的值?
程序是按照步骤执行的,而不是关系a=b;b=a;是依次执行的,结果使得a和b都得到了b原来的值。
这时候我们需要引入第三个量,用来把它用做交换的媒介;
我们写出如下程序试试看
#include <stdio.h>
int main (){
int a=5;
int b=6;
int t;
t=a;
a=b;
b=t;
printf("a=%d,b=%d\n",a,b);
return 0;
}
可以看到结果a,b的值交换成功,
那这个是为什么交换成功的,有没有什么办法可以看到程序是如何运行成功的,这个时候我们级需要用到菜单栏里面的调试功能,
接下来讲如何进行调试?
在调试之前我们需要在程序中先做一个断点?我们选中程序前面的数字,我们想让它跑到哪一行就在哪一行前面选,但是我们选中的哪一行是不被执行的,
这个时候我们就可以在旁边列出变量的值,接下来程序窗口下面的操作就可以帮助我们进行下一步还是上一步,这不仅可以帮助我们更好的去理解计算机是如何做计算的,在一些复杂的程序中还可以帮助我们去寻找错误。
复合赋值和递增递减
除了我们平时所学的一些加减乘除之外,c语言还有其他一些很有意思的计算,包括四则运算都可以和赋值符号结合起来形成一个符合赋值,比如:
“+=”,“-=“,”*=“,”/=“,”%=“。
eg:total+= 5;
实际上就是total=total+5;
注意两个运算符中间不要有空格,
递增和递减
“++”和“--”是两个会让你特殊的运算符,它们是单目运算符,这两个算子还是变量,这两个运算符分别叫做递增运算符和递减运算符,它们的作用就是给这个变量+1或者-1。
++和--可以放在变量的前面叫做前缀形式;
也可以放在变量的后面叫做后缀形式。
a++的值是a+1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加1l.
大家可以编写程序查看两者的结果。
#include<stdio.h>
int main(){
int a;
a=10;
printf("a++=%d\n",a++);
printf("a=%d\n",a);
printf("++a=%d\n",++a);
printf("a=%d\n",a);
return 0;
}
结果如下:
a++=10
a=11
++a=12
a=12
总结一下
-END-