第二周

1.输入与输出

1.输入输出控制符

在printf和scanf中可以使用以"%"开头的控制符,指明要输入或输出的数据的类型以及格式。

2.用scanf读入不同类型的变量

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{int n; char c; float m;
scanf("%d%c%f",&n,&c,&m);
printf("%d %c %f",n,c,m);
return 0;}
//34 k 1.36 -->34 0.000000
/*输入字符时,不会跳过空格(空格也会被当作字符读入),
输入其他类型的数据时,会跳过空格*/
//34K 1.36 -->34 k 1.36
//scanf("%d %c,%f:%d",&n,&c,&f,&m);
//如果在输入中有scanf中出现的非控制字符,则这些字符会被跳过.
//4k,3.14; -->4 k 3.14

用scanf可以一次读入多个类型不同的变量,只要输入的各项之间用空格分隔即可。

3.用printf控制输出整数宽度

int n = 123;
printf("%05d,%5d,%5d,%05d",n,n,123456,123456);
00123, 123,123456,123456

超过部分并不会进行截断

4.控制printf输出精度

float a = 123.45;
double b = 22.37362723;
printf("%.5f %.2f %.12f",12.3,a,b);
12.30000 123.45 22.373627230000
  • double 精度高于float,所以一般尽量使用double.
  • double类型的变量用 %lf 输入.

5.格式控制符%x和%u

  • %x: 以十六进制形式读入或输出整数
  • %u: 以无符号整数形式输出整数
printf("%x,%d,%u",0xffffffff, 0xffffffff,0xffffffff);
ffffffff,-1,4294967295

6.用cout和cin进行输出和输入

#include <iostream>
using namespace std;
int main() {int n1,n2;
double f;
char c;
cin >> n1 >> n2 >> c >> f;
cout << n1 << "," << n2 << "," << c << "," << f<<endl;//endl 换行符
return 0;
}
5 10K 1.23
______________________________
5,10,k,1.23--
  • cin>>
  • cout<<

7.读入所有的输入字符,包括空格回车

(1)cin版

#include <iostream>
using namespace std;
int main()
{int c;
while((c = cin.get()) != EOF) {cout << (char)c ;
}
return 0;
}

通过cin.get()读入字符,它的返回值是int,会进行补零操作。不能用char接收,ff负数-1相当于EOF 00ff正数。

(2)scanf版

#include <iostream>
#include <cstdio>
using namespace std;
int main()
{char c;
while(scanf("%c",&c) != EOF) {printf("%c",c);
}
return 0;
}
  • EOF标记本身并不存在。
  • windows下可用ctrl+z结束输入输出。
  • cin,cout 速度比scanf,printf慢,输入输出数据量大时用后者。
  • 一个程序里面不要同时用cin和scanf,不要同时用cout和printf。

2.运算符与表达式

1.赋值运算符

=
+=
-=
*=
/=
%= 求模,取余数。

2.算术运算符

+
-
*
/
% 求余数
++ 自增
-- 自减
  • a+b、a-b、a*b、a/b这四个表达式的值,就是a和b做算术运算的结果。表达式的值的类型,以操作数中精度高的类型为准。

​ 精度:double > long long > int > short > char

  • 两个整数类型进行加、减、乘都可能导致计算结果超出了结果
    类型所能表示的范围,这种情况就叫做溢出。计算结果的溢出部分直接被丢弃。

  • 溢出也可能出现在中间结果,解决溢出的方法是使用更高精度的数据类型。

  • 两个整数做除法,结果是商。余数忽略。

  • 求余数的运算符“%”也称为模运算符。它是双目运算符,两个操作数都是整数类型的。a % b 的值就是a除以b的余数。

  • 除法运算和模运算的除数都不能为0,否则程序会崩溃!!!

自增运算符和自减运算符

  • 单目运算符,操作数为整数类型变量或实数型变量

  • 有前置和后置两种用法:

    • 前置用法:
      ++/- -a; 将a的值+/-1,表达式返回值为a+/-1后的值
    • 后置用法:
      a++/- -; 将a的值+/-1,表达式返回值为a+/-1前的值
  • 取反运算符-a,取整型或实数型变量的相反数

3.关系运算符

相等 ==
不等 !=
大于 >
小于 <
大于等于 >=
小于等于 <=
  • 比较结果是bool类型变量只有两种取值,true或false
  • false等价于0, true等价于非0整型值
int main()
{int n1 = 4, n2 = 5, n3;
n3 = ( n1 > n2 ); // n3 的值变为 0
cout << n3 << ","; // 输出 0,
n3 = ( n1 < n2); // n3 的值变为非0值
cout << n3 << ","; // 输出 1,
return 0;
}

4.逻辑运算符和逻辑表达式

逻辑运算符用于表达式的逻辑操作,有:

&&

||

!

三种,操作的结果是true或false:

  • exp1 && exp2 当且仅当exp1和exp2的值都为真(或非0)时,结果为true。

​ 一旦exp1为假exp2就不会进行计算

  • exp1 || exp2 当且仅当exp1和exp2的值都为假(或0)时,结果为false

​ 一旦exp1为真exp2就不会进行计算

  • ! exp exp值为真(或非0),结果为false,exp值为false(0),结果为true。
  • 逻辑表达式是短路计算的,即对逻辑表达式的计算,在整个表达式的值已经能够断定的时候即会停止
