FreshLittleLemon @ 2023-08-02 16:31:26
怪了,为什么把这个程序中
if (a[9]==x-'0'||a[9]==x-'X'+10)
这句改成
if (a[9]==x-'0'||a[9]==10)
就会出现一些错误
//原程序如下:
#include <stdio.h>
int main()
{
int a[10],i;
char x,y;
scanf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%c",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&x);
for (i=0;i<9;i++) {
a[9]+=(a[i]*(i+1));
}
a[9]%=11;
if (a[9]==x-'0'||a[9]==x-'X'+10) {
printf("Right");
} else {
y=(a[9]==10)?'X':('0'+a[9]);
printf("%1d-%1d%1d%1d-%1d%1d%1d%1d%1d-%c",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],y);
}
return 0;
}
就说,上面这样写是跑得过的,但是改了之后就会报错#5#6#9这几个测试点,但很怪的是:
y=(a[9]==10)?'X':('0'+a[9]);
这句话原来就是这么写的但没出问题。。。
by juruo_zxt @ 2023-08-02 16:34:02
提醒一下代码观感()
by __yun__ @ 2023-08-02 16:45:46
因为有一些数据你算出来的是10但是它原来不是10
写成if (a[9]==x-'0'||a[9]==10&&x=='X')
也能过