Problem C: 藏头诗
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 2652 Solved: 1003
[Submit][Status]
Description
有个小伙暗恋同班的姑娘,但是苦于害羞腼腆不敢直抒胸臆。于是小伙打算写一首英文情诗给她。为了使这首情诗高端霸气上档次,小伙经过三天三夜的精心创作写了一首藏头的情诗。请问你能看出他想要表达的真正内容吗?
Input
输入有T组(T≤20)。
每组数据第一行先输入一个整数N(N<100),表示下面要输入N行。
接下来N行,每行输入一段英文(长度小于1000,只含大小写英文字母和空格)。
Output
每组输出一行,为藏头诗要表达的真正内容。
Sample Input
1
8
I am a handsome man
lonely and long for you attention
of all the girls I met you gave me the deepest impression
Very lucky to know you
earn money to make you happy
you are the world
oh be ma side
u are the happiest person in the world
Sample Output
IloVeyou
HINT
Append Code
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int t,n,i,j;
char s[100][1001];
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&n);
getchar();
for(j=0;j<n;j++)
{
gets(s[j]);
}
for(j=0;j<n;j++)
{
printf("%c",s[j][0]);
}
printf("\n");
}
}
(1)以下均是对二维字符数组元素的合法引用:
来自https://blog.csdn.net/weixin_43537574/article/details/94913247
printf ("%c",c[1][4]); //输出1行4列元素’g’字符
scanf ("%c",&c[2][3]); //输入一个字符到2行3列元素中
c[2][0]=‘B’; //把字符赋值给2行0列元素
printf ("%s",c[1]); //c[1]为第2行的数组名(首元素地址),输出 orange
scanf ("%s",c[2]); //输入字符串到c[2]行,从c[2]行的首地址开始存放
(2)gets和scanf的区别
1、 gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。
例如:如果输入为"hello world"时,上面程序的运行结果是"hello world"。而如果用scanf则只能输出hello
2、scanf对末尾回车符的处理:把回车符保留在缓存中。gets对末尾回车符的处理:接收回车,但把回车替换为\0.
3、gets的返回值为char型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL;scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。
4、gets函数仅用于读入字符串;scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char)类型。
(3)getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完为后,才等待用户按键.