首尾字母是否相同
2016-04-01 12:10
274 查看
本周做了一个yixin的模拟笔试题。由于不能把题目泄出,就简单的描述一下题目。
返回-1。
4 [hello, ohai, iostream, measure]
返回1。
推荐使用fgets取代gets。注意使用前用fflush(stdin)来清除stdin的缓存数据。
注意字符串的输入形式,有[,逗号和空格,最后还有一个],判断好这些字符,才能准确的把一整个单词放入二维数组中。
代码如下:
题目简述
输入几个单词,判断这些单词是否在下列所述的列表中。该列表从第二个单词开始的首字母与前一个单词的尾字母相同。第一个单词的首字母没有限制。若符合条件,返回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; }
相关文章推荐
- 提示"此证书的签发者无效",原因系统认证证书
- 解决 PC 端中网页文本一键复制的小插件
- set类
- 解决QT 编译后脱离编译器无法运行的问题
- 亲爱的程序猿们怎么找工作
- sqoop.Sqoop: Got exception running Sqoop: java.lang.IllegalArgumentException: There is no column fou
- 服务器模型---总结
- 手写代码自动实现自动布局,即Auto Layout的使用
- 使用GitHub Pages + Hexo 快速搭建个性化博客(七)-编辑博文
- 单向链表的递归反转
- vc调用dll 示例
- 严重: IOException while loading persisted sessions:java.io.EOFException
- vc读写注册表
- 利用享元模式模拟网站对象建立 C++
- java中怎么把原始目录下的文件。复制到另外一个目录中,并且文件名不改掉
- 队列的顺序存储结构及其基本运算的实现
- POJ 2942Knights of the Round Table(二分图判定+双连通分量)
- UVa 131 - The Psychic Poker Player
- 打印log 保存log
- 如何保持自己的应用和关联的第三方框架同步更新?