C++ 知识点选讲 2——程序基本输入输出语句(cin、scanf 等)

1 cin cout

cin 等语句在竞赛中非常重要,下至红、上至黑,大部分的题目都需要它和其他输入输出语句。

C++ 中有很多数据类型,大部分都可以实现用 cin 等语句输入。例外是有的,如 __int128

实现不同类型变量的输入:

int a;
cin>>a;
char b;
cin>>b;
long long c;
cin>>c;
string d;//string 最好引入 <cstring>、<string> 等库,当然我推荐用万能头
cin>>d;
bool e;
cin>>e;
...

用上 cin 后,变量就可以从终端被输入了!

cout 同理,用于输出变量或其他。

实现不同类型变量的输出:

int a;
cout<<a;
char b;
cout<<b;
long long c;
cout<<c;
string d;//string 最好引入 <cstring>、<string> 等库,当然我推荐用万能头
cout<<d;
bool e;
cout<<e;
...

输入输出可以不止一个变量,例子:

你运行下面的伪代码后,输入 \(3,5\)

int a,b;
cin>>a>>b;//输入完后,a=3,b=5  
cout<<a<<" "<<b;//输出完,你会看到:
/*3 5*/
cout<<a<<endl<<b;//endl 用于换行,你会看到:
/*
3
5
*/
//上面的 "/*" 和 "*/" 用于多行注释,实际操作时控制台不会显示,因为我只是为了显示方便。

cout 还能输出字符串:

cout<<"Hello, world!";//以上代码会输出:Hello, world!  
cout<<"Hello, world!\n";//在没开 IOS 的情况下,\n 可用于输出换行

在一些题目中,会要求选手输入一个带空格的字符串,此时我们需要用到如下语句:

getline(cin,s);

其中 s 为你需要输入的字符串。

有时选手在实际做题中需要消除输入中的换行,建议使用 cin.ignore();

输出 a 并保留 \(n\) 位小数怎么写呢?答案是:cout<<fixed<<setprecision(n)<<a;。下文讲的 printf 会更加简洁。

输出一个 int 变量 a,保留 \(4\) 个场宽怎么写?答案是:cout<<setw(4)<<a;。下文的 printf 会更加简洁。

IOS 加速

加上下面的语句,cincout 会更快:

ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);

当然还会有其他高级应用,暂且不提。

2 scanf printf

我们除了接触的 cincout 外,还有许多方式可以输入和输出。

scanf 是一种输入语句,printf 是一种输出语句。两者皆为 C 风格。速度比不开 IOS 的 cin 快。如果开了 IOS 就不要用了 scanf,会出问题。

不同的类型,scanfprintf 的用法不一样。具体可以参考下表(以输入一个变量 a 为例):

类型 输入方法
int scanf("%d",&a);
long long scanf("%lld",&a);
double scanf("%lf",&a);
char scanf("%c",&a);
string 不可以,请使用 cingetchar
unsigned long long scanf("%ull",&a);

输入字符串建议用 char 数组。一个 char 数组 s 的输入方式:scanf("%s",&s);

如果想做到从下标为 \(1\) 的地方作为 char 数组 s 开头,可以用:scanf("%s",s+1);

PS:上面的 & 字符是取地址符。printf 不需要。

printf 的输出不需要取地址符,方式与 scanf 大致相同。

例(输出一个 int 变量 n):

printf("%d",n);

输出 a 并保留 \(n\) 位小数怎么写呢?答案是:printf("%.nlf",a);,比上文的 cout 好写。

输出一个 int 变量 a,保留 \(4\) 个场宽怎么写?答案是:printf("%4d",a);,比上文的 cout 好写。

scanfprintf 同样可以对变量进行输入(输出)等操作:

scanf("%d %d",&a,&b);
scanf("%d:%d",&a,&b);//主要用于输入的两个变量间有 “:” 之类的字符隔开。如输入 22:44,该语句执行完后 a=22,b=44
printf("%d %d\n",a,b);
printf("Hello, world!");
...

3 其他输入输出方法

  1. getchar():输入一个字符。比开 IOS 的 cin 快。一般用于快读。

  2. putchar():输出一个字符。比开 IOS 的 cout 快。一般用于快输。

  3. puts():输出一个字符串并自动换行。

  4. gets():不要使用,有安全隐患。

有问题可以评论区提问。

posted on 2026-06-29 22:50  lz5332t  阅读(1)  评论(0)    收藏  举报