在C

时间:2018-11-17 07:14:32

标签: c if-statement

我的代码只需执行3x2表中的一个case路径,即:男140至160厘米:短,161至180厘米:中;身高181至199厘米;女性身高:120至140厘米:短;身高141至165厘米:中;身高166至180厘米。

例如,如果我输入153厘米的女人,则输出仅需中等。但是,如果我最后输入153厘米(中高)的女人,我的代码将输出。

到目前为止,我如何才能编辑此代码以仅对两种情况(年龄和长度)以及三种长度选择之一进行一次编码;例如,如果我输入153厘米的女人,则只需说中。

#include <stdio.h>

int main()
{

    int length;
    char gender;

    printf("enter gender: ");
    scanf("%c", &gender);

    printf("enter length: ");
    scanf("%d", &length);

    if (gender == 'M' || 'm') {

        if (length <= 140 && length <= 160 ) {

            printf ("short");
        }

        if (length <= 161 && length <= 180 ) {

            printf ("medium");

        }

        if (length <= 181 && length <= 199 ) {

            printf ("tall");
        }

        if (gender == 'W' || gender == 'w') {

            if (length <= 120 || length <=140) {

                printf("short");

                if (length <=141 || length <=165) {

                    printf ("medium");

                    if (length <=166 || length <=180) {

                        printf ("tall");}

                        else {

                            printf("error");
                        }
                    }
                }
            }
        }



    return 0;
}

3 个答案:

答案 0 :(得分:1)

对于以下几行,其长度必须为> = 161。 请为此检查类似的行。

   if (length <= 161 && length <= 180 ) {

        printf ("medium");

    }

答案 1 :(得分:1)

kadir您犯了很多错误,没问题。实践使一个男人变得完美……! 比较您的代码和我更改的代码..并发现错误。在代码中以注释的形式给出解释。

#include<stdio.h>

int main()
{

int length;
char gender;

printf("enter gender: ");
scanf("%c", &gender);

printf("enter length: ");
scanf("%d", &length);

if (gender == 'M' ||gender == 'm') { //comparison should be done in both sides of or

    if (length >= 140 && length <= 160 ) {

        printf ("short");
    }

    else if (length >= 161 && length <= 180 ) {

        printf ("medium");

    }

   else if (length >= 181 && length <= 199 ) {

        printf ("tall");
    }
}
 else if (gender == 'W' || gender == 'w') {
        if (length >= 120 && length <=140) {

            printf("short");
        }
          else  if (length >=141 && length <=165) { // & should be used.

                printf ("medium");
            }
              else  if (length >=166 && length <=180) {

                    printf ("tall");}

                    else {   /* if you are using else simply , it corresponds to the last if not all the if's in front so try using if else .*/

                        printf("error");
                    }
                }



return 0;
 }

祝你好运

答案 2 :(得分:0)

您需要在专用范围内比较长度。这是代码:

#include <stdio.h>

int main()
{

int length;
char gender;

printf("enter gender: ");
scanf("%c", &gender);

printf("enter length: ");
scanf("%d", &length);

if (gender == 'M' || gender == 'm'){
    if (length <= 160 )
        printf ("short\n");
    if (161 <= length && length <= 180)
        printf ("medium\n");
    if (181 <= length && length <= 199)
        printf ("tall\n");

}

if (gender == 'W' || gender == 'w'){
    if (length <= 140) 
        printf ("short\n");
    if (141 <= length && length <= 165)
        printf ("medium\n");
    if (166 <= length && length <= 180)
        printf ("tall\n");
        if(length>=180)
        printf("error \n");
 }
 else if(gender != 'm'|| gender!='M'|| gender!='w'||gender!='W')
 printf("error");
 return 0;

}