早教吧作业答案频道 -->其他-->
C语言题,急!可以适量的用点C++问题描述:每本书籍都有一个ISBN号码,ISBN号为一个由10个数码组成的的字符串,如果第一个数字乘以10加上第二个数字乘以9…的和,是11的倍数,则该ISBN号
题目详情
C语言题,急!可以适量的用点C++
问题描述:
每本书籍都有一个ISBN号码,ISBN号为一个由10个数码组成的的字符串,如果第一个数字乘以10加上第二个数字乘以9…的和,是11的倍数,则该ISBN号码为合理的号码,否则不合理。如字符串“0201103311”就是一个合理的ISBN号码,因为
10*0 + 9*2 + 8*0 + 7*1 + 6*1 + 5*0 + 4*3 + 3*3 + 2*1 + 1*1 = 55是11的倍数。而在实际应用中,可以在最后一个字符处使用字符X来表示十进制数10。如“156881111X”也是一个合理的ISBN号码。下面输入一些ISBN号码,其中有一个字符没有给出,请你计算出这个数字。
输入格式:
第一行一个正整数t(≤100),表示数据组数,接下来t行,每行一个长度为10的字符串,仅含有0~1、X和?,其中“?”表示对应位置上的数字没有给出。
输出格式:
对应每组数据,计算出对应的“?”的值。如果没有任何一个符号使之合理,则输出-1。
样例输入
2
15688?111X
156881111?
样例输出
1
X
问题描述:
每本书籍都有一个ISBN号码,ISBN号为一个由10个数码组成的的字符串,如果第一个数字乘以10加上第二个数字乘以9…的和,是11的倍数,则该ISBN号码为合理的号码,否则不合理。如字符串“0201103311”就是一个合理的ISBN号码,因为
10*0 + 9*2 + 8*0 + 7*1 + 6*1 + 5*0 + 4*3 + 3*3 + 2*1 + 1*1 = 55是11的倍数。而在实际应用中,可以在最后一个字符处使用字符X来表示十进制数10。如“156881111X”也是一个合理的ISBN号码。下面输入一些ISBN号码,其中有一个字符没有给出,请你计算出这个数字。
输入格式:
第一行一个正整数t(≤100),表示数据组数,接下来t行,每行一个长度为10的字符串,仅含有0~1、X和?,其中“?”表示对应位置上的数字没有给出。
输出格式:
对应每组数据,计算出对应的“?”的值。如果没有任何一个符号使之合理,则输出-1。
样例输入
2
15688?111X
156881111?
样例输出
1
X
▼优质解答
答案和解析
#include
int main()
{
\x09char a[10] = "15688?111X";
\x09int temp = 0;
\x09int index;
\x09int i;
\x09for(i=0;i<10;i++)
\x09{
\x09\x09if(a[i]=='X')
\x09\x09\x09a[i]=':';
\x09\x09else if(a[i]=='?')
\x09\x09{
\x09\x09\x09a[i]='0';
\x09\x09\x09index=i;
\x09\x09}
\x09\x09temp = temp + (a[i]-48)*(10-i);
\x09printf("temp = %d",temp);
\x09}
\x09printf("index = %d",index);
\x09for(i=0;i<=10;i++)
\x09{
\x09\x09temp = temp + i*(10-index);
\x09\x09if(temp%11==0)
\x09\x09{
\x09\x09\x09if(i==10)
\x09\x09\x09\x09printf("X");
\x09\x09\x09
\x09\x09\x09printf("%d",i);
\x09\x09\x09break;
\x09\x09}
\x09\x09else
\x09\x09\x09temp = temp - i*(10-temp);
\x09\x09
\x09\x09printf("temp = %d",temp);\x09
\x09}
\x09return 0;
}
char a里面是字符,所以要转化为ascii~~~
int main()
{
\x09char a[10] = "15688?111X";
\x09int temp = 0;
\x09int index;
\x09int i;
\x09for(i=0;i<10;i++)
\x09{
\x09\x09if(a[i]=='X')
\x09\x09\x09a[i]=':';
\x09\x09else if(a[i]=='?')
\x09\x09{
\x09\x09\x09a[i]='0';
\x09\x09\x09index=i;
\x09\x09}
\x09\x09temp = temp + (a[i]-48)*(10-i);
\x09printf("temp = %d",temp);
\x09}
\x09printf("index = %d",index);
\x09for(i=0;i<=10;i++)
\x09{
\x09\x09temp = temp + i*(10-index);
\x09\x09if(temp%11==0)
\x09\x09{
\x09\x09\x09if(i==10)
\x09\x09\x09\x09printf("X");
\x09\x09\x09
\x09\x09\x09printf("%d",i);
\x09\x09\x09break;
\x09\x09}
\x09\x09else
\x09\x09\x09temp = temp - i*(10-temp);
\x09\x09
\x09\x09printf("temp = %d",temp);\x09
\x09}
\x09return 0;
}
char a里面是字符,所以要转化为ascii~~~
看了C语言题,急!可以适量的用点C...的网友还看了以下:
设函数fn(x)=xn+bx+c(n∈N+,b,c∈R)(1)设n≥2,b=1,c=-1,证明:设函 2020-03-30 …
18.下面判断是否正确,说明理由.(1)如果A^2=B^2,那么A=B(2)如果A+C=B+C,那么 2020-03-30 …
指数运算[a^b=N知二求一](a,b,N)分别是什么运算 2020-05-20 …
A、B、C这3个小于10而相邻自然数,A*B*C=1+2+3……+24+25,其中,漏加N.已知A 2020-06-02 …
a:b=二分之一:三分之一,c:b=四分之三:三分之一,求a:b:c 2020-06-06 …
有一个运算程序a⊕b=n,可以使:(a+c)⊕b=n+c,a⊕(b+c)=n-2c如果|⊕|=2求 2020-07-19 …
什么是二项式的通式?在二项式定理(a+b)^n=C(n,0)a^n+C(n,1)a^(n-1)b+ 2020-07-31 …
角ABC对应的边为a.b.c且a×cosC+二分之一c=b,那A角大小多少 2020-08-01 …
公式难题,abcdefgn分别为不等的数值.a+b+n=?a+c+n=?a+d+n=?……………… 2020-08-04 …
公式难题...abcdefgn分别为不等的数值.a+b+n=?a+c+n=?a+d+n=?…………… 2020-11-28 …