Строка не печатается - PullRequest
       21

Строка не печатается

0 голосов
/ 13 января 2019

Я пытался решить проблему, все работает нормально, за исключением того, что требуемая строка не печатается

#include<stdio.h>
int main()
{
int test,i,number,num1;

char ch;
scanf("%d",&test);
for(i=test;i>0;i--)
{
    scanf("%d",&number);

    num1=number;

    while(num1>12)
    {
        num1-=12;
    }

    if(num1>0 && num1<7)
    printf("%d ",(2*(6-num1)+1)+number);


    else
    printf("%d ",number-(2*(num1-7)+1));


    if(num1==(1 || 6 || 12 || 7 ))
    {
        puts("WS");
    }

    if(num1==(2|| 5 || 8 || 11))
    {
        puts("MS");
    }

    if(num1==(3 || 4 || 9 || 10))
    { 
       puts("AS");
    }
    }


return 0;
}

Здесь, наряду с числовым значением, необходимо напечатать соответствующие AS, WS или MS, но после печати числового значения код на этом просто заканчивается, я также пробовал другие вещи, но ни один из них не работал. Другие вещи, которые я пробовал: 1) Использовал массив символов для хранения AS, WS или MS, а затем печатал с помощью printf. 2) Использовал только символ и сохранял в нем только A, W или M и печатал их вместе с S, уже присутствующим в функции printf. В этом методе печаталось S, а A, W или M. -

Ответы [ 3 ]

0 голосов
/ 13 января 2019

Я думаю, switch case петля лучше соответствует вашим потребностям:

#include<stdio.h>
int main()
{
int test,i,number,num1;

char ch;
scanf("%d",&test);
for(i=test;i>0;i--)
{
    scanf("%d",&number);

    num1=number;

    while(num1>12) num1-=12;


    if(num1>0 && num1<7)
    printf("%d ",(2*(6-num1)+1)+number);


    else
    printf("%d ",number-(2*(num1-7)+1));


    switch(num1){
        case 1:
        case 6:
        case 12:
        case 7:
            puts("WS");
            break;
        case 2:
        case 5:
        case 8:
        case 11:
            puts("MS");
            break;
        default:
            puts("AS");
    }
}

return 0;
}
0 голосов
/ 30 января 2019
if(num1==(1 || 6 || 12 || 7 ))

когда компилятор видит это, если условие, он проверит, равно ли num1 результату (1 || 6 || 12 || 7), который равен 1, поскольку все значения истинны (1), глядя с логической точки зрения (не 0). Таким образом, программа выполнит код под всеми 3, если условия, которые печатают символы, только когда num1 равен 1.

решение выглядит следующим образом:

if(num1==1 || num1 == 6 || num1 == 12 || num1 == 7)
0 голосов
/ 13 января 2019

Я не думаю, что у вас проблемы с путами или принтом. Я думаю, что вы просто должны написать свои if или пункты как

if(num1==1 || num1==6 || num1==12 || num1==7 )

, а не.

if(num1==(1 || 6 || 12 || 7 ))

См. Например. логический или

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...