c 语言输入两行数据类型,C语言学习第二课:数据处理与交互式输入

先上一张知识结构图

0818b9ca8b590ca3270a3433284dd417.png

一:类型转换

1、隐式类型转换(系统自动进行类型转换)

当赋值发生时,如果两边数据类型不一致,C语言中会将等号右边的数据自动转换为等号左边变量的数据类型

double d = 40;

//整型数据赋给双精度浮点型变量

//C系统将整型数据转变为double型数据然后赋值给变量

int i = 3.14;

//double型数据赋给int型变量

//C系统将double数据转变为int型数据然后赋值给变量

//这个转变过程会造成double型数据小数部分的丢失

2、显式类型转换(强制转换)

强制类型转换也叫显式转换

需要转换的数据前面,添加一个括号,括号里面填写目标数据类型

(转换后类型) 表达式

printf(”%d”,(int) 3.5);

printf("%d\n",(int)(3.5+2+4.5));

3、类型转换注意点

(1)从较高精度数据类型转换为较低精度数据类型时,一般会发生数据的丢失

如:int a = 3.14 结果:a 为 3;

(2)低精度数据转化为高精度数据不会发生数据的丢失

如:double d = 3 结果:d 为 3.000000;

(3)多个不同类型精度相结合。结果为最高精度值

如:

int a1 = 10;

float b1 = 20;

double c1 = 30;

char d1 = 40;

printf("%f",a1+b1+c1+d1);

二、复合赋值运算符

sum = sum + 20;

等价与

sum += 20;

+=就是一个复合赋值运算符,含义为使用sum原来的值加上20然后再赋值给sum变量

另外还有-=、*=、/=、%= 复合赋值运算符

a *= b + 20; //等价于a = a * (b + 20);

三、自增自减运算符

i++;

表示变量i在原有基础上增加1

i --;

表示变量i在原有基础上减去1

另一个写法:

++i,--i;

1、前(左)自增自减与后(右)自增自减区别点

(1)符号在变量左边表示先将变量自增或自减1之后再使用其自增1或自减1后的值

(2)符号在变量右边表示首先使用变量中已有的值,然后再对变量进行自增1或自减1

int i=10,j=10;

i++; printf("%d\n", i);//11

++i; printf("%d\n", i);//12

j--; printf("%d\n", j);//9

--j; printf("%d\n", j);//8

int i=10,j=10,w,x,y,z;

w = i++; printf("%d\n", w);//w=10,i=11

x = ++i; printf("%d\n", x);//x=12,i=12

y = j--; printf("%d\n", y);//y=10,j=9

z = --j; printf("%d\n", z);//z=8, j=8;

2、括号无法改变自增自减优先级

i = 10;

m = (i++); printf(“m = %d\n”, m);

n = (++i); printf(“n = %d\n”, n);

m = (i++) + 10; printf(“m = %d\n”, m);

n = (++i) + 10; printf(“n = %d\n", n);

结果为:

m = 10

n = 12

m = 22

n = 24

四:scanf() 输入函数

scanf(“控制字符串”,&变量1,&变量2,…&变量n);

— 注意接收数据的变量需要使用&号,表示该变量的地址

控制字符串:

%d int

%f float

%lf double

%c char

1、多个输入情况

(1)数字输入

一次输入多个数字时,控制字符串有无空格均可,但输入时需要空格隔开每个数字

scanf("%f %f", &f1,&f2);

scanf("%d%d%d%d%d", &d1,&d2,&d3,&d4,&d5);

(2)字符输入

(1)c语言中,使用scanf()进行字符数据的输入时,回车、Control、Escape等控制字符都被当做字符被放入缓冲区

连续使用scanf()时下一次的输入会直接从缓冲区读入字符型数据

(2)输入字符数据时,控制字符串和实际输入都需要使用空格隔开每个字符

scanf("%c %c %c", &c1, &c2, &c3);

代码练习示例:

/**

* 某一个星期,周一到周日气温分别为:30℃、32℃、29℃、34℃、31℃、27℃、31℃

为了研究天气情况,需要得到这个星期的平均气温

*/

int t1=30,t2=32,t3=29,t4=34,t5=31,t6=27,t7=31;

int sum = 0;

double avg;//平均温度

int day = 7;

sum += t1;

sum += t2;

sum += t3;

sum += t4;

sum += t5;

sum += t6;

sum += t7;

avg = sum * 1.0 / day;

printf("sum == %d\navg == %g\n",sum,avg);

//交互式输入

/**

* 输入购买数量及单价,然后计算出总金额

*/

int count;//数量

double price;//单价

double sum;//总价

printf("请输入商品数量\n");

//做输入操作

scanf("%d",&count);

printf("请输入商品单价\n");

scanf("%lf",&price);

sum = count * price;

printf("总价格为:%g",sum);

幻影回车符

char firstChar;

char secondChar;

printf("请输入第一个字符\n");

//先用第二个字符,接收回车字符

scanf("%c%c",&firstChar,&secondChar);

printf("请输入第二个字符\n");

scanf("%c",&secondChar);

printf("firstChar = %c--secondChar = %c\n",firstChar,secondChar);

printf("firstChar = %d--secondChar = %d",firstChar,secondChar);

/**

* 编写一个C程序,输入两个点的坐标(x坐标以及y坐标),计算并且打印两个连接点的中点坐标。假设两个连接点坐标为(x1,y2)和(x2,y2),两个点的连接线中点坐标为(x1+x2)/2和(y1+y2)/2

*/

double x1,x2,y1,y2,x3,y3;

printf("请输入第一个点:\n");

scanf("%lf%lf",&x1,&y1);

printf("请输入第二个点:\n");

scanf("%lf%lf",&x2,&y2);

x3 = (x1+x2) / 2;

y3 = (y1+y2) / 2;

printf("两点的中点坐标为(%g,%g)",x3,y3);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值