首尾字母是否相同

来源:互联网 发布:淘宝皇冠店值多少钱 编辑:程序博客网 时间:2024/04/30 17:25

  本周做了一个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;    }
0 0