L1-035 情人节
分数 15
作者 陈越
单位 浙江大学
以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。
输入格式:
输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.标志输入的结束,这个符号不算在点赞名单里。
输出格式:
根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner.”;若只有A没有B,则输出“A is the only one for you.”;若连A都没有,则输出“Momo. No one is for you .”。
输入样例1:
GaoXZh
Magi
Einst
Quark
LaoLao
FatMouse
ZhaShen
fantacy
latesum
SenSen
QuanQuan
whatever
whenever
Potaty
haeahi
输出样例1:
Magi and Potaty are inviting you to dinner.
输入样例2:
LaoLao
FatMouse
whoever
输出样例2:
FatMouse is the only one for you.
输入样例3:
LaoLao
输出样例3:
Momo. No one is for you .
为什么我的结果总是缺少第一个字母
这是我的代码
#include
int main()
{
char a[50][15]={'0'},c;
int i,j,m,n;
for(i=0;;i++)
{
for(j=0;;j++)
{
if((c=getchar())=='\n')
{
break;
}
a[i][j]=c;
}
a[i][j]='\0';
if((c=getchar())=='.')
break;
}
m=i;
if(m>=14)
{
printf("%s and %s are inviting you to dinner...",a[1],a[13]);
}
if(m>=2&&m<14)
{
printf("%s is the only one for you...",a[1]);
}
if(m<2)
{
printf("Momo... No one is for you ...");
}
return 0;
}
改这样输入,供参考:
#include <stdio.h>
#include <string.h>
int main()
{
char a[50][15] = { 0 }, c;
int i = 0, j, m, n;
while (strcmp(gets(a[i]), ".")) i++;
//for (i = 0;; i++)
//{
//for (j = 0;; j++)
//{
// if ((c = getchar()) == '\n')
// {
// break;
// }
// a[i][j] = c;
//}
//a[i][j] = '\0';
//if ((c = getchar()) == '.')
//break;
//}
m = i;
if (m >= 14)
{
printf("%s and %s are inviting you to dinner...", a[1], a[13]);
}
if (m >= 2 && m < 14)
{
printf("%s is the only one for you...", a[1]);
}
if (m < 2)
{
printf("Momo... No one is for you ...");
}
return 0;
}
数组初始化的问题,你这么写只是将第一个元素初始化为字符'0',可以按以下方式修改试试
char a[50][15] = {0};
希望能帮到你,加油~~~
不知道你这个问题是否已经解决, 如果还没有解决的话: