m0_74289836 2023-04-06 16:14 采纳率: 85.7%
浏览 26
已结题

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

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 <stdio.h>
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;
}


  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-04-06 16:52
    关注

    改这样输入,供参考:

    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么