本周做了一个yixin的模拟笔试题。由于不能把题目泄出,就简单的描述一下题目。
题目简述
输入几个单词,判断这些单词是否在下列所述的列表中。该列表从第二个单词开始的首字母与前一个单词的尾字母相同。第一个单词的首字母没有限制。若符合条件,返回1,否则,返回-1。
输入案例
4 [hello, how, are, you]
返回-1。
4 [hello, ohai, iostream, measure]
返回1。
思路
我们把输入的字符串先统一放到一个字符串里。再定义一个二维数组,把每个单词分开,以便后面的判断。
推荐使用fgets取代gets。注意使用前用fflush(stdin)来清除stdin的缓存数据。
注意字符串的输入形式,有[,逗号和空格,最后还有一个],判断好这些字符,才能准确的把一整个单词放入二维数组中。
代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 200
#define MAX_BUF 1000
int ArrNum(int num, char str[][MAX_LEN])
{
int i, j;
//printf("%d\n", num);
for(i = 0; i < num - 1; i++)
{
j = strlen(str[i]) - 1;
//printf("%d", j);
//printf("%c %c", str[i][j], str[i + 1][0]);
if(str[i][j] != str[i + 1][0])
{
//printf("%c %c", str[i][j], str[i + 1][0]);
return -1;
}
}
return 1;
}
int main()
{
char buf[MAX_BUF];
char words[MAX_LEN][MAX_LEN]; // = {"asd","asdas", "SAdas", "asddddd"};
int n = 4; //, frist, second;
int i = 1, j = 0, z = 0;
scanf("%d", &n);
fflush(stdin);
fgets(buf, MAX_BUF, stdin);
while(buf[i])
{
if(',' == buf[i] && ' ' == buf[i + 1])
{
i += 2;
j++;
z = 0;
}
else if(']' == buf[i])
{
break;
}
words[j][z] = buf[i];
z++;
i++;
}
printf("%d", ArrNum(n, words));
return 0;
}