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

devtools/2025/3/6 21:09:50/

1.getchar和putchar

1.1getchar()

函数原型:

1  int getchar(void);

 getchar()函数返回用户从键盘输入的字符,使用时不带有任何参数。

程序运行到这个命令就会暂停,等待用户从键盘输入,等同于使用cin或scanf()方法读取一个字符。

getchar()函数原型定义在头文件<cstdio>。

#include"cstdio"
#include"iostream"
using namespace std;int main()
{int ch;ch=getchar();cout << ch << endl;cout << (char)ch << endl;return 0;
}

因为getchar()返回的是字符类型,所以不会忽略起首的空白字符,总是返回当前读取的第一个字符。

如果读取失败,返回常量EOF,由于EOF通常是-1,所以返回值的类型要设为int,而不是char。

我们可以直接按Ctrl+z来实现读取失败。

1.2putchar()

函数原型:

1  int putchar(int character);

putchar()函数将它的参数字符输出到屏幕,它的原型定义在头文件<cstdio>。

#include"cstdio"int main()
{int ch=0;ch=getchar();putchar(ch);return 0;
}

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

2.scanf和printf

2.1printf

printf()函数原型:

1  int printf(const char* format,……);

2.1.1基本用法

printf()的作用是将参数文本输出到屏幕上。

#include <cstdio>int main() 
{printf("Hello World");return 0;
}

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

2.1.2占位符

printf()可以在输出文本中指定占位符。

#include <cstdio>int main()
{printf("There are %d apples\n", 3);return 0;
}

在上面我们能够看出%d就是占位符,表示这个位置要用其他值来替换。

同时在使用中,我们也可以使用多个占位符,使用顺序也是和占位符的顺序是一致的。

常见的占位符:

占位符介绍
%d十进制整数
%lld十进制long long int类型
%f小数(包含float和double)
%Lflong double类型浮点数
%c字符
%s字符串

2.1.3格式化输出

2.1.3.1限定宽度

printf()允许限定占位符的最小宽度。

#include"cstdio"int main()
{printf("%5d",123);return 0;
}

上面示例中,%5d表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。

输出端值默认是右对齐,即输出内容前面会有空格;如果希望改成左对齐,在输出内容后面添加空格,我们可以在%后面插入一个-号。

2.1.3.2限定小数位数

输出小数时,有时希望限定小数位数。

#include"cstdio"int main(){printf("%.2f",12.345);return 0;
}

当我们希望小数点后面只保留两位,占位符可以写成%.2f。

最小宽度和小数位数这两个限定值,都可以用*代替,通过printf()的参数传入。

#include"cstdio"int main(){printf("%*.*f",6,2,12.345);return 0;
}

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

2.2scanf

scanf()函数原型:

1  int scanf( const char* format,……);

2.2.1基本用法

scanf()函数用于读取用户的键盘输入。

程序运行到scanf()这个语句时,会停下来,等待用户从键盘输入。

#include"cstdio"int main()
{int i=0;scanf("%d",&i);printf("%d\n",i);return 0;
}

注:

  1. scanf函数的占位符后面一般不会加\n,\n是换行,一般在输出的时候才使用。 
  2. scanf函数中存储数据的变量前面必须加上&运算符,因为scanf()需要的是地址,必须将变量的地址取出来传给scanf函数。
  3. scanf函数中指定的格式和给程序输入的数据格式要严格的匹配,否则可能不能得到想要的值。
  4. scanf()处理数值占位符时,会自动过滤空白字符,包括空格、制表符、换行符等。

2.2.2scanf的返回值

scanf()的返回是一个整数,表示成功读取的变量个数。

如果没有读取任何项,或者匹配失败,则返回0.如果在成功读取任何数据之前,发生了读取错误或者读取到文件结尾,则返回常量EOF(-1)。

#include"cstdio"int main()
{int a=0,b=0;float f=0;int r=scanf("%d %d %f",&a,&b,&f);printf("a=%d,b=%d,f=%f\n",a,b,f);printf("%d\n",r);return 0;
}

如果输入两个数后,按ctrl+z,提前结束输入。

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

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

2.3练习

练习1:浮点除法

#include"cstdio"
#include"iostream"
using namespace std;int main()
{int a=0;int b=0;cin >> a >> b;printf("%.3f",a*1.0/b);return 0;
}

 练习2:B2012 甲流疫情死亡率 - 洛谷

#include"cstdio"int main()
{int a=0,b=0;scanf("%d %d",&a,&b);printf("%.3f%%\n",b*100.0/a);return 0;
}

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

#include"cstdio"int main()
{double F=0;scanf("%lf",&F);double C=5*(F-32)/9.0;printf("%.5lf",C);return 0;
}

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

#include"cstdio"int main()
{float r1=0,r2=0;scanf("%f %f",&r1,&r2);printf("%.2f",r1*r2*1.0/(r1+r2));return 0;
}

练习5:B2014 与圆相关的计算 - 洛谷 

