C/C++输入输出(1)

打印 上一主题 下一主题

主题 993|帖子 993|积分 2979

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.getchar和putchar

1.1getchar()

函数原型:
  1. 1  int getchar(void);
复制代码
 getchar()函数返回用户从键盘输入的字符,使用时不带有任何参数。
程序运行到这个下令就会停息,期待用户从键盘输入,等同于使用cin或scanf()方法读取一个字符。
getchar()函数原型界说在头文件<cstdio>。
  1. #include"cstdio"
  2. #include"iostream"
  3. using namespace std;
  4. int main()
  5. {
  6.         int ch;
  7.         ch=getchar();
  8.         cout << ch << endl;
  9.         cout << (char)ch << endl;
  10.         return 0;
  11. }
复制代码

因为getchar()返回的是字符范例,以是不会忽略起首的空缺字符,总是返回当前读取的第一个字符。
假如读取失败,返回常量EOF,由于EOF通常是-1,以是返回值的范例要设为int,而不是char。
我们可以直接按Ctrl+z来实现读取失败。
1.2putchar()

函数原型:
  1. 1  int putchar(int character);
复制代码
putchar()函数将它的参数字符输出到屏幕,它的原型界说在头文件<cstdio>。
  1. #include"cstdio"
  2. int main()
  3. {
  4.         int ch=0;
  5.         ch=getchar();
  6.         putchar(ch);
  7.         return 0;
  8. }
复制代码

当操作乐成时,putchar()返回输出的字符,否则返回EOF。

2.scanf和printf

2.1printf

printf()函数原型:
  1. 1  int printf(const char* format,……);
复制代码
2.1.1根本用法

printf()的作用是将参数文本输出到屏幕上。
  1. #include <cstdio>
  2. int main()
  3. {
  4. printf("Hello World");
  5. return 0;
  6. }
复制代码

printf()本身是不会在结尾处换行的,以是我们可以在结尾处增长一个\n,从而实现换行。
2.1.2占位符

printf()可以在输出文本中指定占位符。
  1. #include <cstdio>
  2. int main()
  3. {
  4.          printf("There are %d apples\n", 3);
  5.          return 0;
  6. }
复制代码

在上面我们可以或许看出%d就是占位符,表示这个位置要用其他值来更换。
同时在使用中,我们也可以使用多个占位符,使用次序也是和占位符的次序是同等的。
常见的占位符:
占位符先容
%d十进制整数
%lld十进制long long int范例
%f小数(包含float和double)
%Lflong double范例浮点数
%c字符
%s字符串
2.1.3格式化输出

2.1.3.1限定宽度

printf()允许限定占位符的最小宽度。
  1. #include"cstdio"
  2. int main()
  3. {
  4.         printf("%5d",123);
  5.         return 0;
  6. }
复制代码

上面示例中,%5d表示这个占位符的宽度至少为5位。假如不满5位,对应的值的前面会添加空格。
输出端值默认是右对齐,即输出内容前面会有空格;假如盼望改成左对齐,在输出内容后面添加空格,我们可以在%后面插入一个-号。
2.1.3.2限定小数位数

输出小数时,偶然盼望限定小数位数。
  1. #include"cstdio"
  2. int main()
  3. {
  4.         printf("%.2f",12.345);
  5.         return 0;
  6. }
复制代码

当我们盼望小数点后面只保留两位,占位符可以写成%.2f。
最小宽度和小数位数这两个限定值,都可以用*代替,通过printf()的参数传入。
  1. #include"cstdio"
  2. int main()
  3. {
  4.         printf("%*.*f",6,2,12.345);
  5.         return 0;
  6. }
复制代码

上面%*.*f的两个星号通过printf()的两个参数6和2传入。
2.2scanf

scanf()函数原型:
  1. 1  int scanf( const char* format,……);
复制代码
2.2.1根本用法

scanf()函数用于读取用户的键盘输入。
程序运行到scanf()这个语句时,会停下来,期待用户从键盘输入。
  1. #include"cstdio"
  2. int main()
  3. {
  4.         int i=0;
  5.         scanf("%d",&i);
  6.         printf("%d\n",i);
  7.         return 0;
  8. }
复制代码

注:

  • scanf函数的占位符后面一样寻常不会加\n,\n是换行,一样寻常在输出的时间才使用。 
  • scanf函数中存储数据的变量前面必须加上&运算符,因为scanf()需要的是地点,必须将变量的地点取出来传给scanf函数。
  • scanf函数中指定的格式和给程序输入的数据格式要严格的匹配,否则大概不能得到想要的值。
  • scanf()处置惩罚数值占位符时,会自动过滤空缺字符,包括空格、制表符、换行符等。
2.2.2scanf的返回值

