C语言数据类型

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

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

#include<stdio.h>
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米,问题出在哪?

因为...

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

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<stdio.h>
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)是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

 如:

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

程序:计算时间差

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

#include<stdio.h>
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<stdio.h>
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原来的值

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

交换

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 <stdio.h>
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+1count原来的值
++count给count+1count+1以后的值
count--给count-1count原来的值
--count给count-1count-1以后的值

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

++i++-->?

i++++-->?

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员希西子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值