HDOJ 2072 单词数

考察了sscanf!
int sscanf(const char *buffer, const char *format[, argument]);
功能:The sscanf function reads data from buffer into the location given by each argument.

e.g:

1
2
3
4
5
6
7
8
9
10
11
 		char buf[100];
		char a1[10], a2[10], a3[10];
		int len;
		gets(buf);
		sscanf(arr, "%s %s %s", a1, a2, a3);
		printf("%s %s %s\n", a1, a2, a3);
		printf("-------------------------\n");
		sscanf(arr, "%s", a1);
		sscanf(arr, "%s", a2);
		sscanf(arr, "%s", a3);
		printf("%s %s %s\n", a1, a2, a3);

输入:
abc(空格)def(空格)ghi
输出:
abc(空格)def(空格)ghi
——————–
abc
abc
abc

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
 
char word[1000];
char arr[100][100];  //arr用于存储以前出现过的单词
int main()
{
	int len, pos;
	char temp[100];
	while(gets(word) && strcmp(word, "#") != 0)   
	{
		len = strlen(word);
		pos = 0;
		int cnt = 0;
		// pos加单词长度一直到>=len
		while(pos < len)
		{
			sscanf(word + pos, "%s", temp); //把一个单词存入temp,空格忽略
			int k;
			for(k = 0; k < cnt; ++k)
				if(strcmp(temp, arr[k]) == 0)   //如果和以前存入的单词相同,则不计数
					break;
			if(k == cnt)
				strcpy(arr[cnt++], temp);   //把temp存入arr,并计数器cnt加一
			pos += strlen(temp) + 1;
		}
		printf("%d\n", cnt);
	}
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

发表评论

电子邮件地址不会被公开。 必填项已用*标注