字符串未打印

时间:2019-01-13 06:41:33

标签: c printf puts

我一直在尝试解决一个问题,一切正常,只是没有打印出所需的字符串

http://babakhani.github.io/PersianWebToolkit/doc/datepicker/options/

此处与数字值一起,需要打印相应的AS,WS或MS,但是在打印数字值之后,代码仅在此处结束,我也尝试了其他方法,但这些方法均无效。我尝试过的其他事情是: 1)使用字符数组存储AS,WS或MS,然后使用printf打印。 2)仅使用一个字符,并仅在其中存储A,W或M,并将它们与printf函数中已经存在的S一起打印。在这种方法中,S正在打印,而A,W或M没有打印。

3 个答案:

答案 0 :(得分:1)

我不认为puts或printf有问题。我认为您只需将if或子句写为

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

而不是。

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

参见例如logical or

答案 1 :(得分:0)

我认为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;
}

答案 2 :(得分:0)

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

当编译器看到此if条件时,它将检查num1是否等于(1 || 6 || 12 || 7)为1的结果,因为从布尔值的角度来看所有值都是true(1)(不是) 0)。因此,只有在num1等于1的情况下,程序才会在所有3种条件下执行代码以打印字符。

解决方案如下:

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