#include <iostream>
using namespace std;
int main()
{int a = 0,b = 1;
bool n = (a ++) && (b ++) ; // b++不被计算
cout << a << "," << b << endl; //输出 1,1
n = a ++ && b ++ ; // a++和b++都要计算
cout << a << "," << b << endl; //输出 2,2
n = a ++ || b ++ ; //b++不被计算
cout << a << "," << b << endl; //输出 3,2
return 0;
}

3.强制类型转换运算符及运算符优先级

1. 强制类型转换运算符

  • 类型名本身就是一个运算符,叫“强制类型转换运算符”
    用于将操作数转换为指定类型

    double f = 9.14;
    int n = (int) f; //n=9
    f = n / 2; //f=4.0
    f = double(n) / 2; //f=4.5
    

2.运算符优先级

口诀:
自增自减非,乘除取模加减。
小小于,大大于,等不等。
且,或。
等,加减乘除具等

  • 可以用()改变运算顺序,如 a*(b+c),勤用括号以避免优先级错误。
  • printf(“%d,%d”,a+++b,a);中 a+++b 等价于(a++)+b。

郭炜-C语言程序设计-程序设计与算法(一)-第二周相关推荐

  1. 201871010123-吴丽丽《面向对象程序设计(java)》第二周学习总结

    201871010123-吴丽丽<面向对象程序设计(java)>第二周学习总结                         项目                这个作业属于哪个课程 h ...

  2. 201871010104-陈园园 《面向对象程序设计(java)》第二周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 ttps://www.cnblogs.com/nwnu-daizh/ 这 ...

  3. 201871010128-杨丽霞《面向对象程序设计(java)》第二周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第二周学习总结 项目 内容 这个作业属于哪个课程 <https://www.cnblogs.com/nwnu-daiz ...

  4. java周志第二周_20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 1.Git提交日志已经实现一个功能/一个bug修复的注释说明,如图所示: 2.测试代 ...

  5. 【采访】腾讯社交广告高校算法大赛第二周周冠军——Groot 比赛经验及心得分享

    [采访]腾讯社交广告高校算法大赛第二周周冠军--Groot 比赛经验及心得分享 经过又一周紧张又激烈的角逐 腾讯社交广告高校算法大赛产生了第二周周冠军 他们的名字叫Groot 三个冷静沉着的大男孩 低 ...

  6. 腾讯广告算法大赛 | 第二周周冠军心得分享

    腾讯广告算法大赛第二周周冠军出炉, 从照片上推断, 这是一位颜值与机智并存的少年. 于是在我们的强烈邀请下, 小哥哥答应给大家分享主流ctr模型的选择- 大家好,我叫葛云鹏,是来自哈尔滨工业大学深圳研 ...

  7. 「数据结构」普林斯顿算法课第二周作业

    「数据结构」普林斯顿算法课第二周作业 Algorithm I, Princeton 编程作业: Deques and Randomized Queues 思路 Deque.java Randomize ...

  8. 郭炜-C语言程序设计-程序设计与算法(一)-第一周

    第一周 一.信息在计算机中的表示 1.用0/1表示各种信息 计算机的电路由逻辑门电路组成.一个逻辑门电路可以看成一个开关,每个开关的状态是"开"(高电位)或"关" ...

  9. 郭炜-C语言程序设计-程序设计与算法(一)-第五周

    第五周 1.数组的概念 可以用来表达类型相同的元素的集合,集合的名字就是数组名. 数组里的元素都有编号,元素的编号叫下标.通过数组名和下标,就能访问元素. 一维数组的定义方法如下: 类型名 数组名[元 ...

最新文章

  1. LeetCode 169.求众数
  2. 计算机电子与网络技术,电子信息工程与计算机网络技术
  3. 子进程无法从标准输入读取数据
  4. 强大的Canvas开源库Fabric.js简介与开发指南
  5. 前端程序员容易忽视的一些基础知识
  6. Spring Cloud 入门 之 Zuul 篇(五)
  7. php file_get_contents()请求某个链接
  8. hadoop搭建之hadoop安装
  9. 黑大选修计算机模拟物理学,黑龙江大学学分制选课指南.doc
  10. 生成osm文件_[转载]OSM数据的获取及格式转换
  11. mysql 如何按时间备份_如何用mysqldump进行全量和时间点备份
  12. MySQL数据的读写分离之maxscale的使用
  13. Android如何设置APP开机启动
  14. 【类型初始值设定项引发异常】问题解决
  15. 苹果icloud解锁_如何绘制苹果iCloud图标– Photoshop教程
  16. biabiamiamia百度音乐网批量歌曲下载工具
  17. Android正方教务系统课程表+查成绩+查考试安排
  18. 史上很全的注册表修改大全
  19. OpenResty学习——第七章 Web开发实战2——商品详情页
  20. 002_wz_kaggle泰坦尼克号深度学习实现

热门文章

  1. 传统软件行业与互联网行业对比
  2. educoder实训平台----简历表页面的制作
  3. 一个简单的网站(适合课设)
  4. 如何通过讯飞语音将文本合成后的语音保存到本地
  5. Python + Selenium(九)- 解决图片验证码登录或注册问题
  6. MT【193】三面角的正余弦定理
  7. 软件工程2019:第2次作业—— 时事点评
  8. jquery plugin --image magnifier 放大器
  9. 聊聊不确定性和确定性------化不确定性为确定性
  10. 安全生产预警系统软件解决方案