int main()
{
int K;
scanf("%d",&K);
while(K--)
{
int y,a,b,c;
float x;
scanf("%d %d %d",&a,&b,&c);
if(c==1){
if(a==b!=0){
printf("0\n");
goto end;
}
if(a==b==0){
printf("1\n");
goto end;
}
if(a!=b){
printf("None\n");
goto end;
}
}else if(c==0){
if(a==0&&b!=0){
printf("0\n");
goto end;
}else{
printf("None\n");
goto end;
}
}
else{
x=(b*c-a)/(1.0-c);
y=(int)x;
if(x<0||x-y>0){
printf("None\n");
goto end;
}
printf("%d\n",y);
}
end:;
}
return 0;
}
修改如下,供参考:
#include <stdio.h>
int main()
{
int K;
scanf("%d", &K);
while (K--)
{
int y, a, b, c;
float x;
scanf("%d %d %d", &a, &b, &c);
if (c == 1) {
if (a != 0 && b != 0 && a == b) {
printf("0\n");
//goto end;
}
if (a == 0 && b == 0) {
printf("1\n");
//goto end;
}
if (a != b) {
printf("None\n");
//goto end;
}
}
else if (c == 0) {
if (a == 0 && b != 0) {
printf("0\n");
//goto end;
}
else {
printf("None\n");
//goto end;
}
}
else {
x = (b * c - a) / (1.0 - c);
y = (int)x;
if (x < 0 || x - y>0) {
printf("None\n");
//goto end;
}else
printf("%d\n", y);
}
//end:;
}
return 0;
}
if(a==b==0)
这里不对,不可以3个变量作比较,只能2个比较
=-=-=-=-=
c语言里的比较本质上是一种运算,听名字也知道:比较运算符,运算就会有运算结果
a==b这个运算中,如果相等,结果是1,如果不等,结果是0
那么a==b==0这个式子,会先计算a==b,再把结果与0作比较,最终得出结果
如果你需要的是a与b都是0,那么需要这样写:a==0 && b==0
a==b!=0这么写是不对的
应该是a==b && a!=0 && b!=0
下面的一样,也需要修改