scanf()的返回是一个整数,表示乐成读取的变量个数。
假如没有读取任何项,大概匹配失败,则返回0.假如在乐成读取任何数据之前,发生了读取错误大概读取到文件结尾,则返回常量EOF(-1)。
  1. #include"cstdio"
  2. int main()
  3. {
  4.         int a=0,b=0;
  5.         float f=0;
  6.         int r=scanf("%d %d %f",&a,&b,&f);
  7.         printf("a=%d,b=%d,f=%f\n",a,b,f);
  8.         printf("%d\n",r);
  9.         return 0;
  10. }
复制代码

假如输入两个数后,按ctrl+z,提前竣事输入。

假如输入的数据都不能匹配乐成的话,则输出的r是0。

假如一个数字都不输入,直接按ctrl+z,输出的r是-1,也就是EOF。

2.3训练

训练1:浮点除法


  1. #include"cstdio"
  2. #include"iostream"
  3. using namespace std;
  4. int main()
  5. {
  6.         int a=0;
  7.         int b=0;
  8.         cin >> a >> b;
  9.         printf("%.3f",a*1.0/b);
  10.         return 0;
  11. }
复制代码
 训练2:B2012 甲流疫情殒命率 - 洛谷



  1. #include"cstdio"
  2. int main()
  3. {
  4.         int a=0,b=0;
  5.         scanf("%d %d",&a,&b);
  6.         printf("%.3f%%\n",b*100.0/a);
  7.         return 0;
  8. }
复制代码

训练3: B2013 温度表达转化 - 洛谷


  1. #include"cstdio"
  2. int main()
  3. {
  4.         double F=0;
  5.         scanf("%lf",&F);
  6.         double C=5*(F-32)/9.0;
  7.         printf("%.5lf",C);
  8.         return 0;
  9. }
复制代码

训练4:B2015 计算并联电阻的阻值 - 洛谷 


  1. #include"cstdio"
  2. int main()
  3. {
  4.         float r1=0,r2=0;
  5.         scanf("%f %f",&r1,&r2);
  6.         printf("%.2f",r1*r2*1.0/(r1+r2));
  7.         return 0;
  8. }
复制代码

训练5:B2014 与圆相干的计算 - 洛谷 


  1. #include"cstdio"
  2. #include"iostream"
  3. using namespace std;
  4. double p=3.14159;
  5. double r;
  6. int main()
  7. {
  8.         cin >> r ;
  9.         printf("%.4lf %.4lf %.4lf",r*2,r*2*p,r*r*p);
  10.         return 0;
  11. }
复制代码

训练6:B2004 对齐输出 - 洛谷 


  1. #include"cstdio"
  2. int main()
  3. {
  4.         int a=0,b=0,c=0;
  5.         scanf("%d %d %d",&a,&b,&c);
  6.         printf("%8d %8d %8d",a,b,c);
  7.         return 0;
  8. }
复制代码

训练7:信息学奥赛一本通(C++版)在线评测体系 


  1. #include"iostream"
  2. #include"cstdio"
  3. using namespace std;
  4. int a,b,c,d,e;
  5. int main()
  6. {
  7.         cin >> a >> b >> c >> d >> e;
  8.         a/=3;
  9.         e+=a;
  10.         b+=a;
  11.         b/=3;
  12.         a+=b;
  13.         c+=b;
  14.         c/=3;
  15.         b+=c;
  16.         d+=c;
  17.         d/=3;
  18.         c+=d;
  19.         e+=d;
  20.         e/=3;
  21.         d+=e;
  22.         a+=e;
  23.         printf("%5d%5d%5d%5d%5d",a,b,c,d,e);
  24.         return 0;
  25. }
复制代码


3.cin和cout



  • cin是C++中提供的标准输入流对象
  • cout是C++中提供的标准输出流对象
  • cin和cout的输入输出非常方便,不需手动控制格式,可以或许自动辨认变量范例
3.1根本用法 

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.         int a;
  6.         char c;
  7.         float f;
  8.         cin >> a; // 读取⼀个整数
  9.         cin >> c; // 读取⼀个字符
  10.         cin >> f; // 读取取⼀个浮点数
  11.         cout << "打印结果:"<<endl;
  12.         cout << a << endl;
  13.         cout << c << endl;
  14.         cout << f << endl;
  15.         return 0;
  16. }
复制代码

训练:

训练1:P5705 【深基2.例7】数字反转 - 洛谷


  1. #include"iostream"
  2. using namespace std;
  3. int main()
  4. {
  5.         char a,b,c,d,e;
  6.         cin >> a >> b >> c >> d >> e;
  7.         cout << e << d << c << b << a << endl;
  8.         return 0;
  9. }
复制代码

训练2:P5708 【深基2.习2】三角形面积 - 洛谷


  1. #include"cstdio"
  2. #include"cmath"
  3. #include"iostream"
  4. using namespace std;
  5. int main()
  6. {
  7.         double a,b,c;
  8.         cin >> a >> b >> c;
  9.         double p=(a+b+c)/2;
  10.         printf("%.1f",sqrt(p*(p-a)*(p-b)*(p-c)));
  11.         return 0;
  12. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

美丽的神话

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表