TUHAOWENNS @ 2023-07-09 20:32:17
大佬救救,0分!
//c++模板(c++14GCC9)
#include<bits/stdc++.h>
using namespace std;
int main()
{
char justin,ji,jin,pp;
char cibsn[10+10];
int ibsn[9+10];
int pd,sum=0;
cin>>cibsn[1];
cin>>justin;
for(int i=3;i<=5;i++)
{
cin>>cibsn[i];
}
cin>>ji;
for(int i=7;i<=11;i++)
{
cin>>cibsn[i];
}
cin>>jin;
cin>>pp;
if(pp>='0'&&pp<='9') pd=pp-'0';
else pd=10;
for(long long i=1;i<=9;i++)
{
ibsn[i]=cibsn[i]-'0';
}
for(long long i=1;i<=9;i++)
{
sum+=ibsn[i]*i;
}
sum%=11;
if(sum==pd)cout<<"Right";
else
{
cout<<ibsn[1]<<"-";
for(long long i=2;i<=4 ;i++)
{
cout<<ibsn[i];
}
cout<<"-";
for(long long i=5;i<=10 ;i++)
{
cout<<ibsn[i];
}
cout<<"-";
cout<<sum;
}
return 0;
}
语言是C++ 谢谢
by midsummer_zyl @ 2023-07-09 20:38:08
@LAOLIU888
#include <bits/stdc++.h>
using namespace std;
int main(){
char a,b,c,d,e,f,g,h,i,j;
int x;
scanf("%c-%c%c%c-%c%c%c%c%c-%c",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j);
x=((int(a)-48)*1+(int(b)-48)*2+(int(c)-48)*3+(int(d)-48)*4+(int(e)-48)*5+(int(f)-48)*6+(int(g)-48)*7+(int(h)-48)*8+(int(i)-48)*9)%11;
if((x==10)&&(j=='X'))
{
printf("Right");
return 0;
}
if((x==10)&&(j!='X'))
{
printf("%c-%c%c%c-%c%c%c%c%c-%c",a,b,c,d,e,f,g,h,i,'X');
return 0;
}
if(x==int(j)-48)
{
printf("Right");
return 0;
}
else
{
printf("%c-%c%c%c-%c%c%c%c%c-%d",a,b,c,d,e,f,g,h,i,x);
return 0;
}
return 0;
}
by chenfeizhou @ 2023-07-09 20:41:09
输入读取错误:在代码中,你使用了一些字符数组和循环来读取输入的ISBN号码。然而,根据题目描述,ISBN号码的格式是"x-xxx-xxxxx-x",其中符号"-"是分隔符。你应该使用字符类型的变量来逐个读取并处理每个字符,而不是使用字符数组。正确的输入读取方式应该是类似这样的:cin >> justin >> ji >> jin >> pp;
。
数字转换错误:在计算识别码时,你将输入的字符转换为数字存储在ibsn
数组中。然而,你使用了long long
类型的循环索引变量,而实际上这个索引应该是从1到9,超出了数组的有效索引范围。修改循环索引的类型为int
并将索引范围改为1
到9
。
输出格式错误:在输出结果时,你使用了多余的循环和打印语句来构建输出的ISBN号码。实际上,你只需要按照指定的格式输出正确的ISBN号码即可。可以直接使用cout
语句输出正确的ISBN号码。
以下是修改后的代码:
#include <iostream>
using namespace std;
int main()
{
char justin, ji, jin, pp;
int ibsn[9];
int pd, sum = 0;
cin >> justin >> ji >> jin >> pp;
if (pp >= '0' && pp <= '9')
pd = pp - '0';
else
pd = 10;
for (int i = 1; i <= 9; i++)
{
cin >> ibsn[i];
sum += ibsn[i] * i;
}
sum %= 11;
if (sum == pd)
{
cout << "Right";
}
else
{
cout << justin << "-" << ji << jin << "-";
for (int i = 1; i <= 9; i++)
{
cout << ibsn[i];
}
cout << "-" << sum;
}
return 0;
}
by TUHAOWENNS @ 2023-07-10 13:32:24
@midsummer_zyl @chenfeizhou 谢谢你们的援助