大佬请求看一下,有什么问题

P1055 [NOIP2008 普及组] ISBN 号码

CoderCatt @ 2021-11-13 16:46:33

#include<stdio.h>
int main()
{
    char a[11],ch;
    int i,t=0;
    scanf("%c-%c%c%c-%c%c%c%c%c-%c", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8], &a[9]);
    for (i = 1; i < 10; i++) {
        t = t + (a[i-1]-'0') * i;
    }
    if (t%11 < 10)
        ch = t%11;
    else
        ch = 'X';
    if ("ch==a[9]")
        printf("Right");
    else
        printf("%c-%c%c%c-%c%c%c%c%c-%c", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], ch);    
}

by Xeqwq @ 2021-11-13 17:08:47

有好几个bug: 1.isbn一共有10位,你在17行输出有问题 只输出了9个
2.你11行的转化要转回char
3.你14行的判断不能带引号 否则是一个字符串 只要它存储的不是空的就会返回true


by Xeqwq @ 2021-11-13 17:09:14

附赠ac代码:

#include<stdio.h>
using namespace std;
int main()
{
    char a[11],ch;
    int i,t=0;
    scanf("%c-%c%c%c-%c%c%c%c%c-%c", &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8], &a[9]);
    for (i = 1; i < 10; i++) {
        t = t + (a[i-1]-'0') * i;
    }
    if (t%11 < 10)
        ch = char(t%11+'0');
    else
        ch = 'X';
    if (ch==a[9])
        printf("Right");
    else
        printf("%c-%c%c%c-%c%c%c%c%c-%c", a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], ch);    
}

by Xeqwq @ 2021-11-13 17:13:15

以后写求助帖请注释自己的代码的意思
你可以这样写:

#include <stdio.h>
int main()
{
  int a,b;//定义两个变量
  scanf("%d%d",&a,&b);//输入
  printf("%d%d",a+b);//输出
}

这个注释的内容编译器不会识别在代码中 可以让自己或别人明白它的意思 代码以后会很复杂


by Xeqwq @ 2021-11-13 17:14:45

@CoderCatt


by CoderCatt @ 2021-11-13 17:34:32

@整活队长xeq 明白明白


|