关于#输出格式#的问题,如何解决?

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 .


为什么我的结果总是缺少第一个字母

img

这是我的代码

#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};

希望能帮到你,加油~~~

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^