我一直在尝试解决一个问题,一切正常,只是没有打印出所需的字符串
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没有打印。
答案 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)