您的位置:首页 > 其它

首尾字母是否相同

2016-04-01 12:10 274 查看
  本周做了一个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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: