【发布时间】:2019-01-13 06:41:33
【问题描述】:
我一直在尝试解决一个问题,一切正常,只是没有打印所需的字符串
#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,并将它们与 printf 函数中已经存在的 S 一起打印。在这种方法中,S 被打印,但 A、W 或 M 没有。
【问题讨论】:
-
这不是逻辑 OR 的工作原理。您需要分开比较。
-
关于这种声明:` if(num1==(1 || 6 || 12 || 7 ))` 应该是:
if( num1 == 1 || num1 == 6 || num1 == 12 || num1 == 7 )你的编译器应该已经告诉你这个问题.编译时,始终启用警告,然后修复这些警告。 (对于gcc,至少使用:-Wall -Wextra -Wconversion -pedantic -std=gnu11)注意:其他编译器使用不同的选项来执行相同的操作 -
OT:为了便于阅读和理解:1) 一致地缩进代码。在每个(甚至省略可选的)左大括号“{”之后缩进。在每个(甚至省略可选的)右大括号“}”之前取消缩进。建议每个缩进级别为 4 个空格