社区讨论

测试点#5#6#9报错的玄学问题

P1055[NOIP 2008 普及组] ISBN 号码参与者 3已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lo20d85r
此快照首次捕获于
2023/10/23 05:56
2 年前
此快照最后确认于
2023/11/03 06:20
2 年前
查看原帖
怪了,为什么把这个程序中
C
if (a[9]==x-'0'||a[9]==x-'X'+10) 
这句改成
C
if (a[9]==x-'0'||a[9]==10)
就会出现一些错误
C
//原程序如下:
#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这几个测试点,但很怪的是:
C
y=(a[9]==10)?'X':('0'+a[9]);
这句话原来就是这么写的但没出问题。。。

回复

2 条回复,欢迎继续交流。

正在加载回复...