#include"cstdio"
#include"iostream"
using namespace std;double p=3.14159;
double r;int main()
{cin >> r ;printf("%.4lf %.4lf %.4lf",r*2,r*2*p,r*r*p);return 0;
}

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

#include"cstdio"int main()
{int a=0,b=0,c=0;scanf("%d %d %d",&a,&b,&c);printf("%8d %8d %8d",a,b,c);return 0;
}

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

#include"iostream"
#include"cstdio"
using namespace std;int a,b,c,d,e;int main()
{cin >> a >> b >> c >> d >> e;a/=3;e+=a;b+=a;b/=3;a+=b;c+=b;c/=3;b+=c;d+=c;d/=3;c+=d;e+=d;e/=3;d+=e;a+=e;printf("%5d%5d%5d%5d%5d",a,b,c,d,e);return 0;
}

3.cin和cout

  • cin是C++中提供的标准输入流对象
  • cout是C++中提供的标准输出流对象
  • cin和cout的输入输出非常方便,不需手动控制格式,能够自动识别变量类型

3.1基本用法 

#include <iostream>
using namespace std;int main()
{int a;char c;float f;cin >> a; // 读取⼀个整数cin >> c; // 读取⼀个字符cin >> f; // 读取取⼀个浮点数cout << "打印结果:"<<endl;cout << a << endl;cout << c << endl;cout << f << endl;return 0;
}

练习:

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

#include"iostream"
using namespace std;int main()
{char a,b,c,d,e;cin >> a >> b >> c >> d >> e;cout << e << d << c << b << a << endl;return 0;
}

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

#include"cstdio"
#include"cmath"
#include"iostream"
using namespace std;int main()
{double a,b,c;cin >> a >> b >> c;double p=(a+b+c)/2;printf("%.1f",sqrt(p*(p-a)*(p-b)*(p-c)));return 0;
}


http://www.ppmy.cn/devtools/165071.html

相关文章

PHP 包含(Include)机制详解

PHP 包含(Include)机制详解 在PHP编程中,include和require是两个非常基础的函数,用于在脚本中包含其他文件。它们在模块化编程中发挥着至关重要的作用,使得代码更易于维护和扩展。本文将详细介绍PHP的包含机制,包括其工作原理、使用方法以及最佳实践。 一、PHP 包含机制…

JAVA实战开源项目:安康旅游网站(Vue+SpringBoot) 附源码

本文项目编号 T 098 &#xff0c;文末自助获取源码 \color{red}{T098&#xff0c;文末自助获取源码} T098&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

Python项目-基于深度学习的校园人脸识别考勤系统

引言 随着人工智能技术的快速发展&#xff0c;深度学习在计算机视觉领域的应用日益广泛。人脸识别作为其中的一个重要分支&#xff0c;已经在安防、金融、教育等多个领域展现出巨大的应用价值。本文将详细介绍如何使用Python和深度学习技术构建一个校园人脸识别考勤系统&#…

获取Kernel32基地址

暴力搜索 32位在4G内存搜索有一定可行性&#xff0c;但是处理起来其实还是比较麻烦的&#xff0c;因为内存不可读会触发异常&#xff0c;需要对这些异常问题进行处理。 优化思路:缩小范围、增大搜索步长 (1)不优化&#xff0c;原始内存特征匹配&#xff0c;容易出错&#xf…

数据开发方向经过15年的发展再一次走到了十字路口

这是一个简短的思考记录文章&#xff0c;在和朋友头脑风暴后得出来的结论。 2025年随着DeepSeek的开源&#xff0c;AI/大模型从原来高不可攀一夜之间走进普通开发者的视线。 这个浪潮发展之猛烈&#xff0c;行业内大多数人员还没有真正意识到他带来的改变。但是从去年下半年到今…

面试常问的压力测试问题

性能测试作为软件开发中的关键环节&#xff0c;确保系统在高负载下仍能高效运行。压力测试作为性能测试的重要类型&#xff0c;旨在通过施加超出正常负载的压力&#xff0c;观察系统在极端条件下的表现。面试中&#xff0c;相关问题常被问及&#xff0c;包括定义、重要性、与负…

数据结构秘籍(四) 堆 (详细包含用途、分类、存储、操作等)

1 引言 什么是堆&#xff1f; 堆是一种满足以下条件的树&#xff1a;&#xff08;树这一篇可以参考我的文章数据结构秘籍&#xff08;三&#xff09;树 &#xff08;含二叉树的分类、存储和定义&#xff09;-CSDN博客&#xff09; 堆中的每一个结点值都大于等于&#xff08…

谈谈常用的分布式 ID 设计方案

首先&#xff0c;分布式全局 ID 的解决方案有很多&#xff0c;比如&#xff1a; 使用 Mysql 的全局表使用 Zookeeper 的有序节点使用 MongoDB 的 objectidredis 的自增 idUUID 等等…… 这些方案只是解决基础的 id 唯一性问题&#xff0c;在实际生产环境中&#xff0c;需要构…