C语言数据类型

例题:美国人固执地使用英制计量单位,他们习惯用几尺几寸(英尺英寸)来报自己的身高。如果遇到一个美国人告诉你他是5英尺7,他的身高应该是一米几呢?

身高5尺7寸?
(5+7÷12 ) ×0.3048= 1.7018米

#include
int main()
{
	//计算身高的程序
	printf("请分别输入身高的英尺和尺寸,""如输入\"5 7\"表示5英尺7英寸:");

	int foot;
	int inch;

	scanf_s("%d %d",&foot,&inch);

	printf("身高是%f米。\n",((foot+inch/12)*0.3048));
}

控制台:5尺7寸=应该是1.7018米,这里是1.524000米,问题出在哪?

C语言数据类型_第1张图片

因为...

因为两个整数的运算的结果只能是整数

10/3*3=>?

10和10.0在C语言中是完全不同的数

10.0是浮点数

他的结果只能是整数

需要改:把10改成10.0,把%d改成%f

	printf("%f\n",10.0/3);

 上述程序同改:

printf("身高是%f米\n", ((foot + inch / 12.0) * 0.3048));

浮点数

带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数无理数)的一种方式。另一种方式叫做定点数,不过在C语言中你不会遇到定点数。人们借用浮点数这个词来表达所有的带小数点的数。

当浮点数和整数放到一起运算时,c会将整数转换成浮点数,然后进行浮点数的运算。

double

inch是定义为int类型的变量,如果把int换成double,我们就把他改为double类型浮点数变量了。

double的意思是“”,他本来是“双精度浮点数”的第一个单词,人们用来表示浮点数类型。除了double,还有float(意思就是浮点!)表示单精度浮点数

#include
void main()
{
	
	//计算身高的程序
	printf("请分别输入身高的英尺和尺寸,""如输入\"5 7\"表示5英尺7英寸:");

	double foot;
	double inch;

    scanf_s("%d %d", &foot, &inch);//改这里

	printf("身高是%f米。\n", ((foot + inch / 12) * 0.3048));
	return 0;
}

上述程序可以改为:

scanf_s("%lf %lf", &foot, &inch);

数据类型

整数

int
printf("%d",...);
scanf("%d",...);

带小数点的数

double
printf("%f",...);
scanf("%f",...);

表达式

一个表达式是一系列运算符算子的组合,用来计算一个值。

如:

amount=x**(1+0.033)*(1+0.033)*(1+0.033);
total=57;
count=count+1;
value=(min/2)*lastValue;

运算符

运算符(operator)是指进行运算的动作,比如加法运算符“+”,减法运算符“-”。

算子(operand)是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

C语言数据类型_第2张图片

 如:

int sides=4;
Sides=7;
Sides=sides+5;

程序:计算时间差

输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间的差,也可以几小时几分钟表示

#include
void main()
{
	int hour1, minute1;
	int hour2, minute2;

	printf("请输入时间1的小时和分钟:\n");
	scanf_s("%d %d",&hour1,&minute1);

	printf("请输入时间2的小时和分钟:\n");
	scanf_s("%d %d",&hour2,&minute2);

	int t1 = hour1 * 60 + minute1;
	int t2 = hour2 * 60 + minute2;

	int t = t2 - t1;

	printf("时间差是%d小时%d分钟。\n",t/60,t%60);
}

如果直接分别减,会出现分钟借位的情况:1点40和2点10分的差?

hour1*60+minute1 --> 转换为分钟的单位

t/60 --> 小时部分

t%60 --> 分钟 

程序:求平均值

写一个程序,输入两个整数,求出他们的平均值

#include
void main()
{
	int a;
	int b;
	double c;

	scanf_s("%d %d",&a,&b);

	 c=(a+b)/ 2.0;

	printf("%d和%d的平均数为%f",a,b,c);
}

运算符优先级

优先级 运算符 运算 结合关系 举例
1 + 单目不变 自右向左 a*+b
1 - 单目取负 自右向左 a*-b
2 * 自左向右 a*b
2 / 自左向右 a/b
2 % 取余 自左向右 a%b
3 + 自左向右 a+b
3 - 自左向右 a-b
4 = 赋值 自右向左 a=b

赋值运算符

赋值也是运算,也有结果

a=6的结果是a被赋予的,也就是6

a=b=6 --> a=(b=6),赋给b再赋给a

“嵌入式赋值”(不推荐使用)

int a=6;
int b;
int c=1+(b+a);

不利于阅读        

容易产生错误

结合关系

一般自左向右

单目*+ *- 和赋值= 自右向左

程序:计算复利

在银行存定期的时候,可以选择到期后自动转存,并将到期的利息计入本金合并转存。如果1年期的定期利率是3.3%,那么连续自动转存3年后,最初存入的x元定期会得到多少本息余额?

 本息合计=x(1+3.3%)³

    int x;
	scanf_s("%d", &x);
	double a = x * (1 + 0.033) * (1 + 0.033) * (1 + 0.033);
	printf("%f",a);

要计算任意年以后的本息金额,就需要做(1+0.033)n次方 的计算?

后面循环可以做!

变量交换   

交换两个变量

如果已经有:

int a=6;
int b=5;

如何交换两个变量的值?

程序表达是顺序的动作,而不是关系

a=b;
b=a;

是依次执行的,结果使得a和b都得到b原来的值

C语言数据类型_第3张图片

#include 
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;
}

交换

int t=a;
a=b;
b=t;

符合赋值

5个算数运算符,+ - * / %,可以和赋值运算符“=”结合起来,形成复合赋值运算符:“+=”, “-=”,“*=”,“/=”和“%=”

total += 5;
total = total+5;

注意两个运算符中间不要有空格

total += (sum+100)/2;
total = total+(sum+100)/2;

total *= sum+12;
total = total*(total+12);

total /= 12+6;
total = total/(12+6);

递增递减运算符

“++”和“--”是两个很特殊的运算符,他们是单目运算符,这个算子还必须是变量。这两个运算符还分别叫做递增,递减运算符,他们的作用就是给这个变量+1或者-1。

count++;

count+=1;

count=count+1;

前缀后缀

++--可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。

a++的值是a加1以前的值,而++a的值是加了1以后的值,无论那个,a自己的值都加了1了。

#include 
int main() 
{
	int a = 10;
	printf("a++=%d\n",a++);
	printf("a=%d\n", a);

	printf("++a=%d\n", ++a);
	printf("a=%d\n", a);
	return 0;
}
表达式 运算 表达式的值
count++ 给count+1 count原来的值
++count 给count+1 count+1以后的值
count-- 给count-1 count原来的值
--count 给count-1 count-1以后的值

可以单独使用,但是不要组合进表达式

++i++-->?

i++++-->?

a=b+=c++-d+**e/-f

你可能感兴趣的:(C语言编程,笔记,c++,开发语言)