第3天:7天学会C语言,每天5分钟,不需要基础
昨天讲了系统安装,今天可以继续讲编写程序了。
先把昨天的作业给做了,昨天的作业是编写C语言程序输出以下图形:
程序如下:
怎么样?很简单吧?
复习一下,每一行第2个双引号前面的 \n 是什么?对了,是换行。
上述程序就是输出5行信息,或者说输出了5行字符串。
字符串是C语言的专业术语,就是任意信息的意思。
我们学会了输出,今天我们来学习怎样输入。
一、一个简单的加法程序
如果需要做一个简单的加法程序,就是输入两个整数,然后输出它们的和,这样的C语言程序怎么写呢?看:
可能有人又说看不懂了,别着急,听我慢慢道来。
上节课说过,所有的C语句必须放在两个大括号里面,也就是说程序的框架是:
那么大括号里的语句,有4行,也就是4句:
int a, b, c;
scanf("%d%d", &a, &b);
c=a+b;
printf("%d\n", c);
第1句:int a,b,c;
int a, b, c; 是定义了3个整数变量,分别起名为a, b, c,注意句子以分号结束。
有人问什么是变量?你就当变量是房子,定义了3个变量a、b、c,等于买3间房。
那么变量前面的 int是什么意思?
int是数据类型,int代表整型,整数。
int a,b,c; 定义3个整型变量。
就好比我买了3间房,房间名分别起名为 a、b、c,这3间房只能存放整数。
注意:变量起名规则:以字母或下划线_开头,后面跟数字、字母或下划线。
比如以下是合法的变量名:
a a123 _123 _a1 abc
不合法的变量名是:
1a, a#b 123 a-bc-d
第2句: scanf("%d%d", &a, &b);
scanf是输入函数,表示要从键盘输入2个整数,怎么知道是输入2个整数而不是3个?
因为scanf的双引号里面,有2个%d。
2个%d,代表输入2个整数,%d是整数。
注意:%d是格式控制符,对应整数。
而双引号后面有个逗号,然后出现&a, &b,表示输入的2个整数中第1个整数给到变量a,第2个整数给到变量b。
我这里说“给到”是大白话,严格来说是“赋予”。
scanf("%d%d", &a, &b); 就是从键盘输入2个整数,第一个整数赋予变量a,第二整数赋予变量b。
那可能有人问我要输入实数怎么办?这是一个好问题。
int a, b, c; 这里定义三个变量a、b、c,它们的数据类型是int,就是整数是买3间房,但这3间房只能是整数房,就是a, b, c只能装整数。
那如果要装实数,就得买实数房。
float d1, d2, d3;
或者double e1, e2, e3;
float和double和int一样,是数据类型。
float单精度实型, double是双精度实型。
float d1, d2, d3; 定义3个实型变量,变量名分别起名为d1, d2, d3。
double e1, e2 ;定义2个实型变量,变量名分别起名为e1, e2。
而输入输出函数中,对应整数的格式控制符是%d,对应float实数的格式控制符是%f,对应double的格式控制符是%lf。
%lf这里f前面的是小写字母l不是数字123的1。
格式控制符:
%d 对应int型的整数
%f 对应单精度实数float型的单精度实数
%lf 对应double型的双精度实数
再次强调:
变量起名规则:以字母或下划线_开头,后面跟数字、字母或下划线。
float和double的区别是它们的精度不同,如果不懂暂时不管,咱们主打入门,更深入的知识等你入门后就可以自己去寻求答案了。
而输入输出函数中,对应整数的是%d,对应float实数的是%f,对应double的是%lf。
%lf这里f前面的是小写字母l不是数字123的1。等下给个例子你就明白了。
第3句: c=a+b;
这句很简单,就是将a和b的值相加,结果赋予变量c。
这里你可能又会问了,这个a和 b的值到底是多少?是100、200还是23、89或者别的数?
a和b的值由你在程序运行时输入,你输入多少就是多少。
比如你输入10 20,(注意输入时两个数字间要用空格隔开),那么a就是10,b就是20。
如果你输入20 5, 则a就是20,b就是5。
第4句: printf("%d\n", c);
这里双引号里面出现一个%d,表示将输出一个整数,这个整数是多少,由它对应的数据决定。
这里%d对应的数据是变量c。
如果程序运行时,输入10 20, 则输出结果就是30。
如果程序运行时,输入100 -99, 则输出结果就是1。
二、编写一个程序,输入两个整数,输出和、差、积、商。
拿到题目先别忙着写,要首先考虑以下几个步骤:
第1步:定义多少个变量,变量类型是什么?(要买多少间房来存放数据,房子的类型是整型还是实型)
第2步:输入什么数据?输入多少数据?(scanf里面要多少个%d)
第3步:要做什么处理?
第4步:输出什么结果? (printf里面要多少个&d)
按上述题目,输入两个整数,输出它们的和、差、积、商。
这个程序有个小问题,如果你输入的第2个整数是0, 那么做到除法时会出错,这个问题我们下节课来解决。
另外,C语言的算法运算符有:+ - * / %
加:+
减:-
乘:*
除:/ (注意这个斜杠和换行那个斜杠方向是反的,换行是\n,左上往右下斜)
取余:%
这个取余,比如如果a=10, b=3, 那么c=a%b; c就等于1,10除以3的余数是1。
三、编写一个程序,输入两个实数,输出和。
注意我的变量名是a、b、abc。
运行结果:
我输入1.2和3.4,运行结果是4.600000。对于实数,输出结果默认保留6位小数。
再次强调:输入的两个数据之间以空格隔开。
四、条件语句和关系运算
如果要求编写一个程序,输入两个整数,输出和、差、积、商,注意若出现被0除的情况要避免。
如果没有判断是否有被0除的情况,就是刚才那题,程序是:
我们为了避免出现被0除的情况,可以在除法之前做一个判断:
大家看,在求c4=a/b之前,先判断b是否非0,如果不是0,正常除:c4=a/b;
否则不用除了,直接给c4赋予0。
if(b!=0)是条件语句,
条件语句的格式为:
其中if括号里的b!=0,是一个关系运算,关系运算是判断两个数据的大小或相等关系的,共有6个关系运算是:大于,大于等于,小于,小于等于,等于,不等于,符号为:
> >= < <= == !=
关系运算的结果只有两个:真(C语言里用1代表真)、假(用0代表假)。
如:
3 > 5为假, 10 != 9 为真。
我们可以在程序中加入条件语句来做一些判断。
例:输入一个整数,判断它的奇数还是偶数。如果是奇数,则输出“奇数”,如果它是偶数,则输出“偶数”。程序如下:
运行结果:
如果输入10,则输出结果为:10是偶数。
如果输入5,则输出结果为:5是奇数。
五、小结
今天的课就讲到这里,今天讲了:
1、数据类型int float double
2、格式控制符:
%d 对应int型的整数
%f 对应单精度实数float型的单精度实数
%lf 对应double型的双精度实数
3、变量起名规则:以字母或下划线_开头,后面跟数字、字母或下划线。
4、输入函数scanf( )
5、算法运算符:加( + ) 减( - ) 乘( * ) 除( / ) 取余( % )
6、关系运算符:大于( > ) 大于等于( >= ) 小于( < ) 小于等于( <= ) 等于( == ) 不等于( != )