新手对c还有很多不理解,求帮忙解决下问题

问题描述:
编写一个程序,首先提示用户“Hi, I love you!”,然后输入“Do you love me (Y/N)?”。如果用户输入“y”或“Y”,打印“So great! KISS!”,然后退出。如果用户输入“n”或“N”,则继续询问“Do you love me (Y/N)?”。如果用户输入其它,则提示“Sorry, I don't understand.”,然后继续询问“Do you love me (Y/N)?”。

 printf("Hi, I love you!\n");
while (true)
{
    printf("Do you love me (Y/N)?\n");
        char c = getchar();
        if (c == 'Y' || c == 'y') break;
}
printf("So great! KISS!\n");

核心部分:
int flag=0;
char c;
printf("Hi, I love you!\n");
while(flag==0){
printf("Do you love me (Y/N)?\n");
scanf(%c,c);
if(c=='Y'){
printf(“So great! KISS!\n”);
flag=1;
}
if(c!='N||c!="Y"'){
printf(“Sorry, I don't understand.\n”);
}
}

 printf("Hi, I love you!\n");
while (true)
{
    printf("Do you love me (Y/N)?\n");
        char c = getchar();
        if (c == 'Y' || c == 'y') break;
                if (c != 'N' || c != 'n')
                printf("Sorry, I don't understand.\n");
}
printf("So great! KISS!\n");

谢谢大家,但是我要的结果是这样的图片说明

char c = getchar();
->
char c1[100];
scanf("%s", c1);
char c = c1[0];

 #include "stdafx.h"

#include <stdio.h>

int main()
{
    bool bLoop = true;
    do
    {
        printf("Do you love me (Y/N)?\n");
        char ch = getchar();
        rewind(stdin);
        switch(ch)
        {
        case 'y':
        case 'Y':
            printf("So great! KISS!\n");
            bLoop = false;
            break;
        case 'n':
        case 'N':
            break;

        default:
            printf("Sorry, I don't understand.\n");
            break;
        }
    }while(bLoop);
    return 0;
}

#include
#include

int main(){
short flag = 1;
printf("Hi, I love you!\n");
do{
printf("Do you love me (Y/N)?");
char s[100], *p;
memset(s, 0x0, sizeof(s));
p = s;
scanf("%s", p);
if(1<strlen(p)){
printf("Sorry, I don't understand.\n");
continue;
}
switch(*p){
case 'y':
case 'Y':
printf("So great! KISS!\n");
flag = 0;
break;
case 'n':
case 'N':
break;
default:
printf("Sorry, I don't understand.\n");
break;
}
}while(flag);
return 0;
}

#include
#include

char str[100];
memset(str, 0, 100);
do{
printf("Do you love me(Y/N)?");
scanf("%s", str);
if(strcmp(str, "N") || strcmp(str, "n"))
{
;
}
else if(strcmp(str, "Y") && strcmp(str, "y"))
{
printf(" I don't understand.\n");
}
else
{
break;
}
memset(str, 0, 100);
}while(1);

printf("\nSo great! Kiss!");


刚贴的代码 循环里的第一个判断有误 重新发下



#include
#include

char str[100];
memset(str, 0, 100);
do{
    printf("Do you love me(Y/N)?");
    scanf("%s", str);
    if(!strcmp(str, "N") || !strcmp(str, "n"))
    {
        ;
    }
    else if(strcmp(str, "Y") && strcmp(str, "y"))
    {
        printf(" I don't understand.\n");
    }
    else
    {
        break;
    }
    memset(str, 0, 100);
}while(1);

printf("\nSo great! Kiss!");