总得让她开心吧
helloworld
#include <stdio.h>int main()
{printf("hello world!\n");return 0;
}
程序框架
#include <stdio.h>
int main
{return 0;
}
输出
printf("hello world!\n");
"'里面的内容叫做“字符串”,printf会把其中的内容元丰不动的输出
\n表示需要在输出的结果后面换一行
做计算
printf("%d\n",23+43);
%d说明后面有一个整数要输出在这个位置上。
printf("23+43=%d\n",23+43);
%d是把后面的值填到这个地方去
输入
#include <stdio.h>int main()
{int price=0;printf("请输入金额(元)");scanf("%d",&price);int change = 100 - price;printf("找您%d元\n",change);return 0;
}
int price=0;
这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0;
变量是一个保存数据的地方,当我们需要在程序里保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量来保存它。用一个变量保存了一个数据,它才能参加到后面的计算中,比如计算找零。
变量定义
变量定义的一般形式就是:
<类型名称><变量名称>;
int price;
int amount;
int price,amount;
变量名
变量需要一个名字,变量的名字是一种“标识符“,意思是它是用来识别这个和那个的不同的名字。”
标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字和下划线组成,数字不能出现在第一个位置上,C语言的关键字(保留字)不可以用做标识符。
赋值
a=b表示要求计算机做一个动作:将b的值赋给a。
关系是静态的,而动作是动态的。所以a=b和b=a是完全相反的
初始化
所有变量在定义的地方可以不做初始化,但是所有的变量在第一次被使用之前应该赋值一次
变量初始化
<类型名称><变量名称>=<初始值>;
int price=0;
int amount=100;
组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值,如:
int price=0,amount=100;
变量类型
C语言是一种有类型的语言,所有的变量在使用之前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型
第二个变量
int chage=100-price;
定义了第二个变量change
并且做了计算
在C99中可以这样定义
ANSI C
只能在代码开头的地方定义变量
读整数
scanf("%d",&price);
要求scanf这个函数读入下一个整数,读到的结果赋值给变量price
小心price前面的&
Scanf
int main()
{
int a;
int b;
scanf("%d %d",&a,&b);
printf("%d %d\n",a,b);
return 0;
}
运行正常。
int main()
{
int a;
int b;
scanf("%d,%d",&a,&b);
printf("%d %d\n",a,b);
return 0;
}
也就是说scanf里的,你输入的时候也要输入
常量
int chage=100-price;
固定不变的数,是常数。直接写在程序里,我们称作直接量。
更好的方式,是定义一个常量:
const int AMOUNT = 100;(C99写法)
const
const是一个修饰符,加在int的前面,用来给这个变量加上一个const的属性。这const的属性表示这个变量的值一旦初始化,就不能再修改了。
int change =AMOUNT-price;
如果你试图对常量做修改,把它放在赋值运算符的坐标,就会背编译器发现,指出为一个错误。
try
让用户输入变量AMOUNT的值,而不是使用固定的初始值。
#include <stdio.h>int main()
{int price=0;int amount=0;printf("请输入金额(元)");scanf("%d",&price);printf("请输入原始(元)");scanf("%d",&amount);int change = amount - price;printf("找您%d元\n",change);return 0;
}
浮点数
一个美国人告诉你他是5英尺7寸,他的身高应该是1米几?
(5+7/12)*0.3048=1.7018米
带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中你不会遇到定点数。人们借用浮点数这个词来表达所有带小数点的数。
计算身高的程序
#include <stdio.h>int main()
{
printf("请分别输入身高的英尺和英寸,"
"如输入\"5 7\"表示5英尺7英尺:");
int foot;
int inch;
scanf("%d %d",&foot,&inch);
printf("身高是%f。\n",((foot+inch/12)*0.3048));
return 0;
}
但是似乎不对
因为两个整数的运算的结果只能是整数
10/3*3=>?
10和10.0在C中是完全不同的数
10.0是浮点数
把前面的d改成f
改进
当浮点数和整数放到一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算。
double
inch是定义为int类型的变量,如果把int换成double,我们就把它改为double类型的浮点数据变量了。
double是双精度浮点数,float表示单精度浮点数
#include <stdio.h>int main()
{
printf("请分别输入身高的英尺和英寸,"
"如输入\"5 7\"表示5英尺7英尺:");
double foot;
double inch;
scanf("%lf %lf",&foot,&inch);
printf("身高是%f。\n",((foot+inch/12)*0.3048));
return 0;
}
整数
int
printf("%d",....)
scanf("%d",.....)
带小数点的数
double
print("%f",......)
print("%lf",......)
表达式
一个表达式是一系列运算符和算子的组合,用来计算一个值
amount=x*(1+0.033)*(1+0.033)*(1+0.033);
total=57;
count=count+1;
value=(min/2)*lastValue;
运算符
运算符是指运算的动作,比如加法运算符”+“,减法运算符”-“。
算子是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值。
计算时间差
输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示
#include <stdio.h>int main()
{
int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&minute1);
scanf("%d %d",&hour2,&minute2);
int t1=hour1*60+minute1;
int t2=hour2*60+minute2;
int t=t2-t1;
printf("差%d小时%d分",t/60,t%60);
return 0;
}
运算符优先级
写一个程序,输入两个整数,输出它们的平均值
int a,b;
scanf("%d %d",&a,&b);
double c=(a+b)/2.0;
print("%d和%d的平均值=%f\n",a,b,c);
赋值运算符
赋值也是运算,也有结果
a=6的结果是a被赋予的值,也就是6
a=b=6->a=(b=6)
交换两个变量
int a=5;
int b=6;
不能直接写
a=b;
b=a;
这样就会使最后的结果都变为b;
所以我们需要再引入一个变量t
int t;
t=a;
a=b;
b=t;
#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;
}
复合赋值
5个运算符形成符合运算
”+=“ “-=” “*=” “/=“ ”%=“
递增和递减
++ -- (+1 -1)
前面只能是变量
前缀后缀
++和--可以放前面
a++的值是a加1以前的值,而++a的值是加1以后的值,无论哪个,a自己的值都加了1.