算法竞赛--基本输入输出(一)

1.浅析scanf()和gets()和getchar()

1.1 scanf()中%c格式可以读入单个字符包含空格和换行符

图片

1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char a,b,c;
scanf("%c%c%c",&a,&b,&c);
printf("%c%c%c",a,b,c);
return 0;
}

1.2 scanf()中%s格式可以读入一行字符串,但读入时以空格和换行作为结束标志

图

1
2
3
4
5
6
7
8
#include<stdio.h>
int main()
{
char a[10];
scanf("%s",&a);
printf("%s",a);
return 0;
}

2 getchar()函数

一个字符一个字符的读入

图

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
int main()
{
char a,b,c;
a=getchar();
getchar();
b=getchar();
c=getchar();
putchar(a);
putchar(b);
putchar(c);
return 0;
}

3 gets()函数

就算输入的字符串中有空格也可以直接输入,直至回车结束。

图

1
2
3
4
5
6
7
8
#include <stdio.h>
int main()
{
char str[10];
gets(str);
printf("%s",str);
return 0;
}

4 getline()函数

想读入一整行,则使用getline函数。

图

1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;
int main()
{
char str[100];
cin.getline(str,100);
cout<<str<<endl;
return 0;
}

2.例题:统计字符串

描述: 1.输入一行字符,分别统计出其中英文字母,数字,空格和其他字符的个数。

输入:

一行字符

输出:

统计值

样例输入:

akls&jflj123 #sadf918u32*4 asdf91(u)

样例输出:

18 11 2 5

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main()
{
char c;
int letters=0,numbers=0,spaces=0,others=0;
while((c=getchar())!='\n') //逐个读取字符,包含空格,直至读取到换行符,并赋值给字符c,再进行判断。
{
if(c==' ')
spaces++;
else if(c>='0'&&c<='9')
numbers++;
else if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
letters++;
else
others++;
}
printf("%d %d %d %d\n",letters,numbers,spaces,others);
}
小礼物走一个哟
0%