C语言学习第二课:数据处理与交互式输入
来源:互联网 发布:语音助手软件下载 编辑:程序博客网 时间:2024/06/05 10:10
先上一张知识结构图
一:类型转换
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在原有基础上增加1i --; 表示变量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 = 10n = 12m = 22n = 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 0
- C语言学习第二课:数据处理与交互式输入
- C数据处理和交互式输入
- C语言随堂笔记---数据处理和交互式输入
- 第三章 数据处理和交互式输入
- C语言学习之输入/输出函数第二讲
- c语言学习第二天
- 学习C语言第二天
- C语言学习第二天
- C语言学习第二章
- 学习笔记---C语言中的输入与输出
- 第二课 C语言
- C语言第二课
- C语言第二课
- C语言中基本的输入和输出函数的用法第二讲(C语言学习随笔四)
- C语言输入与输出
- C语言输入与输出
- C语言输入与输出
- codeforces 727c 交互式输入(水)
- 目录函数mkdir/rmdir/getcwd/chdir
- IdcardUtils
- android-wifi
- Cocos2d-x-----------------------------------------------ActionManager
- IpUtil
- C语言学习第二课:数据处理与交互式输入
- 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
- 第六周 项目2 建立链栈算法库
- 开启Cordova之旅
- Java反射获取一个类的所有get方法
- Oracle对表解锁的操作
- OpenCV (insufficient memory in function cvAlloc)的解决办法
- web项目中相对路径与绝对路径
- iOS开发 银行卡号有效性问题Luhn算法