#include<stdio.h> //以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认
识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋
int main() //输入格式:
输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过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 ...”。
{
char c;
int i=0;
while(1)
{
scanf("%c",&c);
i++;
if(c=='.')
break;
}
if(i>=12) printf("A and B are inviting you to dinner...");
else if(i>=2&&i<12) printf("A is the only one for you...");
else printf("Momo... No one is for you ...");
return 0;
}
其一,你可以试试只输入一个点,应该会出来no one。
其二,输入的while循环中的i有误--原本应该是表示输入的人名行数的,结果却变成了输入的字符(连同最后的那个点在内)的数量
代码没语法问题,只是你的句号算上了i加1,所以除非只输入一个句号,不然不能出那句话。建议把i++挪到while最后一句,那样你可以输入一个字符加一个句号还报no one
#include <stdio.h>
#include <string.h>
int main()
{
char a[10] = {}, b[10] = {}, buffer[10];
int i = 0;
while (scanf("%s", buffer) == 1)
{
if (buffer[0] == '.')
break;
i++;
if (i == 2)
strcpy(a, buffer);
else if (i == 14)
strcpy(b, buffer);
}
if (i >= 14)
printf("%s and %s are inviting you to dinner...\n", a, b);
else if (i >= 2)
printf("%s is the only one for you...\n", a);
else
printf("Momo... No one is for you...\n");
return 0;
}